---
schema_version: "1"
id: 85896b956e96e15545e1e570988f5b3e82c932bed52e1f3da873cebf0409aa7a
title: 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/dc-rest1.md
canonical_url: https://developer.salesforce.com/docs/industries/cme/references/dc-rest1
source_site: developer.salesforce.com
content_type: documentation
content_hash: ff5ca498fdc46c48498e88d4fcebc78e659a62ba22de739cafd54b3d3a85eaa4
products:
  - Communications, Media, Energy and Utilities APIs (Managed Package)
  - Industries Developer Documentation
---
Digital Commerce REST APIs

# Digital Commerce REST APIs

Industries 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 Industries 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 will continue to be supported and actively enhanced. The Digital Commerce APIs are not intended to replace the Cart based APIs.

All of the Industries 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}

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.

4.  Get a basket containing a configured offer bundle using an offer details response (3 above): POST /v3/catalogs/{catalogcode}/basket
5.  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 Industries CPQ pricing services. The API returns a basket key that is a hash form of a cart containing the chosen items as configured.

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

## 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 will be 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 will force 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, separated 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 info 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 will be 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 will force 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.

#### 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 will be 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 will force 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

#### 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 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 = the root assets Ids and requestDateTime = the requested date time

#### 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 will be 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 will force 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
*   `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 does not 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 will return the basket as earlier(backward compatible). If it is set to false, the assettobasket api will return 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 effectivity and eligibility, of the offer being added to a basket and the existing basket, will be check. If it is set to false, the lightweight basket validation will not run.
*   `responseFormat` (query, string) This flag indicates whether the response must 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 will be 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 effectivity and eligibility, of the offer being added to a basket and the existing basket, will be check. If it is set to false, the lightweight basket validation will not run.
*   `responseFormat` (query, string) This flag indicates whether the response must 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 will be 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 will force 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
*   `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 does not 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 effectivity and eligibility, of the offer being added to a basket and the existing basket, will be check. If it is set to false, the lightweight basket validation will not run.
*   `responseFormat` (query, string) This flag indicates whether the response must 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/MultiDelete 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 deleteBundleNumber(only in 103 and 104) = bundle Number which will be updated 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

When Standard Digital Commerce is enabled, cartContextKey, OrderId, and corresponding fields aren't returned.

#### 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 will be 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 will force 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
*   `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 does not 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 effectivity and eligibility, of the offer being added to a basket and the existing basket, will be check. If it is set to false, the lightweight basket validation will not run.
*   `responseFormat` (query, string) This flag indicates whether the response must 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 or quote 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 is enabled, we only support the context key in the input and not the JSON result.

#### 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 will be 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 does not 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 does not 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 effectivity and eligibility, of the offer being added to a basket and the existing basket, will be check. 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) The opportunity ID for which Quote needs to be created. Required for Create Quote.
*   `cartType` (_string_, required) The type of cart. In Classic DC, only an Order can be 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 will be 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 maxmemory 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, will be disabled by default in prod  
            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_)

### 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 when passing deleteBundleNumber to get a modified basket without the specified bundle
    
      
    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.
*   `transactionKey` (_string_) Optional continuation key to be passed. (Recommended to use multiTransactionKey from CMT105)
*   `multiTransactionKey` (_string_) Optional transactionkey to be passed if the api requires more than one transaction. In case of cache miss, the api may need more than one transaction to complete in order to avoid hitting the salesforce governing limits( SOQL, DML, heap size, cpu time). So in order to handle that, the api will break when any of the above configured salesforce governing limit is exceeded and it will return the multiTransactionKey. So the UI can invoke the same API again with the multiTransactionKey and the API will proceed from previous step. The configured salesforce governing limits are configurable through following custom settings - SOQL - NumberOfQueriesPerTransaction DML - NumberOfDMLPerTransaction CPU Time - MaxCPUTimePerTransaction Heap Size - MaxHeapSizePerTransaction
*   `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
*   `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_)
*   `nexttransaction` (_MTSRestAction_) Returned if the api requires more than one transaction. It contains the multiTransactionKey to be used in next transaction.
*   `createCartAction` (_ApiRestAction_) Action to create cart.
*   `validateAndPriceAction` (_object_)
    *   `params` (_BasketContinuationResponse_)
*   `result` (_object_)
    *   `totals` (_object_)
        *   `EffectiveOneTimeTotal__c` (_number_)
        *   `EffectiveRecurringTotal__c` (_number_)
        *   `EffectiveUsagePriceTotal__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.
*   `fieldsToBeUpdated` (_object_)
    *   `vlocity_cmt__UsageQuantity__c` (_string_) usage quantity to be updated, this is required if you are updating the usage quantity.
*   `transactionKey` (_string_) Optional continuation key to be passed

### 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 when passing deleteBundleNumber to get a modified basket without the specified bundle
    
      
    Allowed values: `AddWithNoConfig`, `AddAfterConfig`, `DeleteFromBasket`.
*   `offer` (_string_, required) Required when basketAction = 'AddWithNoConfig', OfferCode to be added or deleted
*   `deleteBundleNumber` (_string_) Required when basketAction = 'DeleteFromBasket', 0-Based number of toplevel Bundle to be deleted(not required in v105 or higher)
*   `itemsToDelete` (_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
*   `transactionKey` (_string_) Optional continuation key to be passed(Recommended to use multiTransactionKey from CMT105)
*   `multiTransactionKey` (_string_) Optional transactionkey to be passed if the api requires more than one transaction. In case of cache miss, the api may need more than one transaction to complete in order to avoid hitting the salesforce governing limits( SOQL, DML, heap size, cpu time). So in order to handle that, the api will break when any of the above configured salesforce governing limit is exceeded and it will return the multiTransactionKey. So the UI can invoke the same API again with the multiTransactionKey and the API will proceed from previous step. The configured salesforce governing limits are configurable through following custom settings - SOQL - NumberOfQueriesPerTransaction DML - NumberOfDMLPerTransaction CPU Time - MaxCPUTimePerTransaction Heap Size - MaxHeapSizePerTransaction
*   `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_)
*   `vlocity_cmt__UsageQuantity__c` (_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_)

### OfferDetailsInput

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

### MTSRestAction

*   `params` (_object_)
    *   `multiTransactionKey` (_string_)  
        Example: `3d712d4a3b14cea4187ea9a5332cff0e`.
    *   `method` (_string_)  
        Example: `addWithNoConfig`.

### BasketContinuationResponse

*   `transactionKey` (_string_) Continuation key to be passed back for incomplete transaction
*   `offer` (_string_)
*   `basketAction` (_string_)
*   `context` (_string_)

### 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} Does not 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 will contain - 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_)
*   `lineItemKey` (_string_)
*   `bundleContextKey` (_string_)
*   `productGroups` (_object_)
    *   `records` (_array of JSONResultRecord_)
    *   `totalSize` (_integer_)
*   `lineItems` (_object_)
    *   `records` (_array of JSONResultRecord_)
    *   `totalSize` (_integer_)
*   `productCategories` (_object_)
    *   `records` (_array of any_)
    *   `totalSize` (_integer_)
*   `vlocity_cmt__FulfilmentStatus__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__FirstVersionOrderItemId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__SupersededOrderItemId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__SupplementalAction__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__CatalogItemReferenceDateTime__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__CpqPricingMessage__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__CpqCardinalityMessage__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ItemName__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__BillingAccountId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ServiceAccountId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__CpqMessageData__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringDiscountPrice__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ParentItemId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__SubAction__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RootItemId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringManualDiscount__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringCharge__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__RecurringCalculatedPrice__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__UsageUnitPrice__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__UsageQuantity__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__UsagePriceTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__UsageMeasurementId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProvisioningStatus__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProductHierarchyPath__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProductHierarchyGroupKeyPath__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__ProductGroupKey__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__Product2Id__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__PricingLogData__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__OneTimeTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__OneTimeManualDiscount__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__IsChangesAllowed__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__InCartQuantityMap__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__EffectiveUsagePriceTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__EffectiveRecurringTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__EffectiveOneTimeTotal__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__CurrencyPaymentMode__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__AssetReferenceId__c` (_array of BasketNodeResponse_)
*   `vlocity_cmt__Action__c` (_array of BasketNodeResponse_)
*   `Quantity` (_array of BasketNodeResponse_)
*   `PricebookEntryId` (_array of BasketNodeResponse_)
*   `ListPrice` (_array of BasketNodeResponse_)
*   `UnitPrice` (_array of BasketNodeResponse_)
*   `SellingPeriod` (_string_)
*   `action` (_string_)
*   `itemType` (_string_)
*   `orderActive` (_boolean_)
*   `hasChildren` (_boolean_)
*   `lineNumber` (_string_)
*   `isVirtualItem` (_boolean_)
*   `name` (_string_)
*   `productHierarchyPath` (_string_)
*   `productChildItemId` (_string_)
*   `sequenceNumber` (_integer_)
*   `groupMaxQuantity` (_integer_)
*   `groupMinQuantity` (_integer_)
*   `maxQuantity` (_integer_)
*   `minQuantity` (_integer_)
*   `defaultQuantity` (_integer_)
*   `productId` (_string_)
*   `Pricebook2Id` (_string_)
*   `ProductCode` (_string_)
*   `sginteg234__RecurringPrice__c` (_integer_)
*   `IsActive` (_boolean_)
*   `Product2Id` (_string_)
*   `Name` (_string_)
*   `displaySequence` (_integer_)
*   `Product2` (_object_)
*   `productChildItemDefinition` (_object_)
*   `PricebookEntry` (_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_)
*   `unitOfMeasure` (_object_) unitOfMeasure defined on the ChargeMeasurement\_\_c for Usage Based Pricing
    *   `Name` (_string_)
    *   `Id` (_string_)
    *   `vlocity_cmt__GlobalKey__c` (_string_)
    *   `attributes` (_object_)
*   `chargeamount` (_number_) chargeamount is calculated by subtracting the adjustments from baseamount (baseamount- adjustments).
*   `baseamount` (_number_) This is the baseprice.
*   `IsVirtualPrice__c` (_boolean_) This is the IsVirtualPrice\_\_c flag defined on the Price List Entry of this price.
*   `IsBasePrice__c` (_boolean_) 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_)

### BasketNodeResponse

*   `actions` (_object_)
*   `alternateValues` (_string_)
*   `dataType` (_string_)
*   `editable` (_boolean_)
*   `fieldName` (_string_)
*   `hidden` (_object_)
*   `label` (_string_)
*   `messages` (_array of any_)
*   `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_)

### 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`.