You can use the code samples in this topic to make remote method calls to the Digital Commerce APIs for both anonymous and logged-in users.
Sample Remote Calls
Get Offers By Catalog for Anonymous Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'getOffersByCatalogCode';
input.put('apiName','getOffers');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('pagesize','20');
input.put('offset','0');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
For more details about which parameters correspond to the POST body, refer to the API documentation.
Get Offers By Catalog for Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'getOffersByCatalogCode';
input.put('apiName','getOffers');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('pagesize','20');
input.put('offset','0');
input.put('context','{"accountId":"accountId1", "contractId":"contractId1"}');
input.put('isloggedin','true');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Get Contains Products for Anonymous Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'getOffersByCatalogCode';
input.put('apiName','GetContainOffers');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/offers?contains=Child1&context={}&pagesize=20&offset=0');
input.put('productCode', 'Child1');input.put('pagesize','20');
input.put('offset','0');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Get Contains Products for Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'getOffersByCatalogCode';
input.put('apiName','GetContainOffers');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/offers?contains=Child1&pagesize=20&offset=0');
input.put('productCode', 'Child1');input.put('pagesize','20');
input.put('offset','0');
input.put('context','{"accountId":"accountId1", "contractId":"contractId1"}');
input.put('isloggedin','true');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
GetOfferDetailsByCatalog for Anonymous Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parametersmethodName = 'getOfferDetailsByCatalogCode';
input.put('apiName','getOfferDetails');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/offers/iPhone8Bundle');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
GetOfferDetails ByCatalog for Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'getOfferDetailsByCatalogCode';
input.put('apiName','getOfferDetails');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/offers/iPhone8Bundle');
input.put('context','{"accountId":"accountId1", "contractId":"contractId1"}');
input.put('isloggedin','true');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Get Basket for Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'getBasket';
input.put('apiName','basketOperations');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/basket');
input.put('context','{"accountId":"accountId1", "contractId":"contractId1"}');
input.put('isloggedin','true');
input.put('cartContextKey', 'cartContextKey');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
POST API Sample Calls
Configure Offer for Anonymous or Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'configureOfferDetail';
input.put('apiName','ConfigureOfferDetail');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('offerCode', 'iPhone8Bundle');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/offer/iPhone8Bundle');
input.put('result', '{{offerdetailsStructure}}');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Additional parameters:
// Transactional break for ValidateAndPriceAction
input.put('orderId', '{{transactionKey}}');
// validate and price
input.put('validate', false);
input.put('price', false);
Basket API for Anonymous or Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parametersmethodName = 'addWithNoConfig';
input.put('apiName','basketOperations');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('offer', 'Product1');input.put('methodName', 'addWithNoConfig');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/basket');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Additional parameters include different method names (note that their first letter is not capitalized unlike in REST POST body params):
-
addWithNoConfig
-
addAfterConfig
-
deleteFromBasket
Additional input map parameters include:
-
offerDetails - same as productConfig
-
orderId - same as transactionKey
-
cartContextKey
-
deleteBundleNumber
Refer to Basket APIs documentation for more details on what they correspond to in POST body params.
// validate and price
input.put('validate', false);
input.put('price', false);
Basket API: Asset to Basket for Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'assetToBasket';
input.put('apiName','basketOperations');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/basket');
input.put('methodName', 'assetToBasket');
input.put('context','{"accountId":"accountId1", "contractId":"contractId1", "rootAssetIds":["rootItemId1", "rootItemId2"]}');
input.put('isloggedin','true');
input.put('rootAssetIds', 'rootItemId1,rootItemId2');
input.put('requestDateTime', '2020-01-08T12:00:00.000z');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/basket');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Additional Parameters:
// validate and price
input.put('validate', false);
input.put('price', false);
Basket API: Delete From Basket for Anonymous or Logged in Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'deleteFromBasket';
input.put('apiName','basketOperations');
input.put('methodName','deleteFromBasket');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/basket');
input.put('cartContextKey', 'cartContextKey');
//Use the cart context
keyinput.put('bundleContextKey', 'bundleContextKey');
//Use the key of the bundle under which the line to be deleted
input.put('lineItemKey', 'lineItemKey');
//Use the key of the line to be deleted
input.put('context','{"accountId":"accountId1", "contractId":"contractId1"}');
input.put('isloggedin','true');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Additional parameters:
// validate and price
input.put('validate', false);
input.put('price', false);
Basket API: Update Basket for Anonymous or Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'updateBasket';input.put('apiName','basketOperations');
input.put('methodName','updateBasket');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/basket');
input.put('cartContextKey', 'cartContextKey');
//Use the cart context keyinput.put('bundleContextKey', 'bundleContextKey');
//Use the key of the bundle under which the line to be deleted
input.put('lineItemKey', 'lineItemKey');
//Use the key of the line to be updatedinput.put('Quantity', 5);
//Quantity to be updated
input.put('context','{"accountId":"accountId1", "contractId":"contractId1"}');
input.put('isloggedin','true');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Additional parameters:
// validate and price
input.put('validate', false);
input.put('price', false);
// to update attribute
input.put('attributeCategories', 'attributecategorystring'); //attribute category to be updated
Basket API : Add Multiple Items to a Basket:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
methodName = 'addWithNoConfig';
input.put('apiName','basketOperations');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('productConfig', [list of product configs]); //this is the list of product configs or single product config to add
input.put('offer', [list of offers to add]); //list of offer codes to add or single offer code to add
input.put('methodName', 'addAfterConfig');
input.put('requestURL', '/v3/catalogs/ECOMM-CAT1/basket');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Create Cart for Logged In Users:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'createEcomCart';
input.put('apiName','createEcomCart');
input.put('methodName','createEcomCart');
input.put('catalogCode', 'ECOMM-CAT1');
input.put('requestURL', '/v3/carts');
input.put('cartContextKey', 'cartContextKey');//Use the cart context key
input.put('context','{"accountId":"accountId1", "contractId":"contractId1"}');
input.put('isloggedin','true');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);
Additional Parameters
// validate and price
input.put('validate', false);
input.put('price', false);
//Old format:
input.put('catalogCode', 'Mobiles');
input.put('accountId', '001f200001eSlhe');
input.put('JSONResult', '{{AddTobasketResponse}}');
Basket API : Add Child Items to a Basket:
String methodName;
Map<String, Object> input = new Map<String, Object>();
Map<String, Object> output = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
// Setting remote parameters
methodName = 'addWithNoConfig';
input.put('apiName','basketOperations');
input.put('catalogCode', 'catalog_Apr18');
input.put('offer', '300MbpsRouter-129356540');
input.put('methodName', 'addWithNoConfig');
input.put('cartContextKey', '1aa8bcbb632946e295cbe98b2fffa91b');
input.put('parentHierarchyPath', '01tDH000000MYRPYA4');
input.put('bundleContextKey', 'a9347c07-9793-4e78-8371-9ac4e50e96df');
input.put('parentLineItemKey', 'a9347c07-9793-4e78-8371-9ac4e50e96df');
input.put('requestURL', '/v3/catalogs/catalog_Apr18/basket');
//remote action invocation
vlocity_cmt.CpqAppHandler appHandler = new vlocity_cmt.CpqAppHandler();
appHandler.invokeMethod(methodName, input, output, options);