---
schema_version: "1"
id: 00966f05937871c0992e6afaa75c731a1876a7c05f7540162a8081289800a490
title: Standard Digital Commerce REST APIs
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/industries/digital-commerce/references/generated-api-specs/std-dc-rest.md
canonical_url: https://developer.salesforce.com/docs/industries/cme/references/std-dc-rest
source_site: developer.salesforce.com
content_type: documentation
content_hash: a749911ad8aa8ea38971125671dfb229835a0f0377dfa1c2f177b632bb0847cd
products:
  - Communications, Media, Energy and Utilities APIs (Managed Package)
  - Industries Developer Documentation
---
Standard Digital Commerce REST APIs

# Standard Digital Commerce REST APIs

Standard Digital Commerce APIs are RESTful Web APIs designed to enable client applications such as consumer-facing web and mobile apps to shop for products and services. The Digital Commerce APIs are optimized for consumer shopping use cases where the user may be anonymous until well into the check-out process. These APIs are also optimized to enable caching of API responses to provide performance enhancements and scalability. Finally, these APIs are optimized for lower bandwidth connections between the client app and the server by minimizing the metadata returned in the response. The Digital Commerce APIs are provided in addition to the Vlocity Cart Based APIs. The Cart Based APIs are optimized for highly interactive cart operations done by contact center agents and sales reps using an editor such as the Vlocity Cart UI. Therefore, Cart Based APIs provide more metadata to the client browser enabling a wide array of operations. Both the Cart Based CPQ APIs and the Digital Commerce APIs continues to be supported and actively enhanced. The Digital Commerce APIs are not intended to replace the Cart based APIs.

All of the Vlocity Omnichannel REST APIs simplify client app development by hiding the details of internal CPQ processing. Client-side developers do not need to understand details of the underlying CPQ logic: no need to know the proper order to apply eligibility and availability rules and no need to learn the methods of the underlying CPQ rules engines and other CPQ services.

* * *

The basic flow of API calls with the digital commerce APIs is as follows:

1.  Get eligible offers from a catalog: GET /v3/catalogs/{catalogcode}/offers
2.  Get the details of a specific offer retrieved from the previous call: GET /v3/catalogs/{catalogcode}/offers/{offercode}
3.  Get the details of a specific offer with attribute values specified: POST /v3/catalogs/{catalogcode}/offers/{offercode}
4.  Preview details of multiple offers with attribute values specified: POST /v3/preview/catalogs/{catalogcode}/offers \[Only when Standard DC is enabled\]

The above APIs retrieve eligible offers (products and/or promotions) from the specified catalog based on the customer context provided in the request, but these APIs only return default "starts-with" and base pricing information. To request more specific pricing and feedback on the validity of the configured bundle, use the basket APIs that follow.

5.  Get a basket containing a configured offer bundle using an offer details response (3 above): POST /v3/catalogs/{catalogcode}/basket
6.  Get a modification of the previous basket adding another bundle or deleting a bundle: POST /v3/catalogs/{catalogcode}/basket/{basketkey}

The basket APIs get specific pricing for the context given by executing the Vlocity CPQ pricing services. The API returns a basket key that is a hash form of a cart containing the chosen items as configured.

7.  Create a cart in Salesforce for a specific customer using the basket response (4 or 5 above): POST /v3/carts

**Version:** Spring 2025

## Servers

*   `https://xx##.salesforce.com/services/apexrest/vlocity_cmt`
*   `http://xx##.salesforce.com/services/apexrest/vlocity_cmt`

Protocols: https, http.

## Operations

### GET Get application health, application build information, salesforce authentication,redis information (AWS only)

`GET /app-status`

Operation ID: `getAppStatus`. Tags: Audit.

Get application health, details, build information and check jks keys and display\`s jks key expire information. Gets redis information and redis pool status. Note: Endpoint only for AWS.

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `AppStatusResponse`.
    
*   **500** Invalid status value

### GET Diagnose the application and get current the information of application (AWS only)

`GET /app-diagnostic`

Operation ID: `getAppDiagnostic`. Tags: Audit.

Get application diagnose information of salesforce , redis, application context. Note: Endpoint only for AWS.

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `AppDiagnosticResponse`.
    
*   **500** Invalid status value

### GET Get Offers By Catalog, Get Featured Offers & Get Contains Products

`GET /v3/catalogs/{catalogcode}/offers`

Operation ID: `getOffersByCatalogCode`. Tags: Catalog.

Get offers from the specified Catalog (identified by Catalog Code). Offers can be a product or a promotion (and in the future a product with an applied promotion). The sortby param can sort featured offers first in the result set.

#### Parameters

*   `catalogcode` (path, string, required) Identifies the catalog of interest to a customer, prospect or partner. This defines the collection of offers to present to the users and sets a default price list and locale(lang).
*   `contains` (query, string) A Product Code (Product2.ProductCode) that is contained within one or more composite or bundle offers. Use to query for offers containing the desired component product such as an iPhone8. The sortby parameter (thus sorting) is not supported with the contains parameter in Fall '18.
*   `contextkey` (query, string) Context key (e.g. 784b264ea6dc63690369e721ffd8e112) which describes the anonymous or known customer's "context" to be used in rule processing. Use if the customer's context key is known.
*   `context` (query, array of string, collection format: csv) If isloggedin is not present in the API or isloggedin parameter value is false then, Context dimension values in the following format: dimension1:val1,dimension2:val2. Required if the context key or account id are not provided. The key value pairs specify Context Dimension values that describe the anonymous or known customer's "context" to be used in rule processing. If a value for any given context dimension defined in the Vlocity Product Catalog is not provided, the default value specified on the Context Dimension is used to determine eligibility and pricing. if isloggedin is present in the API and isloggedin parameter value is set to true then, this parameter should have, accountId, contractId(optional), rootAssetIds(optional), example format for logged-in user context param : {"accountId":"idvalue", "contractId":"idvalue", "rootAssetIds": \["idvalue"\]}
*   `forceinvalidatecache` (query, boolean) For debugging purposes, TRUE forces a cache refresh for this key. This parameter only works when a server setting enables forceinvalidatecache to be set from the API.
*   `isloggedin` (query, boolean) A flag which describes if the user is logged-in or anonymous. If isloggedin flag is true, It indicates present API is used by a logged-in user, then we expect an accountId and a contractId in the context param of the API. If the isloggedin flag is false or if this param is not specified, It indicates present API is used by an anonymous user
*   `pagesize` (query, integer) Page size of results defined as the number of offers to return. Default pagesize can be set in the server (Vlocity API Metadata > API Params).
*   `offset` (query, integer) Offset of results to return. This is used along with pagination to request a specific page of results. For example, an offset value of 40 and pagesize of 20 will request that the server return the third page of offers. In other words, it should return 20 offers starting from the 40th offer in the complete list. If not specified in request, offset defaults to 1, but this can be overridden in the server (Vlocity API Metadata > API Params).
*   `sortby` (query, string) Name of Catalog Product Relationship field to sort by. Defaults to Sequence (Catalog Product Relationship > Sequence Number).
*   `excludeoverridedefinition` (query, boolean) A flag to skip the override definitions for attributes of promotional products. When False (Default) : The promotions will show the overridden values for all attributes. When True (excludeoverridedefinition=true) : The override definitions will be skipped and result will have default attributes.
*   `offerList` (query, string) offerList takes in a list of offers, seperated by commas, as a input and the getOffers API returns eligible offers from that list.

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `OffersApiResponse`.
    
*   **400** Invalid status value

### GET Get Offer Details

`GET /v3/catalogs/{catalogcode}/offers/{offercode}`

Operation ID: `getOfferDetails`. Tags: Catalog.

Get detailed information about a specific offer (product or promotion). It returns the full hierarchy of a product or promotion as defined in the product catalog.

#### Parameters

*   `catalogcode` (path, string, required) Identifies the catalog of interest to a customer, prospect or partner. This defines the collection of offers to present to the users and sets a default price list and locale(lang).
*   `offercode` (path, string, required) Identifies an offer of interest. Can be a Product Code or a Promo Code (GET only). (PRODUCTCODE+PROMOCODE and PROMOCODE ie addPromo cannot be supported for v103.)
*   `contextkey` (query, string) Context key (e.g. 784b264ea6dc63690369e721ffd8e112) which describes the anonymous or known customer's "context" to be used in rule processing. Use if the customer's context key is known.
*   `context` (query, array of string, collection format: csv) If isloggedin is not present in the API or isloggedin parameter value is false then, Context dimension values in the following format: dimension1:val1,dimension2:val2. Required if the context key or account id are not provided. The key value pairs specify Context Dimension values that describe the anonymous or known customer's "context" to be used in rule processing. If a value for any given context dimension defined in the Vlocity Product Catalog is not provided, the default value specified on the Context Dimension is used to determine eligibility and pricing. if isloggedin is present in the API and isloggedin parameter value is set to true then, this parameter should have, accountId, contractId(optional), rootAssetIds(optional), example format for logged-in user context param : {"accountId":"idvalue", "contractId":"idvalue", "rootAssetIds": \["idvalue"\]}
*   `forceinvalidatecache` (query, boolean) For debugging purposes, TRUE forces a cache refresh for this key. This parameter only works when a server setting enables forceinvalidatecache to be set from the API.
*   `isloggedin` (query, boolean) A flag which describes if the user is logged-in or anonymous. If isloggedin flag is true, It indicates present API is used by a logged-in user, then we expect an accountId and a contractId in the context param of the API. If the isloggedin flag is false or if this param is not specified, It indicates present API is used by an anonymous user

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `OfferDetailsApiResponse`.
    
*   **400** Invalid status value

### POST Get Offer Details With Configuration

`POST /v3/catalogs/{catalogcode}/offers/{offercode}`

Operation ID: `cfgOffer`. Tags: Catalog.

Get detailed info about a specific offer. Accepts a configuration of the chosen offer (quantity and attribute values) to enable validation and pricing of that configuration. If the basketKey is passed in the input, it'll honour the rules on the basket items which can affect the offer configuration. ContextKey field is removed from the configureOffer API response.

#### Parameters

*   `catalogcode` (path, string, required) Identifies the catalog of interest to a customer, prospect or partner. This defines the collection of offers to present to the users and sets a default price list and locale(lang).
*   `offercode` (path, string, required) Identifies an offer of interest. Can be a Product Code or a Promo Code (GET only). (PRODUCTCODE+PROMOCODE and PROMOCODE ie addPromo cannot be supported for v103.)
*   `contextkey` (query, string) Context key (e.g. 784b264ea6dc63690369e721ffd8e112) which describes the anonymous or known customer's "context" to be used in rule processing. Use if the customer's context key is known.
*   `context` (query, array of string, collection format: csv) If isloggedin is not present in the API or isloggedin parameter value is false then, Context dimension values in the following format: dimension1:val1,dimension2:val2. Required if the context key or account id are not provided. The key value pairs specify Context Dimension values that describe the anonymous or known customer's "context" to be used in rule processing. If a value for any given context dimension defined in the Vlocity Product Catalog is not provided, the default value specified on the Context Dimension is used to determine eligibility and pricing. if isloggedin is present in the API and isloggedin parameter value is set to true then, this parameter should have, accountId, contractId(optional), rootAssetIds(optional), example format for logged-in user context param : {"accountId":"idvalue", "contractId":"idvalue", "rootAssetIds": \["idvalue"\]}
*   `isloggedin` (query, boolean) A flag which describes if the user is logged-in or anonymous. If isloggedin flag is true, It indicates present API is used by a logged-in user, then we expect an accountId and a contractId in the context param of the API. If the isloggedin flag is false or if this param is not specified, It indicates present API is used by an anonymous user

#### Request body (required)

Apply this Product configuration to get the resultant prices. A Promotion configuration is not currently supported. OFFERCODE ADD will be a product for v103. OFFERCODE can be configured to get details but ADD has to happen. If offer is a product this input will specify the details to be added and the promotion context it is to be added in. (productconfiguration will be in the format as #/definitions/productconfiguration)

Media type: `application/x-www-form-urlencoded`. Schema: `offerDetails`.

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `OfferDetailsApiResponse`.
    
*   **400** Invalid status value

### POST Preview Offers API

`POST /v3/preview/catalogs/{catalogCode}/offers`

Operation ID: `previewOffersAPI`. Tags: Catalog.

Configures and prices multiple offers in a single API transaction \[Only in Standard DC\]

#### Parameters

*   `catalogCode` (path, string, required) Code of the Catalog

#### Request body (required)

Media type: `application/json`. Schema: `PreviewOffersInputRequestBody`.

#### Responses

*   **200** Successful operation
    
    Media type: `application/json`. Schema: `PreviewOffersOutputResponseBody`.
    
*   **400** Bad request
    
    Media type: `application/json`. Schema: `PreviewOffersOutputResponseBody`.
    
    _Example: application/json_
    
    ```
    {
      "status": {
        "message": "Catalog not found.",
        "httpStatus": 400,
        "code": "400.PreviewOffers.002",
        "apiStatus": "ERROR"
      }
    }
    ```
    
*   **413** Request too large
    
    Media type: `application/json`. Schema: `PreviewOffersOutputResponseBody`.
    
    _Example: application/json_
    
    ```
    {
      "status": {
        "message": "Guardrail Exception : Limit for PreviewOffers API is : 10 offers per API call",
        "httpStatus": 413,
        "code": "413.PreviewOffers.413",
        "apiStatus": "ERROR"
      }
    }
    ```
    
*   **500** Unexpected Server error
    
    Media type: `application/json`. Schema: `PreviewOffersOutputResponseBody`.
    
    _Example: application/json_
    
    ```
    {
      "status": {
        "message": "Internal server error: ",
        "httpStatus": 500,
        "code": "500.PreviewOffers.001",
        "apiStatus": "ERROR"
      }
    }
    ```
    
*   **501** Functionality not implemented
    
    Media type: `application/json`. Schema: `PreviewOffersOutputResponseBody`.
    
    _Example: application/json_
    
    ```
    {
      "status": {
        "message": "Preview Offers API is supported with Standard DC only. Please enable Standard DC and follow the prerequisites in order to use this API.",
        "httpStatus": 501,
        "code": "501.PreviewOffers.001",
        "apiStatus": "ERROR"
      }
    }
    ```
    

### POST Create Basket with basketAction = AddWithNoConfig/AddAfterConfig/AssetToBasket

`POST /v3/catalogs/{catalogcode}/basket`

Operation ID: `EmptyBasketOps`. Tags: Catalog Basket.

Create a basket containing an offer bundle using one of three methods:

1.  Pass basketAction = AddWithNoConfig and offer = Offer Code to add the offer without any configured attribute values.
2.  Pass basketAction = AddAfterConfig and productConfig = result from Get Offer Details API to add a configured offer.
3.  Pass basketAction = AssetToBasket and rootAssetIds = comma-separated set of the root item Ids and requestDateTime = the requested date time that must be future datetime.

#### Parameters

*   `catalogcode` (path, string, required) Identifies the catalog of interest to a customer, prospect or partner. This defines the collection of offers to present to the users and sets a default price list and locale(lang).
*   `contextkey` (query, string) Context key (e.g. 784b264ea6dc63690369e721ffd8e112) which describes the anonymous or known customer's "context" to be used in rule processing. Use if the customer's context key is known.
*   `context` (query, array of string, collection format: csv) If isloggedin is not present in the API or isloggedin parameter value is false then, Context dimension values in the following format: dimension1:val1,dimension2:val2. Required if the context key or account id are not provided. The key value pairs specify Context Dimension values that describe the anonymous or known customer's "context" to be used in rule processing. If a value for any given context dimension defined in the Vlocity Product Catalog is not provided, the default value specified on the Context Dimension is used to determine eligibility and pricing. if isloggedin is present in the API and isloggedin parameter value is set to true then, this parameter should have, accountId, contractId(optional), rootAssetIds(optional), example format for logged-in user context param : {"accountId":"idvalue", "contractId":"idvalue", "rootAssetIds": \["idvalue"\]}
*   `isloggedin` (query, boolean) A flag which describes if the user is logged-in or anonymous. If isloggedin flag is true, It indicates present API is used by a logged-in user, then we expect an accountId and a contractId in the context param of the API. If the isloggedin flag is false or if this param is not specified, It indicates present API is used by an anonymous user
*   `includeAttachment` (query, boolean) A flag which describes if the basket API should return attachments or not. The default value is false. If includeAttachment is true, the basket API returns the attachments. If the isloggedin flag is false,the basket API doesn't return the attachments.
*   `returnBasket` (query, boolean) This flag indicates whether to return basket in the AssetToBasket DC API response. The default value is true. So the assettobasket API returns the basket as earlier(backward compatible). If it is set to false, the assettobasket API returns only the basket key, not the complete basket.
*   `validatebasket` (query, boolean) This flag indicates whether to run the lightweight basket validation for basket and create cart API. The default value is true. So the effectiveness and eligibility of an offer added to a basket and the existing basket are checked. If it is set to false, the lightweight basket validation will not run.
*   `responseFormat` (query, string) This flag indicates whether the response should be trimmed, leaner or full by taking the values trimResponse, leanerResponse or fullResponse. By default it is set to fullResponse.

#### Request body

Basket Action post input

Media type: `application/x-www-form-urlencoded`. Schema: `APINewBasketInput`.

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `APIBasketResponse`.
    
*   **400** Invalid status value

### GET Get Basket Details

`GET /v3/catalogs/{catalogcode}/basket/{basketkey}`

Operation ID: `getBasketDetails`. Tags: Catalog Basket.

get Details of a basket

#### Parameters

*   `basketkey` (path, string, required) Basket key (e.g. 784b264ea6dc63690369e721ffd8e112). Key identifying the basket.
*   `catalogcode` (path, string, required) Identifies the catalog of interest to a customer, prospect or partner. This defines the collection of offers to present to the users and sets a default price list and locale(lang).
*   `contextkey` (query, string) Context key (e.g. 784b264ea6dc63690369e721ffd8e112) which describes the anonymous or known customer's "context" to be used in rule processing. Use if the customer's context key is known.
*   `context` (query, array of string, collection format: csv) If isloggedin is not present in the API or isloggedin parameter value is false then, Context dimension values in the following format: dimension1:val1,dimension2:val2. Required if the context key or account id are not provided. The key value pairs specify Context Dimension values that describe the anonymous or known customer's "context" to be used in rule processing. If a value for any given context dimension defined in the Vlocity Product Catalog is not provided, the default value specified on the Context Dimension is used to determine eligibility and pricing. if isloggedin is present in the API and isloggedin parameter value is set to true then, this parameter should have, accountId, contractId(optional), rootAssetIds(optional), example format for logged-in user context param : {"accountId":"idvalue", "contractId":"idvalue", "rootAssetIds": \["idvalue"\]}
*   `validatebasket` (query, boolean) This flag indicates whether to run the lightweight basket validation for basket and create cart API. The default value is true. So the effectiveness and eligibility of an offer added to a basket and the existing basket are checked. If it is set to false, the lightweight basket validation will not run.
*   `responseFormat` (query, string) This flag indicates whether the response should be trimmed, leaner or full by taking the values trimResponse, leanerResponse or fullResponse. By default it is set to fullResponse.

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `APIBasketResponse`.
    
*   **400** Invalid status value

### PUT Update Basket Items

`PUT /v3/catalogs/{catalogcode}/basket/{basketkey}`

Operation ID: `updateBasketItems`. Tags: Catalog Basket.

update item in Basket(update quantity or attribute)

#### Parameters

*   `basketkey` (path, string, required) Basket key (e.g. 784b264ea6dc63690369e721ffd8e112). Key identifying the basket.
*   `catalogcode` (path, string, required) Identifies the catalog of interest to a customer, prospect or partner. This defines the collection of offers to present to the users and sets a default price list and locale(lang).
*   `contextkey` (query, string) Context key (e.g. 784b264ea6dc63690369e721ffd8e112) which describes the anonymous or known customer's "context" to be used in rule processing. Use if the customer's context key is known.
*   `context` (query, array of string, collection format: csv) If isloggedin is not present in the API or isloggedin parameter value is false then, Context dimension values in the following format: dimension1:val1,dimension2:val2. Required if the context key or account id are not provided. The key value pairs specify Context Dimension values that describe the anonymous or known customer's "context" to be used in rule processing. If a value for any given context dimension defined in the Vlocity Product Catalog is not provided, the default value specified on the Context Dimension is used to determine eligibility and pricing. if isloggedin is present in the API and isloggedin parameter value is set to true then, this parameter should have, accountId, contractId(optional), rootAssetIds(optional), example format for logged-in user context param : {"accountId":"idvalue", "contractId":"idvalue", "rootAssetIds": \["idvalue"\]}
*   `isloggedin` (query, boolean) A flag which describes if the user is logged-in or anonymous. If isloggedin flag is true, It indicates present API is used by a logged-in user, then we expect an accountId and a contractId in the context param of the API. If the isloggedin flag is false or if this param is not specified, It indicates present API is used by an anonymous user
*   `includeAttachment` (query, boolean) A flag which describes if the basket API should return attachments or not. The default value is false. If includeAttachment is true, the basket API returns the attachments. If the isloggedin flag is false,the basket API doesn't return the attachments.
*   `validatebasket` (query, boolean) This flag indicates whether to run the lightweight basket validation for basket and create cart API. The default value is true. So the effectiveness and eligibility of an offer added to a basket and the existing basket are checked. If it is set to false, the lightweight basket validation will not run.
*   `responseFormat` (query, string) This flag indicates whether the response should be trimmed, leaner or full by taking the values trimResponse, leanerResponse or fullResponse. By default it is set to fullResponse.

#### Request body

Basket Action post input

Media type: `application/json`. Schema: `UpdateBasketInput`.

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `APIBasketResponse`.
    
*   **400** Invalid status value

### POST Modify Basket

`POST /v3/catalogs/{catalogcode}/basket/{basketkey}`

Operation ID: `BasketOps`. Tags: Catalog Basket.

Add/Delete Offers to Basket

1.  Pass basketAction = AddWithNoConfig and offer = Offer Code to add the offer without any configured attribute values.
2.  Pass basketAction = AddAfterConfig and productConfig = result from Get Offer Details API to add a configured offer.

Add/Delete Child products to a basket

1.  For AddChildProduct Pass basketAction = AddWithNoConfig bundleContextKey = This represents bundle context key to which child product needs to be added offer = product code which needs to be added parentLineItemKey = This is the key of the parent under which the product needs to be added. In case the parent is a virtual product, the line key of the grand parent should be passed. parentHierarchyPath = This is the product hierarchy path of the parent.
    
2.  For DeleteFromBasket Pass basketAction = DeleteFromBasket bundleContextKey = This represents bundle context key from which child product needs to be deleted lineItemKey = This is the key of the product to be deleted.
    

Delete promotion from a basket

1.  For DeleteFromBasket Pass basketAction = DeleteFromBasket offer = promotion code to be deleted appliedAction = Apply/Add/Existing, action of the applied promotion cancellationDate = This represents the cancellation date for promotion in case of MACD order cancellationReason = This represents the reason for cancellation of promo in case of MACD order

Delete multiple products from a basket

1.  For DeleteFromBasket Pass basketAction = DeleteFromBasket itemsToDelete = This represents the list of bundleContextKey & lineItemKey of the products to be deleted.

#### Parameters

*   `basketkey` (path, string, required) Basket key (e.g. 784b264ea6dc63690369e721ffd8e112). Key identifying the basket.
*   `catalogcode` (path, string, required) Identifies the catalog of interest to a customer, prospect or partner. This defines the collection of offers to present to the users and sets a default price list and locale(lang).
*   `contextkey` (query, string) Context key (e.g. 784b264ea6dc63690369e721ffd8e112) which describes the anonymous or known customer's "context" to be used in rule processing. Use if the customer's context key is known.
*   `context` (query, array of string, collection format: csv) If isloggedin is not present in the API or isloggedin parameter value is false then, Context dimension values in the following format: dimension1:val1,dimension2:val2. Required if the context key or account id are not provided. The key value pairs specify Context Dimension values that describe the anonymous or known customer's "context" to be used in rule processing. If a value for any given context dimension defined in the Vlocity Product Catalog is not provided, the default value specified on the Context Dimension is used to determine eligibility and pricing. if isloggedin is present in the API and isloggedin parameter value is set to true then, this parameter should have, accountId, contractId(optional), rootAssetIds(optional), example format for logged-in user context param : {"accountId":"idvalue", "contractId":"idvalue", "rootAssetIds": \["idvalue"\]}
*   `isloggedin` (query, boolean) A flag which describes if the user is logged-in or anonymous. If isloggedin flag is true, It indicates present API is used by a logged-in user, then we expect an accountId and a contractId in the context param of the API. If the isloggedin flag is false or if this param is not specified, It indicates present API is used by an anonymous user
*   `includeAttachment` (query, boolean) A flag which describes if the basket API should return attachments or not. The default value is false. If includeAttachment is true, the basket API returns the attachments. If the isloggedin flag is false,the basket API doesn't return the attachments.
*   `validatebasket` (query, boolean) This flag indicates whether to run the lightweight basket validation for basket and create cart API. The default value is true. So the effectiveness and eligibility of an offer added to a basket and the existing basket are checked. If it is set to false, the lightweight basket validation will not run.
*   `responseFormat` (query, string) This flag indicates whether the response should be trimmed, leaner or full by taking the values trimResponse, leanerResponse or fullResponse. By default it is set to fullResponse.

#### Request body

Basket Action post input

Media type: `application/x-www-form-urlencoded`. Schema: `APIExistingBasketInput`.

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `APIBasketResponse`.
    
*   **400** Invalid status value

### POST Create Cart from Basket, Create Quote from Basket

`POST /v3/carts`

Operation ID: `CreateCartAfterConfigure`. Tags: Cart.

Create a cart on Salesforce using a basket of configured items returned from one of the basket APIs. This API adds all the requested items to the cart and configures them. The API will validate & price the cart after bulk adding the items. In this version the API will always create an Order (not a quote or opportunity). It returns the Order Number of the created cart and a link to the /v2 API to retrieve the full cart contents. when Standard Digital Commerce API is enabled, we only support creating cart/quote by passing context key and not jsonResult in the requestBody. The dc\_basket\_fs fieldset is supported for this API.

#### Parameters

*   `context` (query, array of string, collection format: csv) If isloggedin is not present in the API or isloggedin parameter value is false then, Context dimension values in the following format: dimension1:val1,dimension2:val2. Required if the context key or account id are not provided. The key value pairs specify Context Dimension values that describe the anonymous or known customer's "context" to be used in rule processing. If a value for any given context dimension defined in the Vlocity Product Catalog is not provided, the default value specified on the Context Dimension is used to determine eligibility and pricing. if isloggedin is present in the API and isloggedin parameter value is set to true then, this parameter should have, accountId, contractId(optional), rootAssetIds(optional), example format for logged-in user context param : {"accountId":"idvalue", "contractId":"idvalue", "rootAssetIds": \["idvalue"\]}
*   `isloggedin` (query, boolean) A flag which describes if the user is logged-in or anonymous. If isloggedin flag is true, It indicates present API is used by a logged-in user, then we expect an accountId and a contractId in the context param of the API. If the isloggedin flag is false or if this param is not specified, It indicates present API is used by an anonymous user
*   `price` (query, boolean) A flag which describes if the pricing should be run in createCart API. If price is true, it runs pricing on the created cart. If price is false, it doesn't run pricing on the created cart. Default value is true.
*   `validate` (query, boolean) A flag which describes if the validation should be run in createCart API. If validate is true, it runs validation on the created cart. If validate is false, it doesn't run validation on the created cart. Default value is true.
*   `validatebasket` (query, boolean) This flag indicates whether to run the lightweight basket validation for basket and create cart API. The default value is true. So the effectiveness and eligibility of an offer added to a basket and the existing basket are checked. If it is set to false, the lightweight basket validation will not run.

#### Request body

A representation of the desired cart, including an array of product configurations which convert to cart items.

Media type: `application/x-www-form-urlencoded`. Schema: `object`.

*   `accountId` (_string_, required) The customer account id (Salesforce Id) for whom to create the cart.
*   `opportunityId` (_string_, required) Opportunity Id for which Quote needs to be created. Required for Create Quote.
*   `cartType` (_string_, required) The type of cart. The 'cartType' parameter determines whether an Order or Quote is created.
*   `catalogCode` (_string_, required) The Catalog Code from which the customer is ordering. This defines the default price list to use for the cart.
*   `cartContextKey` (_string_, required) the context key of the basket. If we pass this parameter, JSONResult parameter is not required.
*   `assetReferenceKey` (_string_, required) assetReferenceKey returned in asset to basket. Required for baskets created from asset. Not required for draft baskets.
*   `JSONResult` (_string_, required) Serialized form of the JSONResult format retrieved from a Basket API. This describes the items and configuration to add to the created cart.(Not required in v105 or higher, recommend to use cartContextKey instead)
*   `orderFields` (_object_) Optional Order fields API name to value pairs, for updating those fields.
    
    Additional properties: `any`.
    
*   `orderItemFields` (_array of object_) Optional array of objects containing OrderItem fields API-name to value pairs, for updating those fields.
    
    Additional properties: `any`.
    
*   `quoteFields` (_object_) Optional quote fields API name to value pairs, for updating those fields.
    
    Additional properties: `any`.
    
*   `quoteItemFields` (_array of object_) Optional array of objects containing QuoteItem.
    
    Additional properties: `any`.
    

#### Responses

*   **200** successful operation
    
    Media type: `application/json`. Schema: `CreateCartResponse`.
    
*   **400** Invalid status value

## Schemas

### AppStatusResponse

*   `status` (_string_)  
    Allowed values: `UP`, `DOWN`.
*   `details` (_object_)
    *   `health` (_object_)
        *   `status` (_string_)  
            Allowed values: `UP`, `DOWN`.
        *   `details` (_object_)
            *   `app-name` (_string_) Name of the application.
            *   `version` (_string_) Application version.
            *   `build_time` (_string_) Application build time.
            *   `build_info` (_object_) Application build information is displayed.
                *   `commit` (_string_) Deployed commit information.
                *   `buildInfo` (_string_) Has information about user who triggered build.
                *   `branch` (_string_) Deployed branch information.
                *   `date` (_string (date-time)_) Application build time.
            *   `salesforce_last_contact` (_string_)
            *   `app_start_time` (_string (date-time)_) Application start time.
            *   `jks_expire_ms` (_string (date-time)_) jks key application expire information.
*   `redis` (_object_)
    *   `status` (_string_) redis status  
        Allowed values: `UP`, `DOWN`.
    *   `details` (_object_)
        *   `redis` (_string_)  
            Allowed values: `UP`, `DOWN`.
        *   `hits` (_integer_) Number of successful lookup of keys in the main dictionary.
        *   `misses` (_integer_) Number of failed lookup of keys in the main dictionary.
        *   `evicted` (_integer_) Number of evicted keys due to maximum memory limit.
        *   `expired` (_integer_) Total number of key expiration events.
        *   `hit_ratio` (_number_) Average hit ratio.
        *   `con_active` (_integer_) Number of connection in active.
        *   `con_idle` (_integer_) Number of connection idle in the pool.
        *   `con_wait` (_integer_) Number of threads waiting for the pool.
        *   `redis_pool_size` (_integer_) Redis connection max pool size.

### AppDiagnosticResponse

*   `app_context` (_object_)
    *   `app_start_time` (_string (date-time)_) Application start time.
    *   `build_info` (_string_) Application build information.
    *   `jks_expire_ms` (_string (date-time)_) JKS key application expire information.
*   `sf` (_object_)
    *   `authentication` (_object_)
        *   `method` (_string_)  
            Allowed values: `JWT`, `secretkey`.
        *   `status` (_string_)  
            Allowed values: `success`, `failure`.
        *   `useLoginFlow` (_string_) Used for development and is disabled by default in production.  
            Allowed values: `disabled`, `enabled`.
    *   `cmt_access` (_object_)
        *   `root_service_path` (_string_) Salesforce service root path.
        *   `status_api_message` (_string_)
        *   `namespace` (_string_) Connected salesforce org namespace.
        *   `status_api_call` (_string_)  
            Allowed values: `failure`, `success`.
*   `redis` (_object_)
    *   `set` (_string_)  
        Allowed values: `success`, `failure`.
    *   `get` (_string_)  
        Allowed values: `success`, `failure`.
    *   `cache_partition_key` (_string_) Cache partition key for application.
    *   `expiry` (_string_) redis cache expiry status  
        Allowed values: `success`, `failure`.

### OffersApiResponse

*   `contextKey` (_string_)
*   `offers` (_array of Offer_)
*   `nextOffersAction` (_ApiRestAction_) Next page offers

### OfferDetailsApiResponse

*   `contextKey` (_string_) Refreshed contextkey
*   `result` (_offerDetails_)
*   `errorCode` (_string_)  
    Example: `INVOKE-200`.
*   `error` (_string_)  
    Example: `OK`.

### offerDetails

*   `offer` (_OfferDetail_)

### PreviewOffersInputRequestBody

Preview Offers API Request Body Representation

*   `isLoggedIn` (_boolean_) whether operation needs to be run via logged-in flow  
    Default: `false`.
*   `context` (_object_) User context for operation. For account context, key should be "accountId". For context dimensions, key should be Code of Context Dimension.
    
    *   `accountId` (_string_)  
        Example: `001xx000003Gl99`.
    
    _Example_
    
    ```
    {
      "accountId": "001xx000003Gl99",
      "Account_SLA": "Gold"
    }
    ```
    
*   `offers` (_array of PreviewOffersInputOffer_) Collection of all offers to be previewed  
    Minimum items: 1. Maximum items: 10.

### PreviewOffersOutputResponseBody

Preview Offers API Response Body Representation

*   `status` (_PreviewOffersResponseStatus_, required)
*   `offers` (_array of PreviewOffersResponseOffer_) Collection of all offers previewed

### APINewBasketInput

*   `basketAction` (_string_, required)
    
    Defines the action to take to create the basket. Options are:
    
    *   AddWithNoConfig - use when passing Offer Code only \* AddAfterConfig - use when passing productConfig \* AssetToBasket - use when doing a MACD \* DeleteFromBasket - use to delete bundle/lineitem to get a modified basket without the specified bundle/lineitem
    
      
    Allowed values: `AddWithNoConfig`, `AddAfterConfig`, `AssetToBasket`.
*   `offer` (_string_, required) Required when basketAction = 'AddWithNoConfig', OfferCode to be added or deleted. In case of multi add, the offercodes should be separated by comma. For example- "iphone11" in case of single add, \["iphone11","iphone12"\] in case of multi add.
*   `productConfig` (_OfferDetailsInput_) OfferDetail of the offer to be added. In case of multi add, the product configs should be separated by comma. For example- {ProductConfig1} in case of single add, \[{ProductConfig1},{ProductConfig2}\]
*   `requestDateTime` (_string_) Required when basketAction = 'AssetToBasket', requested date-time for the Asset To Basket. The date-time must be in UTC format. It cannot be null or an empty string (""). Additionally, it must be a future date-time relative to the current local time.
*   `rootAssetIds` (_string_) Required when basketAction = 'AssetToBasket', comma separated list of root asset ids
*   `canCreateBasket` (_boolean_) Required when basketAction = 'AssetToBasket', performs check whether we can create a basket for the requested date. So you can not create a basket for a previous date (for example 1st July 2020) if there a open order with higher request date (for example 1st August 2020). Default value is false. If it is false, then the above check is not performed.

### APIBasketResponse

*   `cartContextKey` (_string_)
*   `assetReferenceKey` (_string_)
*   `createCartAction` (_ApiRestAction_) Action to create cart.
*   `result` (_object_)
    *   `totals` (_object_)
        *   `vlocity_cmt__EffectiveOneTimeTotal__c` (_number_)
        *   `vlocity_cmt__EffectiveRecurringTotal__c` (_number_)
    *   `totalSize` (_integer_)
    *   `BasketValidationResult` (_object_)
        *   `isBasketValid` (_boolean_)
        *   `basketValidationMessage` (_string_)
        *   `isOffersEffective` (_boolean_)
        *   `isPricingEffective` (_boolean_)
        *   `IneligibleOffers` (_array of object_) It contains the details of offer for which the eligibility has failed. This will a part of response only if the offers in the basket are ineligible. If the eligibility has failed for anonymous user flow then the value will be an array of offer name that failed eligibility If the eligibility has failed for logged in user flow then the value will be an array of object where each object will be a mapping of offer name and the reason for eligibility fail
        *   `InvalidOffers` (_object_) It contains the details of offer for which the effectivity has failed. This will a part of response only if the offers in the basket are eligible and 1 or more offers has failed the effectivity
            *   `InvalidPLEs` (_array of InvalidPLEs_)
            *   `InvalidProducts` (_array of InvalidProducts_)
            *   `InvalidPromotions` (_array of InvalidPromotions_)
    *   `records` (_array of JSONResultRecord_)

### UpdateBasketInput

*   `basketAction` (_string_, required) Defines the action to update Basket.  
    Allowed values: `updateBasket`.
*   `bundleContextKey` (_string_, required) key of the bundle
*   `lineItemKey` (_string_, required) key of the line item to be updated
*   `Quantity` (_string_) quantity to be updated, this is required if you are updating the quantity.
*   `attributeCategories` (_string_) attribute to be updated, this is required if you are updating the attribute.

### APIExistingBasketInput

*   `basketAction` (_string_, required)
    
    Defines the action to take to create the basket. Options are:
    
    *   AddWithNoConfig - use when passing Offer Code only \* AddAfterConfig - use when passing productConfig \* DeleteFromBasket - use to delete bundle/lineitem to get a modified basket without the specified bundle/lineitem
    
      
    Allowed values: `AddWithNoConfig`, `AddAfterConfig`, `DeleteFromBasket`.
*   `offer` (_string_, required) Required when basketAction = 'AddWithNoConfig', OfferCode to be added or deleted
*   `itemsToDelete` (_array of object_) Required when basketAction = 'DeleteFromBasket', with multiple deletions in a single API.
    *   `lineItemKey` (_string_) Key of the basket line item
    *   `bundleContextKey` (_string_) Key of the bundle
*   `bundleContextKey` (_string_, required) Key of the bundle
*   `lineItemKey` (_string_) Key of the basket line item
*   `parentLineItemKey` (_string_, required) Key of the parent line item
*   `parentHierarchyPath` (_string_, required) Product Hierarchy Path of the parent
*   `productConfig` (_OfferDetailsInput_)

### CreateCartResponse

*   `orderNumber` (_string_) Exclusive to Create Cart.  
    Example: `11761`.
*   `orderId` (_string_) Exclusive to Create Cart.  
    Example: `801f2000000uk6fAAA`.
*   `quoteId` (_string_) Exclusive to Create Quote.  
    Example: `0Q0xx0000004E4OCAU`.
*   `errorCode` (_string_)  
    Example: `INVOKE-200`.
*   `error` (_string_)  
    Example: `OK`.
*   `action` (_object_)
    *   `CartItems` (_object_)
        *   `rest` (_object_)
            *   `link` (_string_) The assembled URL (minus the [HTTP://hostname](HTTP://hostname)).  
                Example: `/v2/carts/801f2000000uk6fAAA/items`.

### Offer

*   `offerDetailsAction` (_ApiRestAction_) OfferDetails API contextkey = from previous response
*   `qualification` (_Qualification_)
*   `addToCart` (_ApiRestAction_) Basket Action
*   `offerCode` (_string_) OfferCode is non null if a promo was applied
*   `offerType` (_string_, required)  
    Allowed values: `product`, `promotion`.
*   `Name` (_string_, required)
*   `Description` (_string_)
*   `ProductCode` (_string (date-time)_)
*   `AttributeCategory` (_array of AttributeCategoryRecord_)
*   `priceResult` (_array of PriceResultRecord_)
*   `products` (_array of Product_)

### ApiRestAction

*   `params` (_array of object_)
*   `link` (_string_)
*   `method` (_string_)  
    Allowed values: `POST`, `GET`, `PUT`, `DELETE`.

### OfferDetail

*   `addToCart` (_ApiRestAction_) Basket Action
*   `Name` (_string_, required)
*   `ProductCode` (_string_)
*   `Product2Id` (_string_)
*   `PricebookEntryId` (_string_)
*   `Quantity` (_string_)
*   `minQuantity` (_string_)
*   `maxQuantity` (_string_)
*   `groupMinQuantity` (_string_)
*   `groupMaxQuantity` (_string_)
*   `productHierarchyPath` (_string_)
*   `lineNumber` (_string_)
*   `Id` (_string_)
*   `Description` (_string_)
*   `vlocity_cmt__SellingStartDate__c` (_string (datetime)_)
*   `vlocity_cmt__SellingEndDate__c` (_string (datetime)_)
*   `vlocity_cmt__EndOfLifeDate__c` (_string (datetime)_)
*   `vlocity_cmt__IsOrderable__c` (_string_)
*   `IsActive` (_boolean_)
*   `offerType` (_string_, required)  
    Allowed values: `product`, `promotion`.
*   `AttributeCategory` (_array of AttributeCategoryRecord_)
*   `Attachments` (_array of object_)
    *   `contentType` (_string_)  
        Example: `image`.
    *   `defaultAttachment` (_boolean_)  
        Example: `false`.
    *   `description` (_string_)
    *   `displayConditionsData` (_string_)
    *   `mimeType` (_string_)  
        Example: `image/jpeg`.
    *   `sequenceNumber` (_integer_)
    *   `title` (_string_)
    *   `url` (_string_)
*   `priceResult` (_array of PriceResultRecord_)
*   `childProducts` (_array of OfferDetail_)

### PreviewOffersInputOffer

Offer bundle to be previewed

*   `offerCode` (_string_, required) ProductCode of root product of the offer bundle  
    Example: `Offer-0012`.
*   `configurations` (_array of PreviewOffersInputProductConfiguration_) Optional collection of product configurations (default configuration created if not provided)

### PreviewOffersResponseStatus

Status of API Response

*   `message` (_string_) Message for the response status  
    Example: `Successful operation.`.
*   `httpStatus` (_integer_) HTTP Status Code  
    Example: `200`.
*   `code` (_PreviewOffersResponseStatusCode_)
*   `apiStatus` (_string_) Marks whether operation was successful  
    Allowed values: `SUCCESS`, `ERROR`.

### PreviewOffersResponseOffer

Offer bundle previewed

*   `result` (_offerDetails_)

### OfferDetailsInput

*   `offerDetails` (_object_)
    *   `offer` (_offerDetails_)

### InvalidPLEs

Contains the details of invalid Price List Entries(PLE) with invalid fields (1 or more) for offers

*   `OfferName` (_object_)
    *   `PLECode` (_string_)  
        Example: `Invalid Field1`.

### InvalidProducts

Contains the details of invalid products with the invalid fields (1 or more)

*   `ProductName` (_array of object_)
    *   `SellingStartDate` (_string_)
    *   `SellingEndDate` (_string_)
    *   `EndOfLifeDate` (_string_)
    *   `IsActive` (_boolean_)
    *   `IsOrderable` (_boolean_)

### InvalidPromotions

Contains the details of invalid promotions with the invalid fields (1 or more)

*   `PromotionName` (_array of object_)
    *   `EffectiveStartDate` (_string_)
    *   `EffectiveEndDate` (_string_)
    *   `IsActive` (_boolean_)
    *   `IsOrderable` (_boolean_)

### JSONResultRecord

*   `actions` (_object_)
    *   `item` (_object_) Action to get details of this offer -> GET /v3/catalogs/{catalogcode}/offers/{offercode}?contextkey={CONTEXTKEY} Doesn't provide all optional parameters such as: - cartContextkey or cartContext = MOST RECENT CARTContext, to be set by caller (NOT returned from backend) because another Add could have happened since this getOffers call, which could've modified cartcontext. - AppliedPromotionCode = NULL
        *   `method` (_string_) HTTP method to use on the URL. If multiple are enabled, comma-delimit them.  
            Allowed values: `GET`, `POST`. Example: `GET,POST`.
        *   `link` (_string_) The assembled URL (minus the [HTTP://hostname](HTTP://hostname)).  
            Example: `/services/apexrest/vlocity_cmt/v3/catalogs/CATALOG_CODE/offers/PRODUCTCODE?contextkey=6a8c75ba46f6bb6d529def9b992571fa`.
    *   `addtocart` (_object_) Action to add this item to the user's cart. API -> POST /v3/carts POST BODY contains - contextkey = from previous response - cartContextkey, cartContext = Most Recent CARTContext, to be set by the caller (NOT returned from the backend). This manual entry ensures that the current Cartcontext remains unchanged during the process. For example, another Add could have occurred in the backend during the getOffers call, altering Cartcontext.
        *   `method` (_string_) HTTP method to use on the URL. If multiple are enabled, comma-delimit them.  
            Allowed values: `POST`. Example: `POST`.
        *   `link` (_string_) The assembled URL (minus the [HTTP://hostname](HTTP://hostname)).  
            Example: `/services/apexrest/vlocity_cmt/v3/carts?contextkey=6a8c75ba46f6bb6d529def9b992571fa`.
*   `attributeCategories` (_object_)
    *   `records` (_array of AttributeCategoryRecord_)
*   `lineItemKey` (_string_)
*   `bundleContextKey` (_string_)
*   `productGroups` (_object_)
    *   `records` (_array of ProductGroupsResponse_)
    *   `totalSize` (_integer_)
*   `childProducts` (_object_)
    *   `records` (_array of ChildProductRecord_)
    *   `totalSize` (_integer_)
*   `lineItems` (_object_)
    *   `records` (_array of JSONResultRecord_)
    *   `totalSize` (_integer_)
*   `productCategories` (_object_)
    *   `messages` (_integer_)
    *   `totalSize` (_integer_)
*   `vlocity_cmt__CpqCardinalityMessage__c` (_object_)
    *   `records` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ParentItemId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RootItemId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringCharge__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringCalculatedPrice__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProductHierarchyPath__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__GlobalGroupKey__c` (_string_)
*   `vlocity_cmt__SequenceNumber__c` (_string_)
*   `vlocity_cmt__Product2Id__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__PricingLogData__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__OneTimeTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__OneTimeCharge__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__OneTimeCalculatedPrice__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__LineNumber__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__InCartQuantityMap__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__EffectiveRecurringTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__EffectiveOneTimeTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__AssetReferenceId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__Action__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProductHierarchyGroupKeyPath__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringPrice__c` (_string_)
*   `Quantity` (_array of BasketNodeResponse_)
*   `PricebookEntryId` (_array of BasketNodeResponse_)
*   `UnitPrice` (_array of BasketNodeResponse_)
*   `ListPrice` (_array of BasketNodeResponse_)
*   `vlocity_cmt__CpqMessageData__c` (_array of BasketNodeResponse_)
*   `SellingPeriod` (_string_)
*   `action` (_string_)
*   `itemType` (_string_)
*   `lineNumber` (_string_)
*   `isVirtualItem` (_boolean_)
*   `name` (_string_)
*   `productHierarchyPath` (_string_)
*   `productChildItemId` (_string_)
*   `sequenceNumber` (_integer_)
*   `groupMaxQuantity` (_integer_)
*   `groupMinQuantity` (_integer_)
*   `maxQuantity` (_integer_)
*   `minQuantity` (_integer_)
*   `defaultQuantity` (_integer_)
*   `productId` (_string_)
*   `ProductCode` (_string_)
*   `Product2Id` (_string_)
*   `Name` (_string_)
*   `Pricebook2Id` (_string_)
*   `displaySequence` (_integer_)
*   `Product2` (_object_)
*   `productChildItemDefinition` (_object_)
*   `pricingLogValue` (_object_)
*   `PricebookEntry` (_object_)
*   `messages` (_object_)

### Qualification

*   `qualificationType` (_string_)  
    Example: `Hard Fail`.
*   `message` (_string_)  
    Example: `Account Sla is not Gold`.

### AttributeCategoryRecord

*   `messages` (_Messages_)
*   `displaySequence` (_integer (int32)_)
*   `Code__c` (_string_)  
    Example: `NonSubscription`.
*   `Name` (_string_)  
    Example: `Non Subscription Attributes`.
*   `id` (_string_)  
    Example: `a0K0E000001m0tGUAQ`.
*   `productAttributes` (_ProductAttributes_)

### PriceResultRecord

*   `adjustments` (_array of object_)
*   `overrides` (_array of object_)
*   `chargeamount` (_string_) chargeamount is calculated by subtracting the adjustments from baseamount (baseamount- adjustments).
*   `baseamount` (_string_) This is the baseprice.
*   `IsVirtualPrice__c` (_string_) This is the IsVirtualPrice\_\_c flag defined on the Price List Entry of this price.
*   `IsBasePrice__c` (_string_) This is the IsBasePrice\_\_c flag defined on the Price List Entry of this price.
*   `effectiveuntildatespec` (_string (date-time)_) Specifies how the EffectiveUntilDate value can be calculated based on the Time Plan and Time Policy attached to the Price List Entry of this price.
*   `effectivefromdatespec` (_string (date-time)_) Specifies how the EffectiveFromDate value can be calculated based on the Time Plan and Time Policy attached to the Price List Entry of this price.
*   `SubType__c` (_string_) This is the SubType\_\_c defined on the Pricing Variable of the Price List Entry of this price.
*   `Type__c` (_string_) This is the Type\_\_c defined on the Pricing Variable of the Price List Entry of this price.
*   `RecurringFrequency__c` (_string_) This is the RecurringFrequency\_\_c defined on the Pricing Variable of the Price List Entry of this price.
*   `ChargeType__c` (_string_) This is the ChargeType\_\_c defined on the Pricing Variable of the Price List Entry of this price.
*   `DisplayText__c` (_string_) This is the DisplayText\_\_c defined on the Price List Entry of this price.

### Product

*   `Name` (_string_)
*   `Description` (_string_)
*   `Action:detailAction` (_string_)
*   `records` (_array of AttributeCategoryRecord_)
*   `priceResults` (_array of PriceResultRecord_)

### PreviewOffersInputProductConfiguration

Collection of all configurations to be made to a specific product in an offer bundle

*   `productHierarchyPath` (_string_, required) Unique identifier of a product (Can be found in the response GetOfferDetails API, or Preview Offers API without any configurations)  
    Example: `01txx0000006iNQAAY<01txx0000006i8uAAA`.
*   `fields` (_object_) Key-value pairs of fields to be modified for the specified product. Key is the API Name of the field. If not applicable, it will be ignored silently.
    
    _Example_
    
    ```
    {
      "Quantity": 2,
      "vlocity_cmt__UsageQuantity": 3.5
    }
    ```
    
*   `attributes` (_object_) Key-value pairs of attributes to be modified for the specified product. Key is the Attribute Code. If not applicable, it will be ignored silently.
    
    _Example_
    
    ```
    {
      "ATTR-COLOR": "Red",
      "MemorySize": "4GB"
    }
    ```
    

### PreviewOffersResponseStatusCode

Format of codes - `<HTTP Code>.PreviewOffers.<Code Number>`:

*   `200.PreviewOffers.001` - Successful Operation
*   `400.PreviewOffers.001` - Error due to invalid shape of Request body
*   `400.PreviewOffers.002` - Catalog Code not found
*   `400.PreviewOffers.003` - Offer Code absent or blank
*   `400.PreviewOffers.004` - Product Hierarchy Path absent or blank
*   `400.PreviewOffers.005` - Duplicate Product Hierarchy Path in the same offer
*   `400.PreviewOffers.006` - Validation Error
*   `400.PreviewOffers.007` - Compile job not run
*   `400.PreviewOffers.008` - Invalid Offer code
*   `400.PreviewOffers.009` - No offers passed in the input
*   `400.PreviewOffers.010` - Invalid attribute configuration
*   `413.PreviewOffers.001` - Guardrails - Too many offers
*   `500.PreviewOffers.001` - Unexpected Internal Server Error
*   `501.PreviewOffers.001` - Error while invoking PreviewOffers API with Classic DC

Type: `string`.

Example: `200.PreviewOffers.001`.

### ProductGroupsResponse

*   `attributeCategories` (_object_)
    *   `records` (_array of AttributeCategoryRecord_)
*   `productCategories` (_object_)
    *   `messages` (_integer_)
    *   `totalSize` (_integer_)
*   `childProducts` (_object_)
    *   `records` (_array of ChildProductRecord_)
    *   `totalSize` (_integer_)
*   `vlocity_cmt__ParentItemId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__CpqCardinalityMessage__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProductHierarchyPath__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__GlobalGroupKey__c` (_string_)
*   `vlocity_cmt__SequenceNumber__c` (_string_)
*   `vlocity_cmt__LineNumber__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__AssetReferenceId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProductHierarchyGroupKeyPath__c` (_object_)
    *   `records` (_array of LabelValue_)
*   `vlocity_cmt__RecurringPrice__c` (_string_)
*   `PricebookEntryId` (_array of BasketNodeResponse_)
*   `UnitPrice` (_array of BasketNodeResponse_)
*   `vlocity_cmt__InCartQuantityMap__c` (_object_)
    *   `records` (_array of KeyValue_)
*   `SellingPeriod` (_string_)
*   `itemType` (_string_)
*   `lineNumber` (_string_)
*   `isVirtualItem` (_boolean_)
*   `name` (_string_)
*   `productId` (_string_)
*   `productHierarchyPath` (_string_)
*   `productChildItemId` (_string_)
*   `sequenceNumber` (_integer_)
*   `groupMaxQuantity` (_integer_)
*   `groupMinQuantity` (_integer_)
*   `maxQuantity` (_integer_)
*   `minQuantity` (_integer_)
*   `defaultQuantity` (_integer_)
*   `ProductCode` (_object_)
    *   `records` (_array of LabelValue_)
*   `Product2Id` (_object_)
    *   `records` (_array of LabelValue_)
*   `Name` (_object_)
    *   `records` (_array of LabelValue_)
*   `Pricebook2Id` (_object_)
    *   `records` (_array of LabelValue_)
*   `displaySequence` (_integer_)
*   `Product2` (_object_)
*   `productChildItemDefinition` (_object_)
*   `PricebookEntry` (_object_)
*   `messages` (_object_)

### ChildProductRecord

*   `actions` (_object_)
    *   `item` (_object_)
        *   `method` (_string_) HTTP method to use on the URL. If multiple are enabled, comma-delimit them.  
            Allowed values: `GET`, `POST`. Example: `GET,POST`.
        *   `link` (_string_) The assembled URL (minus the [HTTP://hostname](HTTP://hostname)).  
            Example: `/services/apexrest/vlocity_cmt/v3/catalogs/CATALOG_CODE/offers/PRODUCTCODE?contextkey=6a8c75ba46f6bb6d529def9b992571fa`.
    *   `addtocart` (_object_) Action to add this item to the user's cart. API -> POST /v3/carts POST BODY contains - contextkey = from previous response - cartContextkey, cartContext = MOST RECENT CARTContext, to be set by caller (NOT returned from backend) eg another Add could have happened since this getOffers call, which could've modified cartcontext.
        *   `method` (_string_) HTTP method to use on the URL. If multiple are enabled, comma-delimit them.  
            Allowed values: `POST`. Example: `POST`.
        *   `link` (_string_) The assembled URL (minus the [HTTP://hostname](HTTP://hostname)).  
            Example: `/services/apexrest/vlocity_cmt/v3/carts?contextkey=6a8c75ba46f6bb6d529def9b992571fa`.
*   `attributeCategories` (_object_)
    *   `records` (_array of AttributeCategoryRecord_)
*   `productGroups` (_object_)
    *   `records` (_array of ProductGroupsResponse_)
    *   `totalSize` (_integer_)
*   `childProducts` (_object_)
    *   `records` (_array of ChildProductRecord_)
    *   `totalSize` (_integer_)
*   `lineItems` (_object_)
    *   `records` (_array of JSONResultRecord_)
    *   `totalSize` (_integer_)
*   `productCategories` (_object_)
    *   `messages` (_integer_)
    *   `totalSize` (_integer_)
*   `vlocity_cmt__ProductHierarchyPath__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__GlobalGroupKey__c` (_string_)
*   `vlocity_cmt__SequenceNumber__c` (_string_)
*   `vlocity_cmt__Product2Id__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__LineNumber__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__AssetReferenceId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProductHierarchyGroupKeyPath__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringPrice__c` (_string_)
*   `PricebookEntryId` (_array of BasketNodeResponse_)
*   `UnitPrice` (_array of BasketNodeResponse_)
*   `SellingPeriod` (_string_)
*   `itemType` (_string_)
*   `lineNumber` (_string_)
*   `isVirtualItem` (_boolean_)
*   `name` (_string_)
*   `productHierarchyPath` (_string_)
*   `productChildItemId` (_string_)
*   `sequenceNumber` (_integer_)
*   `groupMaxQuantity` (_integer_)
*   `groupMinQuantity` (_integer_)
*   `maxQuantity` (_integer_)
*   `minQuantity` (_integer_)
*   `defaultQuantity` (_integer_)
*   `ProductCode` (_object_)
    *   `records` (_array of LabelValue_)
*   `Product2Id` (_object_)
    *   `records` (_array of LabelValue_)
*   `Name` (_object_)
    *   `records` (_array of LabelValue_)
*   `Pricebook2Id` (_object_)
    *   `records` (_array of LabelValue_)
*   `displaySequence` (_integer_)
*   `Product2` (_object_)
*   `productChildItemDefinition` (_object_)
*   `PricebookEntry` (_object_)
*   `messages` (_object_)

### BasketNodeResponse

*   `actions` (_object_)
*   `alternateValues` (_string_)
*   `dataType` (_string_)
*   `editable` (_boolean_)
*   `fieldName` (_string_)
*   `hidden` (_object_)
*   `label` (_string_)
*   `messages` (_object_)
*   `originalValue` (_integer_)
*   `previousValue` (_integer_)
*   `value` (_integer_)

### Messages

Array of `object`.

*   `severity` (_string_)
*   `messageId` (_string_)
*   `code` (_integer (int32)_, required)
*   `message` (_string_, required)

### ProductAttributes

*   `totalSize` (_integer_, read-only) Number of records in the records array.  
    Example: `2`.
*   `messages` (_Messages_)
*   `records` (_array of Attribute_)

### LabelValue

*   `label` (_string_)  
    Example: `name`.
*   `value` (_string_)  
    Example: `iPhone12Pro`.

### KeyValue

*   `id` (_string_)  
    Example: `01tx0000000HLDbAAO`.
*   `value` (_integer_)  
    Example: `1`.

### Attribute

*   `messages` (_Messages_)
*   `categorycode__c` (_string_)
*   `categoryname__c` (_string_)
*   `code` (_string_)  
    Example: `Frequency`.
*   `dataType` (_string_)  
    Example: `text`.
*   `inputType` (_string_)  
    Example: `dropdown`.
*   `multiselect` (_boolean_)  
    Example: `false`.
*   `required` (_boolean_)  
    Example: `true`.
*   `readonly` (_boolean_)  
    Example: `false`.
*   `disabled` (_boolean_)  
    Example: `false`.
*   `filterable` (_boolean_)  
    Example: `true`.
*   `attributeId` (_string_)  
    Example: `a0L0E000001GTMpUAO`.
*   `label` (_string_)  
    Example: `Frequency`.
*   `displaySequence` (_integer_) Sequence to display in the UI.  
    Example: `1`.
*   `hasRules` (_boolean_)  
    Example: `false`.
*   `hidden` (_boolean_)  
    Example: `false`.
*   `values` (_array of AttributeValue_)
*   `userValues` (_string_)  
    Example: `red,blue`.

### AttributeValue

*   `id` (_string_)  
    Example: `10`.
*   `name` (_string_)  
    Example: `10`.
*   `label` (_string_)  
    Example: `Day`.
*   `readonly` (_boolean_)  
    Example: `false`.
*   `disabled` (_boolean_)  
    Example: `false`.
*   `value` (_string_)  
    Example: `10`.
*   `defaultSelected` (_boolean_)  
    Example: `false`.