---
title: "Execute action on a quote version"
method: POST
path: "/assistedSales/v1/quotes/{quoteId}/executeAction"
tags: ["AppResellerQuoteVersion"]
---

# Execute action on a quote version

`POST /assistedSales/v1/quotes/{quoteId}/executeAction`

## Request

- Base URL: `https://marketplace.appdirect.com/api`
- URL: `https://marketplace.appdirect.com/api/assistedSales/v1/quotes/{quoteId}/executeAction`
- Auth: none declared
- TypeScript: <https://skmtc.dev/appdirect/apis/companies/docs/assistedSales/v1/quotes/:quoteId/executeAction/post.ts> (a function with typed inputs; its response is checked against the schema)

Execute the action passed by the parameter on the quote version

Required: Accept-Language header with Locale format. For example: en-US"

## Path parameters

- `quoteId` string, required

## Request body

- ExecuteActionRequest
  - `action` string, required: Action name to be executed to a quote version

## Response `200`

Success

- ExecuteActionResponse: The body of an execute action response
  - `quote` QuoteVersion: The body of a quote version
    - `id` string: The ID of a quote version
    - `displayId` string: The display ID of a quote version in the format: 'Q + two_digits_random_number + five_digits_counter_value'. For example: 'Q3201230'
    - `name` string: The name of the quote version
    - `createdOn` number: The creation date of the quote version in UNIX Epoch milliseconds
    - `createdBy` User
      - `id` string: User ID
      - `email` string: User email address
      - `firstName` string: User first name
      - `lastName` string: User last name
      - `company` object: User company
        - `id` string: Company ID
        - `name` string: Company name
        - `isReseller` boolean: Indicate if the company is reseller
    - `status` string: The status of the quote version
    - `ownerUser` User
      - `id` string: User ID
      - `email` string: User email address
      - `firstName` string: User first name
      - `lastName` string: User last name
      - `company` object: User company
        - `id` string: Company ID
        - `name` string: Company name
        - `isReseller` boolean: Indicate if the company is reseller
    - `customerUser` User
      - `id` string: User ID
      - `email` string: User email address
      - `firstName` string: User first name
      - `lastName` string: User last name
      - `company` object: User company
        - `id` string: Company ID
        - `name` string: Company name
        - `isReseller` boolean: Indicate if the company is reseller
    - `currency` 'USD' | 'CAD' | 'EUR' | 'JPY' | 'GBP' | 'KRW' | 'CHF' | 'SEK' | 'SGD' | 'MYR' | 'AUD' | 'MXN' | 'INR' | 'BRL' | 'DKK' | 'NZD' | 'NOK' | 'ZAR' | 'PHP' | 'CNY' | 'SAR' | 'GTQ' | 'IDR' | 'ARS' | 'COP' | 'PEN': Supported currencies for the system
    - `pricingTotals` PricingTotals: Details about the taxes, subtotals, totals and recurring totals
      - `amountDueBeforeTax` string: The amount due before taxes
      - `amountDueAfterTax` string: The amount due after taxes
      - `taxSummary` TaxDetail[]: Details of a specific type of tax applied to a charged cost
        - `description` string: Description of the tax
        - `taxAmount` string: The tax amount
      - `recurringTotals` QuoteVersionTotalRecurring[]: The recurring total charges
        - `billingCycle` BillingCycle: The billing cycle
          - `period` 'ONE_TIME' | 'DAILY' | 'MONTHLY' | 'QUARTERLY' | 'SIX_MONTHS' | 'YEARLY' | 'TWO_YEARS' | 'THREE_YEARS': The pricing period. The billing frequency for the pricing plan.
          - `dayOfMonth` integer: Day of the month on which invoicing should be triggered
        - `totalSalePrice` string: The total sale price
        - `nextInvoiceDate` string: The next invoice date in the format YYYY-MM-DD
    - `items` Item[]: List of items
      - `id` string: Item ID
      - `parentItemId` string: The parent product's ID, which is only relevant and required for add-on products
      - `product` OpportunityProduct
        - `id` string: Product ID
        - `name` string: Product name
        - `type` string: Product type
        - `logo` string: Product logo URL
      - `pricingPlan` PricingPlan
        - `id` string: Pricing plan ID
        - `name` string: Pricing plan name
      - `pricing` OpportunityPricing[]: The cost and flat rates for each quantifiable unit
        - `costId` string: The cost ID
        - `costTypeCategory` 'RECURRING' | 'ONE_TIME', required: Category of cost
        - `costType` 'RECURRING_FLAT' | 'ONE_TIME_FLAT' | 'INCLUDED' | 'SETUP_PER_UNIT' | 'RECURRING_PER_UNIT' | 'ONE_TIME_PER_UNIT' | 'SETUP_FEE' | 'CONTRACT_FEE' | 'DISCOUNT_PER_UNIT' | 'DISCOUNT_FLAT' | 'METERED_USAGE', required: Type of cost
        - `frequency` 'ONE_TIME' | 'DAILY' | 'MONTHLY' | 'QUARTERLY' | 'SIX_MONTHS' | 'YEARLY' | 'TWO_YEARS' | 'THREE_YEARS': The pricing period. The billing frequency for the pricing plan.
        - `pricingStrategy` 'FREE' | 'FLAT' | 'UNIT' | 'VOLUME' | 'TIERED' | 'UNLIMITED' | 'CUSTOM', required: Pricing strategy
        - `priceRanges` PriceRangeItem[]: Range of units for which the price is valid
          - `min` string: Minimum number of units for the price range
          - `max` string: Maximum number of units for the price range
        - `description` string: Description of each pricing line
        - `unit` string: Unit
        - `quantity` string: Quantity
        - `salePrice` string, required: Sale price
        - `wholesalePrice` string, required: Wholesale price
        - `totalSalePrice` string, required: Total sale price
    - `quoteSource` QuoteVersionSource
      - `id` string, required: The source ID
      - `type` 'OPPORTUNITY' | 'QUOTE_V2' | 'QUOTE_V1', required: The source type of the quote version
    - `availableActions` string[]: The actions available for the quote version

## Other responses

- `401`: Unauthorized
- `404`: Not found

## Changes

- **2026-11-06** `1fc240f06971`: 5 breaking, 9 info
  - added the new required request property `action`
  - the request's body type changed from no type to `object`
  - the response's body type changed from no type to `object` for status `200`
  - the response's body type changed from no type to `object` for status `401`
  - …10 more

[Operation history](https://skmtc.dev/appdirect/apis/companies/changes/assistedSales/v1/quotes/:quoteId/executeAction/post.md)

---

[API](https://skmtc.dev/appdirect/apis/companies.md) - [All operations](https://skmtc.dev/appdirect/apis/companies/llms.txt) - [OpenAPI document](https://skmtc.dev/appdirect/apis/companies/revisions/1fc240f06971?raw)
