CartJS - Scoped

  • Release version: Zurich
  • Updated July 31, 2025
  • 8 minutes to read
  • The CartJS API provides methods that enable you to access a user's shopping cart.

    This API runs in the sn_sc namespace. The Service Catalog Scoped API plugin (ID: com.glideapp.servicecatalog.scoped.api) that is enabled by default is required to access the CartJS API.

    CartJS - CartJS(String cartName)

    Creates an instance of the CartJS class with the name of a defined cart for the user who is currently logged in.

    Table 1. Parameters
    Name Type Description
    cartName String Optional. Name of a defined cart for the user who is currently logged in.
    var cart = new sn_sc.CartJS(cart1);

    CartJS - addToCart(Map request)

    Adds the request for a catalog item to the current cart.

    Table 2. Parameters
    Name Type Description
    request Map A JSON object that contains the details of the catalog item to be added to the cart.

    The structure of the request object is:

    {
    'sysparm_id': item_id,
    'sysparm_quantity': item_quantity,
    'variables':{
    'var_name': 'var_value',
    ...
    }
    }
    • item_id: sys_id of the item to be added to the cart
    • item_quantity: Number of items to be added. Default value is 1.
    • var_name: Name of the question.
    • var_value: Value of the answer (Not the display value).
    Table 3. Returns
    Type Description
    JSON Structure of the current cart.
    {
    'subtotal': value,
    'items':[
    {
    itemName:'',
    quantity:'', 
    price:'', 
    recurring_price:''
    } ...]
    }

    This example shows how you can add multiple items to the cart. Note that var cart = new sn_sc.CartJS(); is inside the loop. You must call sn_sc.CartJS() multiple times to be able to add multiple items to the cart.

    for (i = 0; i < 2; i++) { 
    var cart = new sn_sc.CartJS();
    var item =
    {
    'sysparm_id': '0d08837237153000158bbfc8bcbe5d02',
    'sysparm_quantity': '1',
    'variables':{
    'carrier': 'at_and_t_mobility',
    'data_plan': '500MB',
    'duration': 'eighteen_months',
    'color': 'slate',
    'storage': 'sixtyfour' 
    }};
    var cartDetails = cart.addToCart(item);
    gs.info(JSON.stringify(cartDetails));
    }

    Output

    //The cart after the first item is added
    {
      "cart_id": "c0f5828a1b476010593876a61a4bcb71",
      "subtotal": "$599.99",
      "items": [
        {
          "catalog_item_id": "0d08837237153000158bbfc8bcbe5d02",
          "quantity": "1",
          "localized_price": "$599.99",
          "price": "$599.99",
          "recurring_frequency": "Monthly",
          "localized_recurring_price": "$30.00",
          "recurring_price": "$29.00",
          "item_name": "Apple iPhone 5",
          "cart_item_id": "40f5828a1b476010593876a61a4bcb72"
        }
      ]
    }
    
    //The cart after the second item is added
    {
      "cart_id": "c0f5828a1b476010593876a61a4bcb71",
      "subtotal": "$1,199.98",
      "items": [
        {
          "catalog_item_id": "0d08837237153000158bbfc8bcbe5d02",
          "quantity": "1",
          "localized_price": "$599.99",
          "price": "$599.99",
          "recurring_frequency": "Monthly",
          "localized_recurring_price": "$30.00",
          "recurring_price": "$29.00",
          "item_name": "Apple iPhone 5",
          "cart_item_id": "40f5828a1b476010593876a61a4bcb72"
        },
        {
          "catalog_item_id": "0d08837237153000158bbfc8bcbe5d02",
          "quantity": "1",
          "localized_price": "$599.99",
          "price": "$599.99",
          "recurring_frequency": "Monthly",
          "localized_recurring_price": "$30.00",
          "recurring_price": "$29.00",
          "item_name": "Apple iPhone 5",
          "cart_item_id": "98f5828a1b476010593876a61a4bcb75"
        }
      ]
    }

    CartJS - canViewRF()

    Specifies if the current user has the required role to edit the Request for field.

    Table 4. Parameters
    Name Type Description
    None
    Table 5. Returns
    Type Description
    Boolean Flag that indicates whether the user has the required role to edit the requested for field.

    Possible values:

    • true: User has the required role.
    • false: User does not have the required role.

    Data type: Boolean

    This background script code example shows how to check if the current user has the role needed to edit the requested for field.

    gs.log(sn_sc.CartJS.canViewRF());

    Response:

    true

    CartJS - checkoutCart()

    Performs the cart checkout. If the two-step checkout is enabled, returns the order summary. If the two-step checkout is disabled, the cart is submitted and details of the generated request are returned.

    Table 6. Parameters
    Name Type Description
    None
    Table 7. Returns
    Type Description
    JSON If the two-step checkout is enabled, the summary of the items in the cart is returned.
    { "subtotal_price":"",
      "subtotal_recurring_frequency":"",
      "delivery_address":"",
      "special_instructions":"",
      "total_title":"",
      "requested_for_user":"System Administrator",
      "requested_for":"6816f79cc0a8016401c5a33be04be441",
      "daily": ["frequency_subtotal":"", "items":[{}, {}, ...], …],
      "monthly":["frequency_subtotal":"", "items":[{}, {}, ...], …],
      "annually":["frequency_subtotal":"", "items":[{}, {}, ...], …],
      "none":["frequency_subtotal":"", "items":[{}, {}, ...], …],
    }
    If the two-step checkout is disabled:
    {
      'request_id' : "sys_id of the generated request",
      "request_number" : "Number of the generated request"
    }
    var cart = new sn_sc.CartJS();
    var checkoutInfo = cart.checkoutCart();
    gs.info(checkoutInfo);
    

    Output

    If two step checkout enabled:
    {"subtotal_price":"$2,748.49","subtotal_recurring_frequency":"","delivery_address":"","special_instructions":"","total_title":"Total","requested_for_user":"System Administrator","requested_for":"6816f79cc0a8016401c5a33be04be441","weekly":{"subtotal_price":"$399.50","subtotal_recurring_frequency":"Weekly","subtotal_recurring_price":"$0.00","total_title":"Total","items":[{"catalog_item_id":"e90a0f7237153000158bbfc8bcbe5d7f","variables":{},"quantity":"1","localized_price":"$399.50","price":"$399.50","recurring_frequency":"Weekly","localized_recurring_price":"$0.00","recurring_price":"$0.00","item_name":"Brother Network-Ready Color Laser Printer","cart_item_id":"f3f5c9b3c322320076173b0ac3d3ae00","delivery_time":"2 Days"}],"show_subtotal_price":"true","subtotal_title":"Subtotal"},"show_subtotal_price":"true","cart_id":"251c0562c326320076173b0ac3d3aeb4","subtotal_recurring_price":"$131.00","monthly":{"subtotal_price":"$849.99","subtotal_recurring_frequency":"Monthly","subtotal_recurring_price":"$31.00","total_title":"Total","items":[{"catalog_item_id":"d82ea08510247200964f77ffeec6c4ee","variables":{"Monthly data allowance":"500MB","Storage":"64GB","Color":"Space Gray","Is this a replacement for a lost or broken iPhone?":"No","What was the original phone number?":""},"quantity":"1","localized_price":"$799.99","price":"$849.99","recurring_frequency":"Monthly","localized_recurring_price":"$30.00","recurring_price":"$31.00","item_name":"Apple iPhone 6s Plus","cart_item_id":"18c509b3c322320076173b0ac3d3aef4","delivery_time":"2 Days"}],"show_subtotal_price":"true","subtotal_title":"Subtotal"},"yearly":{"subtotal_price":"$1,499.00","subtotal_recurring_frequency":"Annually","subtotal_recurring_price":"$100.00","total_title":"Total","items":[{"catalog_item_id":"774906834fbb4200086eeed18110c737","variables":{"Adobe Photoshop":"false","Adobe Acrobat":"false","Optional Software":"","Additional software requirements":"","Eclipse IDE":"true"},"quantity":"1","localized_price":"$1,499.00","price":"$1,499.00","recurring_frequency":"Annually","localized_recurring_price":"$100.00","recurring_price":"$100.00","item_name":"Developer Laptop (Mac)","cart_item_id":"6306c9b3c322320076173b0ac3d3ae89","delivery_time":"5 Days"}],"show_subtotal_price":"true","subtotal_title":"Subtotal"},"subtotal_title":"Subtotal"}
    If two step checkout disabled:
    {"request_number":"REQ0010001","request_id":"2f2789f3c322320076173b0ac3d3ae62"}
    

    CartJS - empty()

    Deletes the current cart.

    Table 8. Parameters
    Name Type Description
    None
    Table 9. Returns
    Type Description
    void
    var cart = new sn_sc.CartJS();
          cart.empty();

    CartJS - getCartDetails()

    Returns the cart details.

    Table 10. Parameters
    Name Type Description
    None
    Table 11. Returns
    Type Description
    Object Object pointing to the current cart details.

    Example:

    var cart=new sn_sc.CartJS();
    	console.log (cart.getCartDetails());

    Output:

    delivery_address : "Brasilia,Brasil" 
            name : "DEFAULT" 
            requested_for : "62826bf03710200044e0bfc8bcbe5df1" 
            requested_for_display_name : "Abel Tuter" 
            special_instructions : "" 
            sys_id : "c2ac090087150300318d05a888cb0bd7" 
    

    CartJS - getCartID()

    Returns the ID of the current cart.

    Table 12. Parameters
    Name Type Description
    None
    Table 13. Returns
    Type Description
    String Sys_id for the current cart.

    Returns the sys_id of the current cart.

    var cart = new sn_sc.CartJS();
    var cartId = cart.getCartID();
    gs.info(cartId);

    Output

    039c516237b1300054b6a3549dbe5dfc

    CartJS - getCartItems()

    Returns a GlideRecord object containing records for items in the current cart.

    Table 14. Parameters
    Name Type Description
    None
    Table 15. Returns
    Type Description
    GlideRecord GlideRecord object including records and fields from the Item [sc_cart_item] table that describe an item in the current cart.

    Returns quantity and Catalog Item field values for items in the current cart.

    var cart = new sn_sc.CartJS();
    
    var cartItems = cart.getCartItems();
    while (cartItems.next()) {
      gs.info(cartItems.getElement('quantity').getDisplayValue()
      + " x "
      + cartItems.getElement('cat_item').getDisplayValue());
    }

    Output

    
    1 x Apple iPhone 6s Plus
    1 x Apple iPhone 6s
    1 x Apple MacBook Pro 15"

    CartJS - getDeliveryAddress()

    Returns the delivery address for the current cart.

    Table 16. Parameters
    Name Type Description
    None
    Table 17. Returns
    Type Description
    String Delivery address for the current cart.

    Sets and then returns the delivery address for the current cart.

    var cart = new sn_sc.CartJS();
    cart.setDeliveryAddress("Brasilia, Brasil");
    var deliveryAddress = cart.getDeliveryAddress();
    gs.info(deliveryAddress);

    Output

    Brasilia, Brasil

    CartJS - getRequestedFor()

    Returns the sys_id of the user for whom the cart is requested.

    Table 18. Parameters
    Name Type Description
    None
    Table 19. Returns
    Type Description
    String Sys_id of the user record for whom the cart is requested.

    Table: User [sys_user]

    Returns the user sys_id associated with the cart.

    var cart = new sn_sc.CartJS();
    cart.setRequestedFor("039c516237b1300054b6a3549dbe5dfc")
    var userId = cart.getRequestedFor();
    gs.info(userId);

    Output:

    039c516237b1300054b6a3549dbe5dfc

    CartJS - getRequestedForDisplayName()

    Returns the name of the user for whom the current cart is requested.

    Table 20. Parameters
    Name Type Description
    None
    Table 21. Returns
    Type Description
    String Name of the user for whom the current cart is requested.

    Table: User [sys_user]

    Returns the name of the user associated with the cart.

    var cart = new sn_sc.CartJS();
    var userName = cart.getRequestedForDisplayName();
    gs.info(userName);

    Output:

    Abel Tuter

    CartJS - getSpecialInstructions()

    Returns the special instructions for the current cart.

    Table 22. Parameters
    Name Type Description
    None
    Table 23. Returns
    Type Description
    String Special instructions for the current cart.

    This example shows how to set and retrieve the special instructions for the current cart.

    var cart = new sn_sc.CartJS();
    cart.setSpecialInstructions("Delivery before 8 AM.");
    var specInstruction = cart.getSpecialInstructions();
    gs.info(specInstruction);

    Output

    Delivery before 8 AM.

    CartJS - orderNow(Map request)

    Orders a single item. If two-step checkout is enabled, the method adds the specified item to the cart and returns the sys_id of the cart. If two-step checkout is disabled, the method completes the purchase of the specified item and returns the sys_id of the generated request.

    Table 24. Parameters
    Name Type Description
    request Map JSON object that contains details of the catalog item to order.
    request.delivery_address String Address to which to deliver the items.

    Default: Address of user

    request.sysparm_id String Required. The sys_id of the item to purchase.
    request.special_instructions String Instructions to follow when processing the order.
    request.sysparm_quantity String Quantity of the specified item to purchase.

    Default: 1

    request.sysparm_requested_for String The sys_id of the user for whom the item is requested.

    Default: Session user

    request.variables Array Questions and customer answers associated with the item.
    request.variables.var_name String Name of the question.
    request.variables.var_value String Customer's response to the associated question.
    Table 25. Returns
    Type Description
    JSON key/value pairs Output if two-step checkout is enabled:
    {
      'cart_id' : '<sys_id of the cart to which the items were added>'
    }

    Output if two-step checkout is disabled:

    {
      'request_id' : '<sys_id of the generated request>',
      'request_number' : '<Number of the generated request>'
    }
    
    var cart = new sn_sc.CartJS();
    var request =
    {
      'sysparm_id': '0d08837237153000158bbfc8bcbe5d02',
      'sysparm_quantity': '1',
      'variables':{
        'carrier': 'at_and_t_mobility',
        'data_plan': '500MB',
        'duration': 'eighteen_months',
        'color': 'slate',
        'storage': 'sixtyfour'
      }
    }
    var cartDetails = cart.orderNow(request);
    gs.info(cartDetails);

    Output

    
    // If two-step checkout is enabled:
    {"cart_id":"55384df3c322320076173b0ac3d3aec5"}
    
    // If two-step checkout is disabled:
    {"request_id":"4c690137c322320076173b0ac3d3ae03", "request_number": "REQ0010003"}

    CartJS - setDeliveryAddress(String address)

    Sets the delivery address for the current cart.

    Table 26. Parameters
    Name Type Description
    address String Delivery address for the current cart.
    Table 27. Returns
    Type Description
    void
    
          var cart = new sn_sc.CartJS();
          cart.setDeliveryAddress("Brasilia, Brasil"); 
          

    CartJS - setRequestedFor(String user)

    Sets the sys_id in the sys_user record of the user for whom the cart is requested.

    Table 28. Parameters
    Name Type Description
    user String sys_id to be set in the sys_user record of the user for whom the cart is requested.
    Table 29. Returns
    Type Description
    void
    
    var cart = new sn_sc.CartJS();
    cart.setRequestedFor("039c516237b1300054b6a3549dbe5dfc")
    

    CartJS - setSpecialInstructions(String specialInstructions)

    Sets the special instructions for the current cart.

    Table 30. Parameters
    Name Type Description
    specialInstructions String Special instructions for the current cart.
    Table 31. Returns
    Type Description
    void
    
          var cart = new sn_sc.CartJS();
          cart.setSpecialInstructions("Delivery before 8 AM."); 
       

    CartJS - submitOrder(Map request)

    Updates special instructions, requested for, and delivery address from the request parameter and performs the cart checkout. Use this API to modify the mentioned parameters of the cart and perform the cart checkout simultaneously. Missing parameters in the request object will have their default value.

    Table 32. Parameters
    Name Type Description
    request Map JSON object that contains details of the cart to be submitted.
    {
      'special_instructions': "String",
      'requested_for': '"String",
      'delivery_address': "String"
    }
    request.special_instructions String Special instructions to include with the order.
    request.requested_for String Sys_id of the user who the order is requested for.

    Default: The current user.

    Table: User [sys_user]

    request.delivery_address String Delivery address for the order.
    Table 33. Returns
    Type Description
    JSON Structure of the cart.
    {
      'request_id' : 'sys_id of the generated Request',
      'request_number' : 'Number of the generated Request'
    }

    The following code example shows how to call this method.

    var cart = new sn_sc.CartJS();
    var request =
    {
      'special_instructions' : 'Delivery only in working hours',
      'requested_for' : '62826bf03710200044e0bfc8bcbe5df1',
      'delivery_address' : "Brasilia, Brasil",
    };
    var requestDetails = cart.submitOrder(request);
    gs.info(JSON.stringify(requestDetails));

    Output:

    {"request_id":"6eed229047801200e0ef563dbb9a71c2", "request_number": "REQ0000001"}

    CartJS - updateItem(Map request, String cart_item_id)

    Updates an item in the cart.

    Table 34. Parameters
    Name Type Description
    request Map A JSON object that contains details of the catalog item to be updated.

    The structure of the request object is:

    {
        'sysparm_quantity' : item_quantity,
      'sysparm_requested_for' : requested_for,
      'variables' : {
        'var_name' : 'var_value',
        ...
      }
    }
    • item_quantity: Number of items to be added. Default value is 1.
    • var_name: Name of the question.
    • var_value: Value of the answer (Not the display value).
    cart_item_id String sys_id of the cart item to be modified.
    Table 35. Returns
    Type Description
    JSON Details of the cart.
    {
      'subtotal': value,
      'items':[
        {
        itemName:'',
        quantity:'',
        price:'',
        recurring_price:''
        }
        ...],
      ...
    }
    var cart = new sn_sc.CartJS();
    var request =
    {
      'sysparm_quantity': '1',
      'variables':{
        'carrier': 'at_and_t_mobility',
        'data_plan': '500MB',
        'duration': 'eighteen_months',
        'color': 'slate',
        'storage': 'sixtyfour'
      }
    };
    var cart_item_id = "4d69b672c322320076173b0ac3d3ae79";
    var cartDetails = cart.updateItem(request, cart_item_id);
    gs.info(cartDetails);
    

    Output

    
    { "cart_id":"35ec9e8947a13200e0ef563dbb9a7109", "items":[ { "cart_item_id":"35ec9e8947a13200e0ef563dbb9a710a", "catalog_item_id":"0d08837237153000158bbfc8bcbe5d02", "item_name":"Apple iPhone 5", "localized_price":"$799.99", "localized_recurring_price":"$30.00", "price":"$799.99", "quantity":"1", "recurring_frequency":"Monthly", "recurring_price":"$29.00" } ] "subtotal":"$799.99" }