Options
All
  • Public
  • Public/Protected
  • All
Menu

The Facade to interact with Vlocity CPQ functionality.

Hierarchy

Index

Constructors

Properties

Accessors

Methods

Constructors

constructor

Properties

Private config

config: default

Private context

context: UserContext

Private datasource

datasource: any

Private result

result: { actions: string; messages: string; records: string; result: string } = ...

Type declaration

  • actions: string
  • messages: string
  • records: string
  • result: string

Static Private instance

instance: default

Private singleton instance of this SDK. There should always be only 1 instance.

Accessors

namespace

  • get namespace(): string
  • set namespace(customNamespace: string): void
  • getter method for namespace. Provides the salesforce org namespace

    Returns string

  • setter method for namespace. Set custom namespace

    Parameters

    • customNamespace: string

    Returns void

Methods

addProductToCart

  • Add the product to the cart.

    example
    
    // Instantiate the input object for addProductToCart to specify parameters
    const input = cpqSdk.createAddProductToCartInput();
    input.parentId = ""; // pass parent id if available. - optional.
    input.rootBundleId = "1234"; // pass the root bundle Id.
    input.actionObj = {}; // pass addtocart action object
    
    // Invoke /cpq/carts/:itemId/items API via method addProductToCart()
    cpqSdk
      .addProductToCart(input)
      .then(result => {
        Logger.info("Vlocity add product to cart rest call" + result);
      })
      .catch(error => {
        Logger.info("Vlocity add product to cart rest call failed" + error);
      });
    

    Parameters

    Returns Promise<any>

addToCartItem

  • Add an addon to the cart.

    Parameters

    Returns Promise<any>

addToCartPromoItem

  • Add a promo to the cart.

    Parameters

    Returns Promise<any>

applyAdjustment

  • Apply adjustment to given cart item

    example
    
    const input = cpqSDK.createApplyAdjustmentInput();
    input.cartId = validCartId;
    input.itemId = validItemId;
    input.adjustments = []; // Array of adjustment objects
    
    cpqSDK.applyAdjustment(input)
     .then(response => {
       console.log('Vlocity applyAdjustment call ' + response);
     })
     .catch(error => {
       console.log('Vlocity applyAdjustment error ' + error);
     });
    
    

    Parameters

    Returns Promise<Result>

applyDiscount

  • Apply Discount to cart

    example
    
    const input = cpqSDK.createApplyDiscountInput();
    input.cartId = validCartId;
    input.discountTemplateIds = []; // Discount ID
    input.fields = []; // optional
    input.ipMethod = validIPName // optional. Will call IP if set
    
    cpqSDK.applyDiscount(input)
     .then(response => {
       console.log(response);
     })
     .catch(error => {
       console.log(error);
     });
    
    

    Parameters

    Returns Promise<Result>

applyDiscountPostHook

  • applyDiscountPostHook(input: Result): Promise<any>
  • applyDiscount sdk post hook method

    example
    
    // How to override applyDiscountPostHook method
    VlocitySDK.cpqSDK.override({
     applyDiscountPostHook(input) {
       console.log('Inside override of applyDiscountPostHook');
       // Create new response here or modify input itself
       let response = {};
       return Promise.resolve(response);
     }
    });
    
    

    Parameters

    Returns Promise<any>

applyDiscountPreHook

  • applyDiscount sdk pre hook method

    example
    
    // How to override applyDiscountPreHook method
    VlocitySDK.cpqSDK.override({
     applyDiscountPreHook(input) {
       console.log('Inside override of applyDiscountPreHook');
       // modify input here
       return Promise.resolve(input);
     }
    });
    
    

    Parameters

    Returns Promise<ApplyDiscountInput>

applyDiscountToCart

cloneItemInCart

  • Clones an item in a cart

    example
    
    const input = cpqSDK.createCloneItemInCartInput();
    input.cartId = validCartId;
    input.items = [{itemId: 'ITEM_ID_TO_CLONE'}];
    
    cpqSDK.cloneItemInCart(input)
     .then(response => {
       console.log('Vlocity clone item in cart call ' + response);
     })
     .catch(error => {
       console.log('Vlocity clone item in cart error ' + error);
     });
    
    

    Parameters

    Returns Promise<Result>

cloneItems

  • Clone the line items.

    Parameters

    Returns Promise<Result>

configureAndAdd

  • Add a product to the cart such that it can be configured.

    Parameters

    Returns Promise<Result>

createAddProductToCartInput

  • Create a default AddToCartItemInput object.

    Returns AddProductToCartInput

createAddToCartItemInput

  • Create a default InvokeActionInput object.

    Returns AddToCartItemInput

createAddToCartPromoItemInput

  • Create a default addToCartPromoItem object.

    Returns AddToCartPromoInput

createApplyAdjustmentInput

  • Create a default ApplyAdjustmentInput object.

    Returns ApplyAdjustmentInput

createApplyDiscountInput

  • Create a default ApplyDiscountInput object

    Returns ApplyDiscountInput

createApplyDiscountToCartInput

createAttributeAttachmentUrlMap

  • createAttributeAttachmentUrlMap(attachments: Attachment[]): Map<string, string>
  • A workaround mechanism for v102 when getProducts API do not relate attribute id to attachment url. Here we assume Admin would have configured the url such that it is appended by a vertical bar followed by attribute id, we would then split them apart and create a map that pairs the attribute id to the attachment url.

    Parameters

    Returns Map<string, string>

createCart

  • Returns anonymous cartId and accountId.

    Parameters

    Returns Promise<Result>

createCloneItemInCartInput

  • Create a default CloneItemInCartInput object.

    Returns CloneItemInCartInput

createCloneItemsInput

  • Create a default CloneItemsInput object.

    Returns CloneItemsInput

createConfigureAndAddInput

  • Create a default InvokeActionInput object.

    Returns ConfigureAndAddInput

createCreateCartInput

  • Create a default CreateCartInput object.

    Returns CreateCartInput

createDeleteCartItemInput

  • Create a default InvokeActionInput object.

    Returns DeleteCartItemInput

createDeleteDiscountInput

  • Create a default DeleteDiscountInput object

    Returns DeleteDiscountInput

createDeleteItemFromCartInput

createDeletePriceAdjustmentInput

createDeletePromotionInput

  • Create a default DeletePromotionInput object

    Returns DeletePromotionInput

createGetCartItemsInput

  • Create a default InvokeActionInput object.

    Returns GetCartItemsInput

createGetCartLineItemPricesInput

createGetCartSummaryInput

  • Create a default GetCartSummaryInput object.

    Returns GetCartSummaryInput

createGetCatalogsInput

  • Create a default GetCatalogsInput object.

    Returns GetCatalogsInput

createGetListsOfValuesInput

  • Create a default getListsOfValuesInput object.

    Returns GetListsOfValuesInput

createGetPriceDetailsInput

  • Create a default GetPriceDetailsInput object.

    Returns GetPriceDetailsInput

createGetProductsFromCatalogInput

createGetProductsInput

  • Create a default GetProductsInput object.

    Returns GetProductsInput

createUpdateCartItemInput

  • Create a default InvokeActionInput object.

    Returns UpdateCartItemInput

createUpdateItemAttributesInput

createWorkingCart

  • Returns the working cart details.

    example
    
    // Instantiate the input object for createWorkingCart to specify parameters
    const input = cpqSdk.createWorkingCartInput();
    input.inputMap = {contextId = "1234"effectiveDate: "2021-10-10",type: "Order"}; // use your sales quote Id or order ID
    input.ipMethod = "CPQ_CreateWorkingCart"; // pass the VIP name
    
    // Invoke CPQ_CreateWorkingCart VIP via method createWorkingCart()
    cpqSdk
      .createWorkingCart(input)
      .then(result => {
        Logger.info("Vlocity create working cart rest call" + result);
      })
      .catch(error => {
        Logger.info("Vlocity create working cart rest call failed" + error);
      });
    
    throws

    "CreateWorkingCartInput::getRequestPayload() must have contextId."

    throws

    "CreateWorkingCartInput::getRequestPayload() must have ipMethod."

    Parameters

    Returns Promise<any>

createWorkingCartInput

  • Create a default createWorkingCartInput object.

    Returns CreateWorkingCartInput

deleteCartItem

  • Delete a line item from the cart.

    Parameters

    Returns Promise<any>

deleteDiscount

  • Delete Discount from cart

    example
    
    const input = cpqSDK.createDeleteDiscountInput();
    input.cartId = validCartId;
    input.discountTemplateIds = []; // Discount ID
    input.fields = []; // optional
    input.ipMethod = validIPName // optional. Will call IP if set
    
    cpqSDK.deleteDiscount(input)
     .then(response => {
       console.log(response);
     })
     .catch(error => {
       console.log(error);
     });
    
    

    Parameters

    Returns Promise<Result>

deleteDiscountPostHook

  • deleteDiscountPostHook(input: Result): Promise<any>
  • deleteDiscount sdk post hook method

    example
    
    // How to override deleteDiscountPostHook method
    VlocitySDK.cpqSDK.override({
     deleteDiscountPostHook(input) {
       console.log('Inside override of deleteDiscountPostHook');
       // Create new response here or modify input itself
       let response = {};
       return Promise.resolve(response);
     }
    });
    
    

    Parameters

    Returns Promise<any>

deleteDiscountPreHook

  • deleteDiscount sdk pre hook method

    example
    
    // How to override deleteDiscountPreHook method
    VlocitySDK.cpqSDK.override({
     deleteDiscountPreHook(input) {
       console.log('Inside override of deleteDiscountPreHook');
       // modify input here
       return Promise.resolve(input);
     }
    });
    
    

    Parameters

    Returns Promise<DeleteDiscountInput>

deleteItemFromCart

  • Delete an item from the Cart. Both root & child items can be deleted using this API

    example
    
    const input = cpqSDK.createDeleteItemFromCartInput();
    input.cartId = Valid Line Item Id in the cart;
    input.itemId = Valid CartId;
    
    cpqSDK.deleteItemFromCart(input)
      .then(response => {
        console.log("Vlocity deleteItemFromCart response: " + response);
      })
      .catch(error => {
        console.log("Vlocity deleteItemFromCart error: " + error);
      });
    
    

    Parameters

    Returns Promise<Result>

deletePriceAdjustment

  • Deletes a price adjustment for an item in a cart

    example
    
    const input = cpqSDK.createDeletePriceAdjustmentInput();
    input.cartId = validCartId;
    input.itemId = validItemId;
    input.adjustmentId = validAdjustmentId;
    
    cpqSDK.deletePriceAdjustment(input)
     .then(response => {
       console.log('Vlocity delete price adjustment call ' + response);
     })
     .catch(error => {
       console.log('Vlocity delete price adjustment error ' + error);
     });
    
    

    Parameters

    Returns Promise<Result>

deletePriceAdjustmentPostHook

  • deletePriceAdjustmentPostHook(input: Result): Promise<any>
  • deletePriceAdjustment sdk post hook method

    example
    
    // How to override deletePriceAdjustmentPostHook method
    VlocitySDK.cpqSDK.override({
     deletePriceAdjustmentPostHook(input) {
       console.log('Inside override of deletePriceAdjustmentPostHook');
       // Create new response here or modify input itself
       let response = {};
       return Promise.resolve(response);
     }
    });
    
    

    Parameters

    Returns Promise<any>

deletePriceAdjustmentPreHook

  • deletePriceAdjustment sdk pre hook method

    example
    
    // How to override deletePriceAdjustmentPreHook method
    VlocitySDK.cpqSDK.override({
     deletePriceAdjustmentPreHook(input) {
       console.log('Inside override of deletePriceAdjustmentPreHook');
       // modify input here
       return Promise.resolve(input);
     }
    });
    
    

    Parameters

    Returns Promise<DeletePriceAdjustmentInput>

deletePromotion

  • Delete Promotion from cart

    example
    
    const input = cpqSDK.createDeletePromotionInput();
    input.cartId = validCartId;
    input.id = ""; // Promotion ID
    input.fields = []; // optional
    input.ipMethod = validIPName // optional. Will call IP if set
    
    cpqSDK.deletePromotion(input)
     .then(response => {
       console.log(response);
     })
     .catch(error => {
       console.log(error);
     });
    
    

    Parameters

    Returns Promise<Result>

deletePromotionPostHook

  • deletePromotionPostHook(input: Result): Promise<any>
  • deletePromotion sdk post hook method

    example
    
    // How to override deletePromotionPostHook method
    VlocitySDK.cpqSDK.override({
     deletePromotionPostHook(input) {
       console.log('Inside override of deletePromotionPostHook');
       // Create new response here or modify input itself
       let response = {};
       return Promise.resolve(response);
     }
    });
    
    

    Parameters

    Returns Promise<any>

deletePromotionPreHook

  • deletePromotion sdk pre hook method

    example
    
    // How to override deletePromotionPreHook method
    VlocitySDK.cpqSDK.override({
     deletePromotionPreHook(input) {
       console.log('Inside override of deletePromotionPreHook');
       // modify input here
       return Promise.resolve(input);
     }
    });
    
    

    Parameters

    Returns Promise<DeletePromotionInput>

Private getCacheType

  • Get cache type

    Parameters

    Returns string

getCartItems

  • Retrieves the cart items.

    example
    
    const input = cpqSDK.createGetCartItemsInput();
    input.cartId = validCartId;
    input.ipMethod = 'Custom VIP Name'; // If using custom VIP
    
    cpqSDK.getCartItems(input)
     .then(response => {
       console.log('Vlocity get cart items call ' + response);
     })
     .catch(error => {
       console.log('Vlocity get cart items error ' + error);
     });
    
    

    Parameters

    Returns Promise<any>

getCartItemsPostHook

  • getCartItemsPostHook(input: Result): Promise<any>
  • getCartItems sdk post hook method

    example
    
    // How to override getCartItemsPostHook method
    VlocitySDK.cpqSDK.override({
     getCartItemsPostHook(input) {
       console.log('Inside override of getCartItemsPostHook');
       // Create new response here or modify input itself
       let response = {};
       return Promise.resolve(response);
     }
    });
    
    

    Parameters

    Returns Promise<any>

getCartItemsPreHook

  • getCartItems sdk pre hook method

    example
    
    // How to override getCartItemsPreHook method
    VlocitySDK.cpqSDK.override({
     getCartItemsPreHook(input) {
       console.log('Inside override of getCartItemsPreHook');
       // modify input here
       return Promise.resolve(input);
     }
    });
    
    

    Parameters

    Returns Promise<GetCartItemsInput>

getCartLineItemPrices

  • Fetch prices of all the line items in a given cart

    example
    
    const input = cpqSDK.createGetCartLineItemPricesInput();
    input.cartId = validCartId;
    input.price = true || false;
    
    // Fields to include in response
    // If not provided, all price fields are returned
    input.priceDetailsFields = // Fields to include in response
    
    cpqSDK.getCartLineItemPrices(input)
     .then(response => {
       console.log('Vlocity get cart line item prices call ' + response);
     })
     .catch(error => {
       console.log('Vlocity get cart line item prices error ' + error);
     });
    
    

    Parameters

    Returns Promise<any>

getCartSummary

  • Retrieves the summary of a cart

    example
    
    const input = cpqSDK.createGetCartSummaryInput();
    input.cartId = validCartId;
    input.ipMethod = 'Custom VIP Name'; // If using custom VIP
    
    cpqSDK.getCartSummary(input)
     .then(response => {
       console.log('Vlocity get cart summary call ' + response);
     })
     .catch(error => {
       console.log('Vlocity get cart summary error ' + error);
     });
    
    

    Parameters

    Returns Promise<any>

getCartSummaryPostHook

  • getCartSummaryPostHook(input: Result): Promise<any>
  • getCartSummary sdk post hook method

    example
    
    // How to override getCartSummaryPostHook method
    VlocitySDK.cpqSDK.override({
     getCartSummaryPostHook(input) {
       console.log('Inside override of getCartSummaryPostHook');
       // Create new response here or modify input itself
       let response = {};
       return Promise.resolve(response);
     }
    });
    
    

    Parameters

    Returns Promise<any>

getCartSummaryPreHook

  • getCartSummary sdk pre hook method

    example
    
    // How to override getCartSummaryPreHook method
    VlocitySDK.cpqSDK.override({
     getCartSummaryPreHook(input) {
       console.log('Inside override of getCartSummaryPreHook');
       // modify input here
       return Promise.resolve(input);
     }
    });
    
    

    Parameters

    Returns Promise<GetCartSummaryInput>

getCatalogs

  • Returns a list of catalogs.

    throws

    Error - needs to be caught

    Parameters

    Returns Promise<Result>

getListsOfValues

  • Get Time Plans, Time Policies and Adjustment Codes

    example
    
    const input = cpqSDK.createApplyAdjustmentInput();
    input.cartId = validCartId; // Optional for Time Plans and Time Policies
    input.itemId = validItemId; // Optional
    input.liskeys = "AdjustmentCodes,TimePlans,TimePolicies" // Array of adjustment objects
    input.fields = vlocity_cmt__OneTimeCharge__c // Only for Adjustment Codes
    input.PricingVariableCode = OT_STD_PRC // Only for Adjustment Codes
    
    cpqSDK.applyAdjustment(input)
     .then(response => {
       console.log('Vlocity applyAdjustment call ' + response);
     })
     .catch(error => {
       console.log('Vlocity applyAdjustment error ' + error);
     });
    
    

    Parameters

    Returns Promise<Result>

getPriceDetails

  • Retrieves the price waterfall for an item in a cart

    example
    
    const input = cpqSDK.createGetPriceDetailsInput();
    input.cartId = validCartId;
    input.itemId = validItemId;
    input.fields = []; // optional
    
    cpqSDK.getPriceDetails(input)
     .then(response => {
       console.log('Vlocity get price details call ' + response);
     })
     .catch(error => {
       console.log('Vlocity get price details error ' + error);
     });
    
    

    Parameters

    Returns Promise<Result>

getPriceDetailsPostHook

  • getPriceDetailsPostHook(input: Result): Promise<any>
  • getPriceDetails sdk post hook method

    example
    
    // How to override getPriceDetailsPostHook method
    VlocitySDK.cpqSDK.override({
     getPriceDetailsPostHook(input) {
       console.log('Inside override of getPriceDetailsPostHook');
       // Create new response here or modify input itself
       let response = {};
       return Promise.resolve(response);
     }
    });
    
    

    Parameters

    Returns Promise<any>

getPriceDetailsPreHook

  • getPriceDetails sdk pre hook method

    example
    
    // How to override getPriceDetailsPreHook method
    VlocitySDK.cpqSDK.override({
     getPriceDetailsPreHook(input) {
       console.log('Inside override of getPriceDetailsPreHook');
       // modify input here
       return Promise.resolve(input);
     }
    });
    
    

    Parameters

    Returns Promise<GetPriceDetailsInput>

getProducts

  • Returns a list of products.

    Parameters

    Returns Promise<Result>

getProductsFromCatalog

  • Returns a list of products using action object from getCatalog API.

    Parameters

    Returns Promise<Result>

getPromotions

  • Returns a list of Ppromotions.

    Parameters

    Returns Promise<Result>

getUserContext

  • Get the userContext used in this CPQ SDK instance or create a new one if create is true.

    Parameters

    • create: boolean

      flag to indicate to create a new UserContext if true. Otherwise, return UserContext in the sdk.

    Returns UserContext

getVlocityCPQConfig

  • Get the CPQSDKConfig used in this CPQ SDK instance.

    Returns default

    CPQSDKConfig.

Private invokeAction

  • Invoke an action returning from API call.

    Parameters

    Returns Promise<Result>

Private invokeIntegrationProcedure

  • Returns a VIP call response.

    • @example ```typescript const input = { ipMethod: "create_WorkingCart"; // pass the VIP name, inputMap: {SalesQuoteId = "1234"} }

    // Invoke your API with invokeAction method cpqSdk .invokeIntegrationProcedure(input) .then(response => { Logger.info( "Invoke VIP Response" + response ); }) .catch(error => { Logger.info( "Invoke VIP call failed" + error ); }); ```

    throws

    Error - needs to be caught

    Parameters

    Returns Promise<any>

updateCartItem

  • Update a root bundle or line item in the cart.

    example
    const input = cpqSDK.createUpdateCartItemInput();
    input.cartId = validCartId;
    input.itemJSON = actualJSONRecord; //the actual JSONRecord that is being updated
    
    cpqSDK
      .UpdateCartItem(input)
      .then(response => {
        console.log("Vlocity UpdateCartItem response: " + response);
      })
      .catch(error => {
        console.log("Vlocity UpdateCartItem error: " + error);
      });
    

    Parameters

    Returns Promise<any>

updateItemAttributes

  • Update quantity, fields, and attributes for a specified line item in the cart. To persist changes after calling this API, you must call the Update Items in Cart API

    example
    const input = cpqSDK.createUpdateItemAttributesInput();
    input.items = JSONRecord that is being updated
    input.itemId = Valid Line Item Id in the cart;
    input.cartId = Valid CartId;
    
    cpqSDK
      .updateItemAttributes(input)
      .then(response => {
        console.log("Vlocity updateItemAttributes response: " + response);
      })
      .catch(error => {
        console.log("Vlocity updateItemAttributes error: " + error);
      });
    

    Parameters

    Returns Promise<any>

version

  • version(): string
  • Returns the version number of SDK.

    Returns string

    Returns SDK version number as string

Static createConfigForAnonymousUser

  • createConfigForAnonymousUser(authToken: string): default
  • Returns configuration for anonymous users.

    Parameters

    • authToken: string

    Returns default

Static createConfigForLoginUser

  • createConfigForLoginUser(salesforceUrl: string, sessionToken: string): default
  • Create a CPQSDKConfig object that consists of a UserContext and a DataSourceService for login user.

    example
    
    // Instantiate CPQSDKConfig for login user
    const cpqSDKConfig = VlocitySDK.cpq.createConfigForLoginUser(salesforceUrl, sessionToken);
    
    // Instantiate the SDK itself
    const cpq = VlocitySDK.cpq.getInstance(cpqSDKConfig);
    

    Parameters

    • salesforceUrl: string
    • sessionToken: string

    Returns default

    Configuration object to instantiate SDK.

Static extend

  • extend(extendObj: object): void
  • Adds all the enumerable string keyed function properties of a source object to the sdk prototype. .extend should only be used to add new methods and it won't override the existing methods.

    Note: If the property already exists, it will be not be added.

    Custom functions which are being extended should have proper namespaces to avoid issues during upgrades. When Vlocity releases new changes it won't impact if unique namespaces are used.

    Example: myCompanyOrFeatureMethodName

    example

    How to extend an sdk?

    VlocitySDK.datasource.extend({ myCompanySayHello(){
         console.log("Hello World");
      }, sayTime() {
         console.log(new Date().myCompanyGetTime());
      }});
    
    const dataSource = VlocitySDK.datasource.getInstance({'create':true});
    console.log(daSource.myCompanySayHello())
    

    Parameters

    • extendObj: object

      The object of functions

    Returns void

Static getInstance

  • Get an instance of this SDK.

    Parameters

    Returns default

    CPQ SDK instance.

Static override

  • override(overrideObj: object): void
  • Adds all the enumerable string keyed function properties of a source object to the sdk prototype.

    .override method should only be used to override the existing methods and should only be used in rare cases. Overriding the existing or default methods may cause unintended consequences and may also impact during upgrades.

    Please be cautious while using this

    example

    How to override methods in an sdk?

    VlocitySDK.datasource.override({ soql(){
         console.log("This code overrides the default soql function");
         // code goes here...
      }, sosl() {
         console.log("This code overrides the default soql function");
         // code goes here...
      }});
    
    const dataSource = VlocitySDK.datasource.getInstance({'create':true});
    console.log(dataSource.soql()); // prints "This code overrides the default soql function"
    

    Parameters

    • overrideObj: object

      The object of functions

    Returns void

Generated using TypeDoc