NAV Navbar
json
  • Introduction
  • Using Our API
  • Authentication
  • Application
  • Orders
  • Groups
  • Objects
  • Introduction

    This API documentation describes the endpoints available when building a custom Manage Subscription Page for the Bold Subscriptions app (Recurring Orders).

    The Manage Subscription Page makes it possible for a merchant's customers to view, modify, or cancel existing subscriptions. To access the page, users must already be authenticated via the Shopify store. To enable a custom Manage Subscription Page for your client, install the Bold Subscriptions app and request access to this feature under the Manage Subscription Page Setting.

    API Examples

    These API reference docs are meant to clearly define the URLs, parameters, request bodies, responses and error states of the Recurring Orders Manage Subscription API.

    For instance, the following HTTPS request representation:

    GET /manage/subscription/orders/{order_id}/products HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json
    

    The response section immediately follows the request and outputs both the HTTP response code:

    HTTPS/1.1 200 OK
    

    as well as the response:

    {  
       "status":200,
       "success":true,
       "message":"OK",
       "data":{  
          "id":1,
          "products":{...},
          "order":{...},
          "coupon":null,
          "taxes_included":true,
          "has_prepaid":true
       }
    }
    

    Variables

    Request Parameter variables are displayed as {parameter} with the documentation.

    You can find the associated/response definitions along side the examples in the element tables.

    Using Our API

    Manage Subscription API authenticated endpoint prefix

    "/tools/checkout/api"
    

    All calls must be made to the Manage Subscription API using HTTP Bearer Authentication flow over HTTPS.

    All Manage Subscription API requests are made through Shopify proxy requests. This means that you can make relative calls on the storefront. By default, the Bold Subscriptions applications proxy prefix is /tools/checkout. Merchants are able to configure this prefix in the app settings on the app list page on Shopify.

    Endpoints

    GET /manage/subscription/endpoint?customer_id={customer_id}&t={current_timestamp} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json
    

    Ensure you have set Content-Type: application/json header so requests do not fail. You must also include your customer ID as a GET parameter for each request.

    All our endpoints return a JSON body type. JSON endpoints examples are contained in the json tab of the code column in the document.

    All of our JSON responses have a standard format. The response data includes all data returned from the endpoint.

    Request Parameters

    Parameter Type In Description Required
    customer_id integer query Shopify Customer ID true
    t timestamp query Current timestamp
    (Used to avoid Shopify caching the responses of API endpoints)
    true

    Responses

    Example success response

    {  
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "order_products": {}
       }
    }
    

    Example error response

    {  
       "status": 400,
       "success": false,
       "message": "Bad Request",
       "errors": {
        "message": "Unable to find a valid discount matching the code entered",
       }
    }
    

    Response Body

    Element Description
    status The status of the HTTP response
    success Boolean value: true/false
    message Default message of the HTTP response
    data Returned data from request (only for "success": true responses)
    errors Array of errors (only for "success": false responses)

    Authentication

    The Manage Subscriptoin API uses a Bearer Authentication scheme. The bearer token is a cryptic string, generated by the server in response to a login request. The client must send this token in the BOLD-Authorization header when making requests to protected resources

    Get Token

    GET /tools/checkout/api/auth/token HTTPS/1.1
    Content-Type: application/json
    
    HTTPS/1.1 200 OK
    

    This endpoint gets an authorization token.

    GET /tools/checkout/api/auth/token

    Example response

    {
       "status":200,
       "success":true,
       "message":"OK",
       "data": { 
          "token":"ABCDEF"
       }
    }
    

    Data Object

    Element Type Description
    token string Recurring Orders API Token

    Once you have an access token, include it in the BOLD-Authorization header for every request you make:

    BOLD-Authorization: Bearer {token}

    The header name is BOLD-Authorization and the value of the header is Bearer {token}. Since the access token is being transmitted in clear text, all API calls are done over HTTPS.

    Application

    Get Load App

    GET api/manage/subscription/app HTTPS/1.1
    Content-Type: text/html

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    <!-- THEME SPECIFIC CODE -->
    <div id="manage-subscription-root"></div>
    <script src="https://www.shopify.com/services/countries.js"></script>
    <script>
        var manageSubscription = {
            shopifyCustomerId: 123,
            proxyEndpoint: '/tools/checkout',
            acceptLanguageHeader: 'en-US,en;q=0.9',
            initialState: {
                data: {
                    customer: {
                        firstName: 'First',
                        lastName: 'Last',
                    },
                    translations: {
                        frequency_interval_updated_message: 'Your order frequency was successfully updated!',
                        frequency: 'Select Frequency',
                        next_ship_date_updated_message: 'Your next order date was successfully updated!',
                        ...
                    }
                }
            }
        };
    </script>
    <script type="text/javascript" src=""></script>
    <!-- THEME SPECIFIC CODE -->
    

    This endpoint is used as the HTML root of the Manage Subcsription Page. Customers are directed to /tools/checkout/api/manage/subscription/app which loads this HTML code inside of the stores theme code. Inside of this code there is

    Once the bundle file is loaded it should first get an Authorization token and then load the initial data using that token to begin rendering a customers manage subscription page.

    Get Initial Data

    GET api/manage/subscription/initial_data HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "orders": [
             {
                "id": 1,
                "shopify_customer_id": 1,
                "interval_number": 1,
                "interval_type_id": 1,
                "first_name": "FirstName",
                "last_name": "LastName",
                "customer_email": "customer@email.com",
                "idempotency_key": "",
                "shopify_cart_token": "1",
                "address1": "Address1",
                "address2": null,
                "country": "Country",
                "province": "Province",
                "city": "City",
                "zip": "Zip",
                "phone": "1111111111",
                "company": "Bold",
                "purchase_date": "2018-06-12",
                "delete_date": null,
                "last_ship_date": "2018-06-12",
                "next_ship_date": "2018-06-12",
                "discount_code_id": 0,
                "cancel_discount_code_id": 0,
                "billing_first_name": "FirstName",
                "billing_last_name": "LastName",
                "billing_address1": "Address1",
                "billing_address2": "Apt 102",
                "billing_country": "Country",
                "billing_province": "Province",
                "billing_city": "City",
                "billing_zip": "Zip",
                "billing_phone": "1111111111",
                "billing_company": "Bold",
                "notes": null,
                "taxes_included": 0,
                "tax_shipping": 0,
                "attributes": "[]",
                "is_cancellable": 1,
                "cancel_reason": null,
                "reactivatable": false,
                "next_active_ship_date": null,
                "billing_plan_id": 0,
                "order_day": null,
                "last_updated": "2018-06-12 11:11:51",
                "order_logs": [
                   {
                      "shopify_order_num": "#1",
                      "shopify_order_token": "1",
                      "price": "1.00",
                      "tax": "1.00",
                      "shipping": "1.00",
                      "purchase_date": "2018-06-12",
                      "share_shipping": false,
                      "discount_amount": "0.00",
                      "free_shipping_discount_applied": 0,
                      "charged_amount": "1.00"
                   }
                ],
                "order_product_exceptions": [
                   {
                      "date": "2018-07-12",
                      "products": [
                         {
                            "product_internal_id": 1,
                            "quantity": 8
                         }
                      ]
                   }
                ],
                "order_interval_type": {
                   "interval_type": "day",
                   "interval_text": "Day",
                   "estimated_days": 1
                },
                "order_fixed_recurrences": null,
                "order_products": [
                   {
                      "id": 1,
                      "bold_order_id": 1,
                      "product_id": 111,
                      "variant_id": 222,
                      "price": "1.00",
                      "quantity": 1,
                      "gram": 0,
                      "product_title": "ProductTitle",
                      "variant_title": "VariantTitle",
                      "status": 0,
                      "price_changed": 0,
                      "shopify_price": "1.00",
                      "shopify_new_price": null,
                      "sku": "",
                      "shopify_inventory": null,
                      "inventory_management": null,
                      "taxable": 1,
                      "properties": "{\u0022frequency_num\u0022:\u00227\u0022,\u0022frequency_type\u0022:\u00221\u0022,\u0022group_id\u0022:\u00226\u0022,\u0022is_prepaid\u0022:\u0022\u0022,\u0022total_recurrences\u0022:\u0022\u0022,\u0022prepaid_id\u0022:\u0022\u0022,\u0022recurr_after_limit\u0022:\u00221\u0022,\u0022_ro_subscription_box_choices\u0022:[{\u0022slot\u0022:\u002211\u0022,\u0022quantity\u0022:\u00222\u0022},{\u0022slot\u0022:\u002212\u0022,\u0022quantity\u0022:\u00221\u0022}],\u0022_ro_billing_plan\u0022:0,\u0022frequency_type_text\u0022:\u0022Day(s)\u0022}",
                      "vendor": "VendorName",
                      "is_active": true,
                      "last_updated": "2018-06-12 11:06:23",
                      "properties_group_id": 6
                   }
                ],
                "order_shipping_rate": {
                   "bold_order_id": 1,
                   "code": "DOM.EP",
                   "name": "ShipName",
                   "price": 1.00,
                   "source": "shopify",
                   "need_change": false,
                   "hash": "123"
                },
                "order_exceptions":[
                   "2018-08-12",
                   "2018-09-12"
                ],
                "order_hooks": [
                   {
                      "bold_product_id": 111,
                      "conditions": [
                         {
                            "condition_type": "countdown",
                            "condition_value": "8"
                         }
                      ],
                      "title": "Switch Price",
                      "new_price": null
                   }
                ],
                "next_orders": ["2018-06-12",...],
                "is_billing_the_same": true,
                "build_a_box_next_orders": [
                   {
                      "date": "2018-06-12",
                      "status": "See details in Build a Box Statuses table",
                      "choices": [
                         {
                            "slot_id": 1,
                            "product_id": 111,
                            "variant_id": 222,
                            "quantity": 1
                         },{...},{...}],
                   },{...},{...}],
                "build_a_box": true,
                "has_prepaid": false,
                "group_id": 1,
                "discount": null,
                "discount_queue": [
    ], "status": 0 }, {...}, {...} ], "general_settings": { "recurring_type": 2, "cancel_mode": 1, "provide_cancel_incentives_enabled": false, "custom_cancel_message_enabled": false, "custom_cancel_message": null, "shop_name": "", "allow_change_shipping_date": true, "allow_change_discounts": true, "allow_manage_prepaid": false, "bold_token": "123", "bold_signature": "123", "select_products_url": "https:\/\/test.myshopify.com\/tools\/checkout\/manage_subscription_box\/select_products\/", "gateway_name": "", "gateway_token": "token", "disallowed_line_item_properties": [...], }, "groups":[ { "id":6, "frequency_info": { "frequency_max": 7, "frequency_types": [ { "interval_id": 1, "interval_type": "day", "interval_text": "Day", "estimated_days": 1 } ], "is_fixed_interval": true } },{...},{...}], "countries": [ { "code": "CA", "country_id": 54200369218, "name": "Canada", "tax": 0.05, "tax_name": "GST" },{...},{...}], "products": [ { "product_id": 111, "handle": "Product1" },{...},{...}] } }

    This endpoint retrieves all information needed to render a specific customer's manage subscription page.

    GET api/manage/subscription/initial_data

    Data Object

    Element Description
    orders Array of all the Initial Data Orders Object associated to a customer
    general_settings General Settings Object containing the Recurring Orders App settings for the shop
    groups The subscription group information for the subscriptions
    countries List of available countries
    products Array of all products appearing in the orders above

    Orders

    Add Products

    POST api/manage/subscription/orders/{order_id}/products?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "new_order_products": [ { "shopify_product_id": 111111, "shopify_variant_id": 222222, "quantity": 3, }, { "shopify_product_id": 333333, "shopify_variant_id": 444444, "quantity": 1, }, ],
    "order_shipping_rate": { "code": "Free Shipping", "name": "Free Shipping", "price": "0.00", "source": "shopify", "need_change": false, "hash": "2abcbdea0deff6e6d85b506c247dbebf4475b41358e023f7b3781230ff423c9c5692c5fcf4f643bfca48bdd0759687e4c3c0401da376ee8da4471a7617f5f43b", }, "one_time": false }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "order_products": [
             {...}, {...} 
          ],
          "order_product_exceptions": [
             {...}, {...}
          ],
          "order_shipping_rate": {
             "bold_order_id": 1,
             "code": "Free Shipping",
             "name": "Free Shipping",
             "price": "0.00",
             "source": "shopify",
             "need_change": false,
             "hash": "hash"
          }
       }
    }
    

    This endpoint allows you to add products to a subscription. These products can be added as recurring products or added only for the next shipment. You can add a maximum of 20 products at a time. If a product is already on a subscription the quantity would be updated. To add a product as a one time product to just the next shipment then set the flag "one_time" = true in the request body. You can only set the one time flag if you are adding a new product, or adding additional product quantities to the order.

    POST api/manage/subscription/orders/{order_id}/products

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Sub Element Type Description
    new_order_products
      shopify_product_id integer Shopify Product ID
      shopify_variant_id integer Shopify Variant ID
      quantity integer Product Quantity
    order_shipping_rate   Object
      bold_order_id integer Subscription Order ID
      code string Order Shipping Code
      name string Order Shipping Name
      price string Shipping Price
      source string Shipping Source
    for example: shopify, cashier, decimal etc.
      need_change integer 0/1
      hash string Shipping Hash
    one_time   boolean Add products to next upcoming shipment only

    Data Object

    Element Type Description
    id integer Subscription Order ID
    order_hooks array List of Order Hook Objects
    order_products array List of Order Product Object
    order_product_exceptions array List of Order Product Exceptions Object
    order_shipping_rate object Order Shipping Object

    Cancel Subscription

    DELETE api/manage/subscription/orders/{order_id}?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "cancel_reason": "I want to delete the order" }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "Order Deleted",
       "data": {
          "id": 1
       }
    }
    

    This endpoint cancels the specified subscription. When a subscription is cancelled we clear all records of order skips and changes to product quanities for specific upcoming shipments. Most subscriptions can be reactivated if you would like orders to process in the future. You can reactivate a subscription through the Bold Subscription admin.

    DELETE api/manage/subscription/orders/{order_id}

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Type Description
    cancel_reason string Reason of cancellation provided by the customer

    Data Object

    Element Type Description
    id integer Subscription Order ID

    Get Cancellation Offers

    GET api/manage/subscription/orders/{order_id}/cancellation_offers?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "id": "1",
       "reasonId": "1",
       "manageOffers": [
          {
             "id": 3,
             "offer_type": 2,
             "discount_code_id": null,
             "cancel_reason_id": 1
          }
       ],
       "discountOffers": [
          {
             "id": 5,
             "type": 2,
             "discount_code": "CANCELCODE",
             "useable_time": 200,
             "only_first_discount": 0,
             "discount_type": 2,
             "discount_amount": "2.00",
             "discount_condition": 0,
             "discount_condition_amount": "0.00",
             "free_shipping_amount": "0.00",
             "free_shipping_country_id": 1,
             "free_shipping_country": "All countries",
             "start_date": "2017-03-24",
             "end_date": "0000-00-00",
             "used": 0,
             "status": 0,
             "deleted": 0,
             "once_per_customer": 0,
             "eligible_product_list": "",
             "id_parent": 0,
             "cancel_id": 1,
             "offer_type": 1,
             "cancel_reason_id": 1
          }
       ]
    }
    

    In the Bold Subscriptions admin you can set up different cancellation flows that your customer wil experience when they go to cancel their subscription. In your cancellation flow you can provide your customers with incentives to keep their subscription, like discount codes they can add to their subscription. This endpoint returns valid cancellation incentives for the given subscription.

    GET api/manage/subscription/orders/{order_id}/cancellation_offers

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID
    reason_id integer Cancellation Reason ID

    Response Data

    Element Type Description
    id integer Subscription Order ID
    reasonId integer Cancellation Reason ID
    manageOffers array List of Discount Manage Offers Object
    discountOffers array List of Discount Offer Objects

    Get Order Credit Card

    GET api/manage/subscription/orders/{order_id}/card?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "credit_card": {
            "expiry_date": "2020-06-30",
            "last_four": 4532
          }
       }
    }
    

    This endpoint gets the basic credit card information associated with the subscription.

    GET api/manage/subscription/orders/{order_id}/card

    Response Data

    Element Sub Element Type Description
    id integer Subscription Order ID
    credit_card array
      expiry_date date Credit Card Expiry date
      last_four integer Last 4 Credit Card digits

    Get Order Cashier Credit Cards

    GET api/manage/subscription/orders/{order_id}/cashier_card_data?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "cashier_cards": [
             {
                "public_id": "public_id_1",
                "cc_type": "VISA",
                "expiration": {
                   "date": "2024-04-30 00:00:00.000000",
                   "timezone_type": 3, 
                   "timezone": "UTC"
                }, 
                "last_four": "4242", 
                "is_default": true
             }
          ],
          "cashier_selected_card_id": "public_id_1"
       }
    }
    

    This endpoint gets the list of Cashier credit cards information. TODO

    GET api/manage/subscription/orders/{order_id}/cashier_card_data

    Response Data

    Element Type Description
    id integer Subscription Order ID
    cashier_cards array List of Cashier Card Object
    cashier_selected_card_id string Selected card Public ID

    Get Discounts

    GET api/manage/subscription/orders/{order_id}/discounts?customer_id={shopify_customer_id}  HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 15,
          "discount": {
             "discount_code": "DISCOUNTCODE",
             "discount_details": "Free shipping to Anywhere up to $100.00 or less"
          },
          "discount_queue": [
             {
                "discount_queue_id": 2,
                "discount_code": "DISCOUNT10",
                "discount_details": "$10.00 off all orders"
             }
          ]
       }
    }
    

    This endpoint retrieves discount code information for a subscription.

    GET /manage/subscription/orders/{order_id}/discounts

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    discount object Order Discount Object
    discount_queue array List of Order Discount Queue Objects

    Get Prepaid Settings

    GET api/manage/subscription/orders/{order_id}/prepaid_settings?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "prepaid_settings": {
             "bold_order_id": 1,
             "total_recurrences": 6,
             "recurrence_count": 1,
             "one_charge_only": 0,
             "recurr_after_limit": 0
          }
       }
    }
    

    When setting up a subscription group you have the ability to allow customers to prepay for the subscription. This endpoint retrieves information including, but not limited to, how many orders the customer has received, and whether or not the subscription is set to recur after the total number of orders have been processed.

    GET api/manage/subscription/orders/{order_id}/prepaid_settings

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    prepaid_settings object Order Fixed Recurrences Object

    Get Products

    GET api/manage/subscription/orders/{order_id}/products?customer_id={shopify_customer_id} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "products": [
             {
                "id": 5,
                "shop_app_id": 1,
                "bold_order_id": 1,
                "product_id": 111,
                "variant_id": 222,
                "price": "10.00",
                "quantity": 1,
                "gram": 100,
                "product_title": "ProductTitle",
                "variant_title": "VariantTItle",
                "status": 0,
                "price_changed": 0,
                "shopify_price": "10.00",
                "shopify_new_price": null,
                "sku": "skuprod1",
                "shopify_inventory": null,
                "inventory_management": "shopify",
                "taxable": 1,
                "properties": "{\u0022frequency_num\u0022:1,\u0022frequency_type\u0022:2,\u0022frequency_type_text\u0022:\u0022Weekx(s***)\u0022,\u0022group_id\u0022:\u00221\u0022,\u0022is_prepaid\u0022:\u0022\u0022,\u0022total_recurrences\u0022:\u0022\u0022,\u0022prepaid_id\u0022:\u0022\u0022,\u0022recurr_after_limit\u0022:\u00220\u0022,\u0022_ro_billing_plan\u0022:0}",
                "vendor": "Vendor",
                "is_active": true,
                "shopify_product": {
                   "id": 111,
                   "body_html": "",
                   "handle": "product_handle",
                   "product_type": "",
                   "published_scope": "global",
                   "title": "ProductTitle",
                   "vendor": "vendor",
                   "tags": "",
                   "options": [
                      {
                         "id": 123,
                         "name": "Title",
                         "position": 1,
                         "product_id": 111,
                         "values": [
                            {
                               "Default Title"
                            }
                         ]
                      }
                   ],
                   "images":{...},
                   "created_at": "2017-02-28T09:41:56+10:30",
                   "updated_at": "2017-06-16T02:12:55+09:30",
                   "published_at": "2017-02-28T09:35:00+10:30",
                   "image": {...},
                   "variant": {...}
                }
             }
          ],
          "order": {...},
          "coupon": null,
          "taxes_included": 0,
          "has_prepaid": true
       }
    }
    

    This endpoint retrieves all associated products for a subscription.

    GET api/manage/subscription/orders/{order_id}/products

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    products array Array of Order Product Objects
    order object Order Object
    coupon object Order Discount Object
    taxes_included integer 0 - no / 1 - yes
    has_prepaid boolean If subscription is prepaid

    Get Shipping Rates

    GET api/manage/subscription/orders/{order_id}/shipping_rates?customer_id={shopify_customer_id} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "shipping_rates": [
          {
             "code": "DOM.EP",
             "name": "Expedited Parcel",
             "price": "10.00",
             "source": "canada_post",
             "need_change": false,
             "hash": "hash_value"
          },{...},{...}
       ]
    }
    

    This endpoint retrieves all the shipping rates for the provided subscription id (order id). You can also retrieve the shipping rates for a subscription that you are going to change. You can send optional parameters in the request that would describe the change, and we will return the shipping rates that would be applied to that changed order.

    GET api/manage/subscription/orders/{order_id}/shipping_rates

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID
    new_order_products array URL encoded representation of the data used to add products to a subscriptions
    order_products array URL encoded representation of the data used to update quantity of products in a subscription

    Data Object

    Element Type Description
    id integer Subscription Order ID
    shipping_rates array List of Order Shipping Rate Objects

    Get Upcoming Orders

    GET api/manage/subscription/orders/{order_id}/upcoming?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "has_prepaid": false,
          "next_orders": [
             "2018-06-20",
             "2018-06-27",
             "2018-07-04",
             "2018-07-11",
             "2018-07-18",
             "2018-07-25",
             "2018-08-01"
          ]
       }
    }
    

    This endpoint retrieves a listing of the next upcoming order dates for a subscription.

    GET api/manage/subscription/orders/{order_id}/upcoming

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    has_prepaid boolean If order is prepaid
    next_orders array List of next order dates

    Get Upcoming Products

    GET api/manage/subscription/orders/{order_id}/upcoming_products?customer_id={shopify_customer_id} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": "1",
            "products": [
                {
                    "id": 222,
                    "shop_app_id": 1,
                    "bold_order_id": 1,
                    "product_id": 222,
                    "variant_id": 333,
                    "price": "10.00",
                    "quantity": 1,
                    "gram": 0,
                    "product_title": "ProductTitle",
                    "variant_title": "VariantTitle",
                    "status": 0,
                    "price_changed": 0,
                    "shopify_price": "10.00",
                    "shopify_new_price": null,
                    "sku": "",
                    "shopify_inventory": null,
                    "inventory_management": null,
                    "taxable": 1,
                    "properties": "{\"frequency_num\":\"7\",\"frequency_type\":\"1\",\"group_id\":\"6\",\"is_prepaid\":\"\",\"total_recurrences\":\"\",\"prepaid_id\":\"\",\"recurr_after_limit\":\"1\",\"_ro_subscription_box_choices\":{{\"slot\":\"11\",\"quantity\":\"2\"},{\"slot\":\"12\",\"quantity\":\"1\"}},\"_ro_billing_plan\":0,\"frequency_type_text\":\"Day(s)\"}",
                    "vendor": "VendorName",
                    "is_active": true,
                    "last_updated": "2018-06-12 11:06:23",
                    "properties_group_id": null,
                    "shopify_product": {
                        "id": 222,
                        "body_html": "123",
                        "handle": "product-handle",
                        "product_type": "",
                        "title": "ProductTitle",
                        "vendor": "VenderName",
                        "tags": "",
                        "images": {
                            {...},{...}
                        },
                        "image": {...},
                        "variant": {...}
                    }
                }
            ],
            "order_date": "2018-06-12",
            "has_prepaid": false
        }
    }

    This endpoint returns the products that will be in an upcoming order for the subscription

    GET api/manage/subscription/orders/{order_id}/upcoming_products

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    products array Array of Order Product Objects
    order_date date Order Date in Y-m-d format
    has_prepaid boolean If order is prepaid

    Pause Subscription

    POST api/manage/subscription/orders/{order_id}/pause?customer_id={customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": 25,
            "is_paused": true
        }
    }
    

    This endpoint allows the user to pause all orders of that subscription until it is resumed.

    POST api/manage/subscription/orders/{order_id}/pause

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID
    customer_id integer Shopify Customer ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    is_paused boolean If subscription is paused

    Recover Order

    POST api/manage/subscription/orders/{order_id}/recover?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "order_date": "2018-06-20" }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": 1,
            "next_active_ship_date": "2018-06-20",
            "order_exceptions": {}
        }
    }
    

    This endpoint allows you to unskip an order that was previously set to be skipped for a given order date.

    POST api/manage/subscription/orders/{order_id}/recover

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Description
    order_date recover date in the Y-m-d format

    Data Object

    Element Type Description
    id integer Subscription Order ID
    next_active_ship_date date Next Active Order Date
    order_exceptions array List of order exceptions

    Resume Subscription

    POST api/manage/subscription/orders/{order_id}/resume?customer_id={customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": 25,
            "is_paused": false
        }
    }
    

    This endpoint allows the user to resume a paused subscription.

    POST api/manage/subscription/orders/{order_id}/resume

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID
    customer_id integer Shopify Customer ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    is_paused boolean If subscription is paused

    Log Attempted Cancellation

    POST api/manage/subscription/orders/{order_id}/cancellation_log?customer_id={customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "cancel_reason": "Too expensive" } HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK"
    }
    

    This endpoint allows you to add a User Activity Log to the customer history with type "Cancellation Flow Started".

    POST api/manage/subscription/orders/{order_id}/cancellation_log

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID
    customer_id integer Shopify Customer ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    cancel_reason String The reason selected for starting the cancellation flow

    Save Build-a-Box Choices

    POST api/manage/subscription/orders/{order_id}/build_a_box_choices?customer_id={customer_id} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "order_date":"2019-11-15", "choices": [ { "slot_id": 1, "quantity": 1 }, { "slot_id": 2, "quantity": 2 } ] }

    HTTPS/1.1 200 OK

    Example response

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "orders": [
                {
                    "id": 1,
                    "shopify_customer_id": 1234,
                    "interval_number": 1,
                    "interval_type_id": 1,
                    "first_name": "Marie",
                    "last_name": "Curie",
                    "customer_email": "marie.curie@boldcommerce.com",
                    "gateway_payment_method_id": "",
                    "address1": "50 Fultz blvd",
                    "address2": null,
                    "country": "Canada",
                    "province": "Manitoba",
                    "city": "Winnipeg",
                    "zip": "R3Y 0L6",
                    "phone": "5555555555",
                    "company": "",
                    "purchase_date": "2019-10-25",
                    "last_ship_date": "2019-10-25",
                    "next_ship_date": "2019-11-12",
                    "active": true,
                    "discount_code_id": 0,
                    "cancel_discount_code_id": 0,
                    "billing_first_name": "Marie",
                    "billing_last_name": "Curie",
                    "billing_address1": "50 Fultz blvd",
                    "billing_address2": null,
                    "billing_country": "Canada",
                    "billing_province": "Manitoba",
                    "billing_city": "Winnipeg",
                    "billing_zip": "R3Y 0L6",
                    "billing_phone": "5555555555",
                    "billing_company": "",
                    "notes": null,
                    "taxes_included": 0,
                    "tax_shipping": 1,
                    "attributes": "[]",
                    "is_cancellable": true,
                    "cancel_reason": null,
                    "reactivatable": false,
                    "next_active_ship_date": "2019-10-26",
                    "billing_plan_id": 0,
                    "order_day": null,
                    "last_updated": "2019-11-13 08:49:11",
                    "shopify_order_tags": null,
                    "is_paused": false,
                    "currency": "",
                    "currency_exchange_rate": "1.000000000000",
                    "currency_format": null,
                    "order_products": [
                        {
                            "id": 2530,
                            "bold_order_id": 1,
                            "product_id": 1574423429210,
                            "variant_id": 15434163224666,
                            "price": "10.00",
                            "quantity": 1,
                            "gram": 0,
                            "product_title": "BUILD A BOX",
                            "variant_title": "Default Title",
                            "status": 0,
                            "price_changed": 0,
                            "shopify_price": "10.00",
                            "shopify_new_price": null,
                            "sku": "",
                            "shopify_inventory": null,
                            "inventory_management": null,
                            "taxable": 1,
                            "properties": "{\"frequency_num\":\"1\",\"frequency_type\":\"1\",\"group_id\":\"6\",\"is_prepaid\":\"\",\"total_recurrences\":\"\",\"prepaid_id\":\"\",\"recurr_after_limit\":\"1\",\"_ro_subscription_box_choices\":[{\"slot\":\"1\",\"quantity\":\"3\"},{\"slot\":\"2\",\"quantity\":\"0\"}],\"_ro_billing_plan\":0,\"frequency_type_text\":\"Day(s)\"}",
                            "vendor": "test-shop",
                            "is_active": true,
                            "last_updated": "2019-10-25 13:16:39",
                            "converted_price": 0,
                            "properties_group_id": 6
                        }
                    ],
                    "order_fixed_recurrences": null,
                    "next_orders": [
                        "2019-11-12",
                        "2019-11-13",
                        "2019-11-14",
                        "2019-11-15",
                        "2019-11-16",
                        "2019-11-17",
                        "2019-11-18"
                    ],
                    "build_a_box": true,
                    "build_a_box_next_orders": [
                        {
                            "date": "2019-11-12",
                            "status": "build_a_box_locked_default_choices",
                            "choices": [
                                {
                                    "slot_id": 1,
                                    "product_id": 1649329406042,
                                    "variant_id": 16089077022810,
                                    "quantity": 2
                                },
                                {
                                    "slot_id": 2,
                                    "product_id": 1649345200218,
                                    "variant_id": 16089118081114,
                                    "quantity": 1
                                }
                            ]
                        },
                        {
                            "date": "2019-11-13",
                            "status": "build_a_box_locked_default_choices",
                            "choices": [
                                {
                                    "slot_id": 1,
                                    "product_id": 1649329406042,
                                    "variant_id": 16089077022810,
                                    "quantity": 2
                                },
                                {
                                    "slot_id": 2,
                                    "product_id": 1649345200218,
                                    "variant_id": 16089118081114,
                                    "quantity": 1
                                }
                            ]
                        },
                        {
                            "date": "2019-11-14",
                            "status": "build_a_box_locked_default_choices",
                            "choices": [
                                {
                                    "slot_id": 1,
                                    "product_id": 1649329406042,
                                    "variant_id": 16089077022810,
                                    "quantity": 2
                                },
                                {
                                    "slot_id": 2,
                                    "product_id": 1649345200218,
                                    "variant_id": 16089118081114,
                                    "quantity": 1
                                }
                            ]
                        },
                        {
                            "date": "2019-11-15",
                            "status": "build_a_box_available_choices_made",
                            "choices": [
                                {
                                    "slot_id": 1,
                                    "product_id": 1649329406042,
                                    "variant_id": 16089077022810,
                                    "quantity": 1
                                },
                                {
                                    "slot_id": 2,
                                    "product_id": 1649345200218,
                                    "variant_id": 16089118081114,
                                    "quantity": 2
                                }
                            ]
                        },
                        {
                            "date": "2019-11-16",
                            "status": "build_a_box_available",
                            "choices": [
                                {
                                    "slot_id": 1,
                                    "product_id": 1649329406042,
                                    "variant_id": 16089077022810,
                                    "quantity": 2
                                },
                                {
                                    "slot_id": 2,
                                    "product_id": 1649345200218,
                                    "variant_id": 16089118081114,
                                    "quantity": 1
                                }
                            ]
                        },
                        {
                            "date": "2019-11-17",
                            "status": "build_a_box_unavailable",
                            "choices": [
                                {
                                    "slot_id": 1,
                                    "product_id": 1649329406042,
                                    "variant_id": 16089077022810,
                                    "quantity": 2
                                },
                                {
                                    "slot_id": 2,
                                    "product_id": 1649345200218,
                                    "variant_id": 16089118081114,
                                    "quantity": 1
                                }
                            ]
                        },
                        {
                            "date": "2019-11-18",
                            "status": "build_a_box_unavailable",
                            "choices": [
                                {
                                    "slot_id": 1,
                                    "product_id": 1649329406042,
                                    "variant_id": 16089077022810,
                                    "quantity": 2
                                },
                                {
                                    "slot_id": 2,
                                    "product_id": 1649345200218,
                                    "variant_id": 16089118081114,
                                    "quantity": 1
                                }
                            ]
                        }
                    ],
                    "is_price_based_on_choices": false
                }
            ]
        }
    }
    

    This endpoint allows you to save selections for an order date, for a Build-a-Box subscription. This endpoint respects the lock settings, of the subscription group.

    POST api/manage/subscription/orders/{order_id}/build_a_box_choices

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID
    customer_id integer Shopify Customer ID

    Request Body

    Element Type Description
    order_date date Upcoming order date
    choices array Array of selected choices for build-a-box slots

    Response Data

    Element Type Description
    orders array List of Order objects
    order_products array List of Order Product Objects
    build_a_box_next_orders array List of Build-a-Box Objects

    Save Cancellation Offer Code

    POST api/manage/subscription/orders/{order_id}/cancellation_offer_code?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "discount_code": "CANCELCODE", "reason_id": 1 }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": "1",
            "cancel_discount_code_id": 1,
            "message": "Order Updated"
        }
    }
    

    This endpoint applies cancellation discount code to the given order.

    POST api/manage/subscription/orders/{order_id}/cancellation_offer_code

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Type Description
    discount_code string Discount Code
    reason_id integer Cancellation Reason ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    cancel_discount_code_id integer Cancel Discount Code ID
    message string Response message

    Save Discount

    POST api/manage/subscription/orders/{order_id}/discount?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "discount_code": "DISCOUNTCODE" }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 15,
          "discount": {
             "discount_code": "DISCOUNTCODE",
             "discount_details": "Free shipping to Anywhere up to $100.00 or less"
          },
          "discount_queue": [
             {
                "discount_queue_id": 2,
                "discount_code": "DISCOUNTCODE2",
                "discount_details": "$10.00 off all orders"
             }
          ]
       }
    }
    

    This endpoint adds or updates existing discount code for specific subscription.

    POST api/manage/subscription/orders/{order_id}/discount

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Type Description
    discount_code string Discount code

    Data Object

    Element Type Description
    id integer Subscription Order ID
    discount object Order Discount Object
    discount_queue array List of Order Discount Queue Objects

    Save Upcoming Products

    PUT api/manage/subscription/orders/{order_id}/upcoming_products?customer_id={shopify_customer_id} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    {
    "order_date": "2017-06-01", "order_products": [ { "product_internal_id": 1, "quantity": 1 }, { "product_internal_id": 2, "quantity": 1 }, { "product_internal_id": 3, "quantity": 0 } ], "order_shipping_rate": { "code": "DOM.EP", "name": "Expedited Parcel", "source": "canada_post", "price": "2312.10", "need_change": false, "hash": "aksdjfhlakjshd97hajh8r328ynjksjhda989" } }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 145,
          "order_product_exceptions": [
             {
                "date": "2017-06-01",
                "products": [
                   {
                      "product_internal_id": 1,
                      "quantity": 1
                   },
                   {
                      "product_internal_id": 2,
                      "quantity": 1
                   },
                   {
                      "product_internal_id": 3,
                      "quantity": 0
                   }
                ]
             }
          ]
       }
    }
    

    This endpoint updates products quantity for a specific upcoming order for the subscription.

    PUT api/manage/subscription/orders/{order_id}/upcoming_products

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Sub Element Type Description
    order_date   date Order Date in Y-m-d format
    order_products array
      product_internal_id integer Recurring Orders internal product ID
      quantity integer Product quantity
    order_shipping_rate   Object
      code string Order Shipping Code
      name string Order Shipping Name
      price string Shipping Price
      source string Shipping Source
    for example: shopify, cashier, decimal etc.
      need_change integer 0/1
      hash string shipping Hash

    Response Data

    Element Type Description
    id integer
    order_product_exceptions array List of Order Product Exceptions Object

    Save Swap Product

    PUT api/manage/subscription/orders/{order_id}/save_swap_product?customer_id={shopify_customer_id} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    {
    "order_id": 1, "product_internal_id": 1, "product_id": 123456789, "variant_id": 234567891, "order_shipping_rate": { "code": "DOM.EP", "name": "Expedited Parcel", "source": "canada_post", "price": "2312.10", "need_change": false, "hash": "hash" } }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "order_products": [
             {
                "id": 1,
                "bold_order_id": 1,
                "product_id": 123456789,
                "variant_id": 234567891,
                "price": "5.00",
                "quantity": 1,
                "gram": 0,
                "product_title": "SwappedProductTitle",
                "variant_title": "SwappedVariantTitle",
                "status": 0,
                "price_changed": 0,
                "shopify_price": "1.00",
                "shopify_new_price": null,
                "sku": "",
                "shopify_inventory": null,
                "inventory_management": null,
                "taxable": 1,
                "properties": "{\u0022frequency_num\u0022:\u00227\u0022,\u0022frequency_type\u0022:\u00221\u0022,\u0022group_id\u0022:\u00226\u0022,\u0022is_prepaid\u0022:\u0022\u0022,\u0022total_recurrences\u0022:\u0022\u0022,\u0022prepaid_id\u0022:\u0022\u0022,\u0022recurr_after_limit\u0022:\u00221\u0022,\u0022_ro_subscription_box_choices\u0022:[{\u0022slot\u0022:\u002211\u0022,\u0022quantity\u0022:\u00222\u0022},{\u0022slot\u0022:\u002212\u0022,\u0022quantity\u0022:\u00221\u0022}],\u0022_ro_billing_plan\u0022:0,\u0022frequency_type_text\u0022:\u0022Day(s)\u0022}",
                "vendor": "VendorName",
                "is_active": true,
                "last_updated": "2018-06-12 11:06:23",
                "properties_group_id": 6
             },
             {...}
          ],
          "order_shipping_rate": {
             "code": "DOM.EP",
             "name": "Expedited Parcel",
             "source": "canada_post",
             "price": "2312.10",
             "need_change": false,
             "hash": "hash"
          }
       }
    }
    

    This endpoint will swap a product on an order with the product indicated by the product id and variant id. You must send a valid shipping rate for the subscription that was calculated with the new product.

    PUT api/manage/subscription/orders/{order_id}/save_swap_product

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Sub Element Type Description
    product_internal_id   integer Recurring Orders internal product ID for the product being replaced.
    product_id   integer Shopify product ID for the swap product.
    variant_id   integer Shopify variant ID for the swap product.
    order_shipping_rate   object
      code string Order Shipping Code
      name string Order Shipping Name
      price string Shipping Price
      source string Shipping Source
    for example: shopify, cashier, decimal etc.
      need_change integer 0/1
      hash string shipping Hash

    Response Data

    Element Type Description
    id integer Subscription Order ID
    order_products array List of Order Product Objects
    order_shipping_rate object Order Shipping Object

    Skip Order

    POST api/manage/subscription/orders/{order_id}/skip?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "order_date": "2018-06-20" }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": 15,
            "next_active_ship_date": "2018-06-27",
            "order_exceptions": [
                "2018-06-20"
            ]
        }
    }
    

    This endpoint allows you to add and order exception date. When this order goes to process it will be skipped. The order will not be placed in Shopify, and the next ship date will be advanced for the subscription.

    POST api/manage/subscription/orders/{order_id}/skip

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Description
    order_date skip date in the Y-m-d format

    Data Object

    Element Type Description
    id integer Subscription Order ID
    next_active_ship_date date Next Active Order Date
    order_exceptions array List of order exceptions

    Update Billing Address

    PUT api/manage/subscription/orders/{order_id}/billing_address?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "billing_address": { "billing_first_name": "John", "billing_last_name": "Doe", "billing_address1": "123 Not Real St.", "billing_address2": "", "billing_country": "CA", "billing_province": "MB", "billing_city": "Winnipeg", "billing_zip": "R3T 0H4", "billing_phone": "", "billing_company": "" } }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": 1,
            "billing_first_name": "John",
            "billing_last_name": "Doe",
            "billing_address1": "123 Not Real St.",
            "billing_address2": null,
            "billing_country": "CA",
            "billing_province": "MB",
            "billing_city": "Winnipeg",
            "billing_zip": "R3T 0H4",
            "billing_phone": "",
            "billing_company": ""
        }
    }
    

    This endpoint updates the billing address for subscription.

    PUT /manage/subscription/orders/{order_id}/billing_address

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Sub Element Type Description
    billing_address   Object
      billing_first_name string Billing First name
      billing_last_name string Billing Last name
      billing_address1 string Billing Address
      billing_address2 string Billing Address optional
      billing_country string Billing Country
      billing_company string Billing Company
      billing_province string Billing Province
      billing_city string Billing City
      billing_zip string Billing Zip code
      billing_phone string Billing Phone number

    Data Object

    Element Type Description
    id integer Subscription Order ID
    billing_first_name string Billing First Name
    billing_last_name string Billing Last name
    billing_address1 string Billing Address
    billing_address2 string Billing Address optional
    billing_country string Billing Country
    billing_province string Billing Province
    billing_city string Billing City
    billing_zip string Billing Zip Code
    billing_phone string Billing Phone Number
    billing_company string Billing Company

    Update Order Credit Card

    PUT api/manage/subscription/orders/{order_id}/card?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "token": "gateway_token" }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "credit_card": {
            "expiry_date": "2020-06-30",
            "last_four": 4532
          }
       }
    }
    

    This endpoint updates order credit card information.

    PUT api/manage/subscription/orders/{order_id}/card

    Request Body

    Element Type Description
    token string Payment Gateway token

    Response Data

    Element Sub Element Type Description
    id integer Subscription Order ID
    credit_card array
      expiry_date date Credit Card Expiry date
      last_four integer Last 4 Credit Card digits

    Update Next Order Date

    PUT /manage/subscription/orders/{order_id}/next_ship_date?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "next_shipping_date": "2018-06-20" }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": 1,
            "next_ship_date": "2018-06-20",
            "next_orders": {
                "2018-06-20",
                "2018-06-27",
                "2018-07-04",
                "2018-07-11",
                "2018-07-18",
                "2018-07-25",
                "2018-08-01",
            },
            "build_a_box_next_orders" : [],
            "order_product_exceptions": [],
            "order_exceptions": [],
            "message": "Upcoming order date was changed."
        }
    }
    

    This endpoint updates next order date for specific subscription.

    PUT api/manage/subscription/orders/{order_id}/next_ship_date

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Type Description
    next_ship_date string Next order date in the Y-m-d format

    Data Object

    Element Type Description
    id integer Subscription Order ID
    next_ship_date date Next order date in the Y-m-d format
    next_orders date Next orders date in the Y-m-d format
    build_a_box_next_orders date Next orders date and selections if the type is build a box
    order_exceptions array Array of order exception dates
    order_product_exceptions array List of Order Product Exceptions Object
    message string Message with translations

    Update Order Interval

    PUT api/manage/subscription/orders/{order_id}/interval?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "frequency_type": "1", "frequency_num": "7" }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "interval_number": 7,
          "interval_type_id": 1,
          "next_ship_date": "2018-06-12",
          "next_orders": {
             "2018-06-12",
             "2018-06-19",
             "2018-06-26",
             "2018-07-03",
             "2018-07-10",
             "2018-07-17",
             "2018-07-24"
          },
          "order_exceptions": {}
       }
    }
    

    This endpoint updates order interval for a subscription. When you update the subscription interval all order exceptions (e.g. skipped orders), will be removed.

    PUT /manage/subscription/orders/{order_id}/interval

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Type Description
    frequency_type integer Recurring interval type:
    1 - Day
    2 - Week
    3 - Month
    5 - Year
    frequency_num integer Recurring interval number
    for example: 2 (for every 2 weeks/days etc.)

    Data Object

    Element Description
    id Subscription Order ID
    interval_number Recurring interval number
    interval_type_id Recurring interval type
    next_ship_date Next order date in date string Y-m-d
    next_orders The array of new next order dates
    order_exceptions The array of order exceptions dates

    Update Prepaid Settings

    PUT api/manage/subscription/orders/{order_id}/prepaid_settings?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "prepaid_settings": { "recurr_after_limit": 1 } }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
      "status": 200,
      "success": true,
      "message": "OK",
      "data": {
          "id": 1,
          "prepaid_settings": {
              "total_recurrences": 6,
              "recurrence_count": 1,
              "one_charge_only": 0,
              "recurr_after_limit": 1
          }
      }
    }
    

    This endpoint updates the prepaid settings for specific order.

    PUT api/manage/subscription/orders/{order_id}/prepaid_settings

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Sub Element Type Description
    prepaid_settings object
      recurr_after_limit integer Automatically renew after last prepaid order
    Allowed: 0 / 1

    Response Data

    Element Type Description
    id integer Subscription Order ID
    prepaid_settings object Order Fixed Recurrences Object

    Update Shipping Address

    PUT api/manage/subscription/orders/{order_id}/shipping_address?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "shipping_address": { "first_name": "John", "last_name": "Doe", "address1": "123 Not Real St.", "address2": "", "country": "CA", "province": "MB", "city": "Winnipeg", "zip": "R3T 0H4", "phone": "" }, "order_shipping_rate": { "bold_order_id": 1, "code": "Canada Post", "name": "Canada Post", "price": "10.00", "source": "cashier", "need_change": 0, "hash": "73c168a51022850a4d1ca9f863c5bf29d911c292feaddeac0228f8d8908cce7ac9554a310972832b841e08b6e0d3fe489d7170819ea77bdcea1b2eba56856e81" } }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": 1,
            "first_name": "John",
            "last_name": "Doe",
            "address1": "123 Not Real St.",
            "address2": "",
            "country": "CA",
            "province": "MB",
            "city": "Winnipeg",
            "zip": "R3T 0H4",
            "phone": "",
            "company": "",
            "order_shipping_rate": {
                "bold_order_id": 1,
                "code": "Canada Post",
                "name": "Canada Post",
                "price": "10",
                "source": "cashier",
                "need_change": false,
                "hash": "33c83de87223252049549928fdbd133762a07db4d18073ca1620016591aa02c5c8965f1e2a24f224cb6cfdecf3fa097f0b7ab375d5a7d13e4fa46fd94e71bd36"
            }
        }
    }
    

    This endpoint updates the shipping method for a subscription.

    PUT api/manage/subscription/orders/{order_id}/shipping_address

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Sub Element Type Description
    shipping_address   Object
      first_name string Shipping First name
      last_name string Shipping Last name
      address1 string Shipping Address
      address2 string Shipping Address optional
      country string Shipping Country
      company string Shipping Company
      province string Shipping Province
      city string Shipping City
      zip string Shipping Zip code
      phone string Shipping Phone number
    order_shipping_rate   Object
      code string Order Shipping Code
      name string Order Shipping Name
      price string Shipping Price
      source string Shipping Source
    for example: shopify, cashier, decimal etc.
      need_change integer 0/1
      hash string shipping Hash

    Data Object

    Element Type Description
    id integer Subscription Order ID
    first_name string Shipping First Name
    last_name string Shipping Last name
    address1 string Shipping Address
    address2 string Shipping Address optional
    country string Shipping Country
    province string Shipping Province
    city string Shipping City
    zip string Shipping Zip Code
    phone string Shipping Phone Number
    company string Shipping Company
    order_shipping_rate object Order Shipping Object

    Update Shipping Method

    PUT api/manage/subscription/orders/{order_id}/shipping_method?customer_id={shopify_customer_id} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "order_shipping_rate": { "code": "NEWSHIP", "name": "new shipping method", "price": "10.00", "source": "new_source", "need_change": 0, "hash": "hashValue" } }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "success": true,
        "status": 200,
        "message": "OK",
        "data": {
            "id": 1,
            "order_shipping_rate": {
                "code": "NEWSHIP",
                "name": "new shipping method",
                "price": "10.00",
                "source": "new_source",
                "need_change": 0,
                "hash": "kajsdbncfaowq89urnjaijshdf823jcihjs2dnbh"
            }
        }
    }
    

    This endpoint updates the shipping method for the provided order id.

    PUT api/manage/subscription/orders/{order_id}/shipping_method

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Body Request

    Element Sub Element Type Description
    order_shipping_rate   Object
      code string Order Shipping Code
      name string Order Shipping Name
      price string Shipping Price
      source string Shipping Source
    for example: shopify, cashier, decimal etc.
      need_change integer 0/1
      hash string shipping Hash

    Data Object

    Element Type Description
    id integer Subscription Order ID
    order_shipping_rate object Order Shipping Object

    Update Quantity

    PUT api/manage/subscription/orders/{order_id}/quantity?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "order_products": [ { "product_internal_id": 1, "quantity": 3, "is_deleted": false }, { "product_internal_id": 2, "quantity": 2, "is_deleted": false }, { "product_internal_id": 3, "quantity": 0, "is_deleted": false } ],
    "order_shipping_rate": { "code": "Free Shipping", "name": "Free Shipping", "price": "0.00", "source": "shopify", "need_change": false, "hash": "2abcbdea0deff6e6d85b506c247dbebf4475b41358e023f7b3781230ff423c9c5692c5fcf4f643bfca48bdd0759687e4c3c0401da376ee8da4471a7617f5f43b", } }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "order_products": [
             {...}, {...} 
          ],
          "order_product_exceptions": [
             {...}, {...}
          ],
          "order_shipping_rate": {
             "bold_order_id": 1,
             "code": "Free Shipping",
             "name": "Free Shipping",
             "price": "0.00",
             "source": "shopify",
             "need_change": false,
             "hash": "hash"
          }
       }
    }
    

    This endpoint updates the quantity of specified products in the subscription for the remainder of the subscription, excluding upcoming orders where you have changed the quantity for a specific shipment date.

    PUT api/manage/subscription/orders/{order_id}/quantity

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Sub Element Type Description
    order_products
      product_internal_id integer Recurring Orders internal product ID
      quantity integer Product quantity
      is_deleted boolean true/false
    order_shipping_rate   Object
      bold_order_id integer Subscription Order ID
      code string Order Shipping Code
      name string Order Shipping Name
      price string Shipping Price
      source string Shipping Source
    for example: shopify, cashier, decimal etc.
      need_change integer 0/1
      hash string shipping Hash

    Data Object

    Element Type Description
    id integer Subscription Order ID
    order_products array List of Order Product Object
    order_product_exceptions array List of Order Product Exceptions Object
    order_shipping_rate object Order Shipping Object

    Update Shopify Order Tags

    PUT api/manage/subscription/orders/{order_id}/shopify_order_tags?customer_id={shopify_customer_id} HTTP/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    { "shopify_order_tags" : "initial_order,new_subscriber" }

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
        "status": 200,
        "success": true,
        "message": "OK",
        "data": {
            "id": 1,
            "shopify_order_tags": "initial_order,new_subscriber"
        }
    }
    

    This endpoint updates the order tags in Shopify for the subscription. This change will only apply to future orders.

    PUT api/manage/subscription/orders/{order_id}/shopify_order_tags

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Request Body

    Element Type Description
    shopify_order_tags string A comma separated string of the tags that want to be applied to the order

    Data Object

    Element Type Description
    id integer Subscription Order ID
    shopify_order_tags string A comma separated string of the tags that want to be applied to the order

    Groups

    Get Swap Information From Group

    GET api/manage/subscription/groups/{group_id}/swap_information?product_internal_id={product_internal_id}&order_id={order_id}&customer_id={shopify_customer_id} HTTPS/1.1
    BOLD-Authorization: Bearer {token}
    Content-Type: application/json

    HTTPS/1.1 200 OK

    Example response has been truncated for brevity

    {
       "status": 200,
       "success": true,
       "message": "OK",
       "data": {
          "id": 1,
          "product_internal_id": 1,
          "products_with_price_difference": [
             {
                "handle": "product-handle-test",
                "product_id": 123456789,
                "shopify_data": {...},
             },
             {...}
          ]
       }
    }
    

    This endpoint retrieves all swap information for a Recurring Orders subscription group id, internal product id and order id.

    GET /manage/subscription/groups/{group_id}/swap_information?product_internal_id={product_internal_id}&order_id={order_id}

    URL Parameters

    Element Type Description
    group_id integer Recurring Orders Subscription Group ID
    product_internal_id integer Recurring Orders internal product ID
    order_id integer Subscription Order ID

    Data Object

    Element Type Description
    id integer Subscription Order ID
    product_internal_id integer Subscription Order Product ID
    products_with_price_difference array Array of products with price differences
    (Shopify Product Object)

    Objects

    Order Object

    {
        "id": 1,
        "shopify_customer_id": 1,
        "interval_number": 1,
        "interval_type_id": 1,
        "first_name": "FirstName",
        "last_name": "LastName",
        "customer_email": "customer@email.com",
        "address1": "Address1",
        "address2": null,
        "country": "Country",
        "province": "Province",
        "city": "City",
        "zip": "Zip",
        "phone": "1111111111",
        "company": "Bold",
        "purchase_date": "2018-06-12",
        "delete_date": null,
        "last_ship_date": "2018-06-12",
        "next_ship_date": "2018-06-12",
        "discount_code_id": 0,
        "cancel_discount_code_id": 0,
        "billing_first_name": "FirstName",
        "billing_last_name": "LastName",
        "billing_address1": "Address1",
        "billing_address2": "Apt 102",
        "billing_country": "Country",
        "billing_province": "Province",
        "billing_city": "City",
        "billing_zip": "Zip",
        "billing_phone": "1111111111",
        "billing_company": "Bold",
        "notes": null,
        "taxes_included": 0,
        "tax_shipping": 0,
        "attributes": "[]",
        "is_cancellable": 1,
        "cancel_reason": null,
        "reactivatable": false,
        "next_active_ship_date": null,
        "billing_plan_id": 0,
        "order_day": null,
        "last_updated": "2018-06-12 11:11:51",
        "order_logs": [
           {
              "shopify_order_num": "#1",
              "shopify_order_token": "1",
              "price": "1.00",
              "tax": "1.00",
              "shipping": "1.00",
              "purchase_date": "2018-06-12",
              "share_shipping": false,
              "discount_amount": "0.00",
              "free_shipping_discount_applied": 0,
              "charged_amount": "1.00"
           }
        ],
        "order_product_exceptions": [
           {
              "date": "2018-07-12",
              "products": [
                 {
                    "product_internal_id": 1,
                    "quantity": 8
                 }
              ]
           }
        ],
        "order_interval_type": {
           "interval_type": "day",
           "interval_text": "Day",
           "estimated_days": 1
        },
        "order_fixed_recurrences": null,
        "order_products": [
           {
              "id": 1,
              "shop_app_id": 1,
              "bold_order_id": 1,
              "product_id": 111,
              "variant_id": 222,
              "price": "1.00",
              "quantity": 1,
              "gram": 0,
              "product_title": "ProductTitle",
              "variant_title": "VariantTitle",
              "status": 0,
              "price_changed": 0,
              "shopify_price": "1.00",
              "shopify_new_price": null,
              "sku": "",
              "shopify_inventory": null,
              "inventory_management": null,
              "taxable": 1,
              "properties": "{\u0022frequency_num\u0022:\u00227\u0022,\u0022frequency_type\u0022:\u00221\u0022,\u0022group_id\u0022:\u00226\u0022,\u0022is_prepaid\u0022:\u0022\u0022,\u0022total_recurrences\u0022:\u0022\u0022,\u0022prepaid_id\u0022:\u0022\u0022,\u0022recurr_after_limit\u0022:\u00221\u0022,\u0022_ro_subscription_box_choices\u0022:[{\u0022slot\u0022:\u002211\u0022,\u0022quantity\u0022:\u00222\u0022},{\u0022slot\u0022:\u002212\u0022,\u0022quantity\u0022:\u00221\u0022}],\u0022_ro_billing_plan\u0022:0,\u0022frequency_type_text\u0022:\u0022Day(s)\u0022}",
              "vendor": "VendorName",
              "is_active": true,
              "last_updated": "2018-06-12 11:06:23",
              "properties_group_id": 6
           }
        ],
        "order_shipping_rate": {
           "bold_order_id": 1,
           "code": "DOM.EP",
           "name": "ShipName",
           "price": 1.00,
           "source": "shopify",
           "need_change": false,
           "hash": "123"
        },
        "order_exceptions":[
           "2018-08-12",
           "2018-09-12"
        ],
        "order_hooks": [
           {
              "bold_product_id": 111,
              "conditions": [
                 {
                    "condition_type": "countdown",
                    "condition_value": "8"
                 }
              ],
              "title": "Switch Price",
              "new_price": null
           }
        ],
        "next_orders": ["2018-06-12",...],
        "is_billing_the_same": true,
        "build_a_box_next_orders": [
           {
              "date": "2018-06-12",
              "status": "See details in Build a Box Statuses table",
              "choices": [
                 {
                    "slot_id": 1,
                    "product_id": 111,
                    "variant_id": 222,
                    "quantity": 1
                 },{...},{...}],
           },{...},{...}
        ],
        "build_a_box": true,
        "has_prepaid": false,
        "group_id": 1,
        "discount": null,
        "discount_queue": [
    ], "credit_card": { "last_four": "1111", "expiry_date": "2021-12-31 00:00:00" } }
    Element Type Description
    id integer Recurring Orders internal product ID
    shopify_customer_id integer Shopify Customer ID
    interval_number integer Recurring interval number
    for example: 2 (for every 2 weeks/days etc.)
    interval_type_id integer Recurring interval type:
    1 - Day
    2 - Week
    3 - Month
    5 - Year
    first_name string Shipping First Name
    last_name string Shipping Last name
    customer_email string Customer Email address
    address1 string Shipping Address
    address2 string Shipping Address optional
    country string Shipping Country
    province string Shipping Province
    city string Shipping City
    zip string Shipping Zip Code
    phone string Shipping Phone Number
    company string Shipping Company
    purchase_date date First order date
    delete_date date Delete date or null
    last_ship_date date Last order date
    next_ship_date date next order date
    discount_code_id integer Discount Code ID
    cancel_discount_code_id integer Cancellation Code ID
    billing_first_name string Billing First Name
    billing_last_name string Billing Last name
    billing_address1 string Billing Address
    billing_address2 string Billing Address optional
    billing_country string Billing Country
    billing_province string Billing Province
    billing_city string Billing City
    billing_zip string Billing Zip Code
    billing_phone string Billing Phone Number
    billing_company string Billing Company
    notes string Order notes
    taxes_included integer
    tax_shipping integer
    attributes string
    is_cancellable integer
    cancel_reason string
    reactivatable integer 0/1
    next_active_ship_date date
    billing_plan_id integer
    order_day integer
    last_updated datetime
    order_logs array List of Order Log Objects
    order_product_exceptions array List of Order Product Exceptions Object
    order_interval_type array
    order_fixed_recurrences object/null Order Fixed Recurrences Object
    order_products array List of Order Product Object
    order_shipping_rate object Order Shipping Object
    order_exceptions array Array of order exception dates
    order_hooks array Order hooks Object
    next_orders array Array of next order dates
    is_billing_the_same boolean true/false
    build_a_box_next_orders array Build A Box Object
    build_a_box boolean If order is Build a Box type
    has_prepaid boolean If order is prepaid
    group_id integer Subscription Group ID
    discount object / null Order Discount Object
    discount_queue array List of Order Discount Queue Objects
    credit_card array

    Order Product Object

    {
       "id": 5,
       "shop_app_id": 1,
       "bold_order_id": 1,
       "product_id": 111,
       "variant_id": 222,
       "price": "10.00",
       "quantity": 1,
       "gram": 100,
       "product_title": "ProductTitle",
       "variant_title": "VariantTItle",
       "status": 0,
       "price_changed": 0,
       "shopify_price": "10.00",
       "shopify_new_price": null,
       "sku": "skuprod1",
       "shopify_inventory": null,
       "inventory_management": "shopify",
       "taxable": 1,
       "properties": "{\u0022frequency_num\u0022:1,\u0022frequency_type\u0022:2,\u0022frequency_type_text\u0022:\u0022Weekx(s***)\u0022,\u0022group_id\u0022:\u00221\u0022,\u0022is_prepaid\u0022:\u0022\u0022,\u0022total_recurrences\u0022:\u0022\u0022,\u0022prepaid_id\u0022:\u0022\u0022,\u0022recurr_after_limit\u0022:\u00220\u0022,\u0022_ro_billing_plan\u0022:0}",
       "vendor": "Vendor",
       "is_active": true,
       "shopify_product": {
          "id": 111,
          "body_html": "",
          "handle": "product_handle",
          "product_type": "",
          "published_scope": "global",
          "title": "ProductTitle",
          "vendor": "vendor",
          "tags": "",
          "options": [
             {
                "id": 123,
                "name": "Title",
                "position": 1,
                "product_id": 111,
                "values": [
                   {
                      "Default Title"
                   }
                ]
             }
          ],
          "images":{...},
          "created_at": "2017-02-28T09:41:56+10:30",
          "updated_at": "2017-06-16T02:12:55+09:30",
          "published_at": "2017-02-28T09:35:00+10:30",
          "image": {...},
          "variant": {...}
       }
    }
    
    Element Type Description
    id integer Recurring Orders internal product ID
    shop_app_id integer Shop App ID
    bold_order_id integer Subscription Order ID
    product_id integer Shopify product ID
    variant_id integer Shopify variant ID
    price string Product Price
    quantity integer Product quantity
    gram integer Gram
    product_title string Product title
    variant_title string Product variant
    status integer 0 - active, 1 - inactive
    price_changed integer
    shopify_price string Shopify price
    shopify_new_price string
    sku string SKU
    shopify_inventory string Shopify inventory
    inventory_management string Shopify Inventory Management
    taxable integer If product is taxable
    properties string Recurring Orders properties
    vendor string Vendor name
    is_active integer 0/1
    shopify_product object Shopify Product Object

    Order Product Exceptions Object

    {
       "date": "2017-06-01",
       "products": [
          {
             "product_internal_id": 1,
             "quantity": 1
          },
          {
             "product_internal_id": 2,
             "quantity": 1
          },
          {
             "product_internal_id": 3,
             "quantity": 0
          }
       ]
    }
    
    Element Sub Element Type Description
    date   integer product exception date in Y-m-d format
    products  
      product_internal_id integer Recurring Orders internal product ID
      quantity integer Product Quantity

    Order Discount Object

    {
       "discount_code": "DISCOUNTCODE",
       "discount_details": "Free shipping to Anywhere up to $100.00 or less"
    }
    
    Element Type Description
    discount_code string Discount Code
    discount_details string Translated details for discount, for example: $10.00 off all orders

    Order Discount Queue Object

    {
       "discount_queue_id": 2,
       "discount_code": "DISCOUNT10",
       "discount_details": "$10.00 off all orders"
    }
    
    Element Type Description
    discount_queue_id integer Internal Discount Queue ID
    discount_code string Discount Code
    discount_details string Translated details for discount, for example: $10.00 off all orders

    Discount Manage Offer Object

    {
       "id": 3,
       "offer_type": 2,
       "discount_code_id": null,
       "cancel_reason_id": 1
    }
    
    Element Type Description
    id integer
    offer_type integer
    discount_code_id integer
    cancel_reason_id integer

    Discount Offer Object

    {
       "id": 5,
       "type": 2,
       "discount_code": "CANCELCODE",
       "useable_time": 200,
       "only_first_discount": 0,
       "discount_type": 2,
       "discount_amount": "2.00",
       "discount_condition": 0,
       "discount_condition_amount": "0.00",
       "free_shipping_amount": "0.00",
       "free_shipping_country_id": 1,
       "free_shipping_country": "All countries",
       "start_date": "2017-03-24",
       "end_date": "0000-00-00",
       "used": 0,
       "status": 0,
       "deleted": 0,
       "once_per_customer": 0,
       "eligible_product_list": "",
       "id_parent": 0,
       "cancel_id": 1,
       "offer_type": 1,
       "cancel_reason_id": 1
    }
    
    Element Type Description
    id integer
    type integer
    discount_code string
    useable_time integer
    only_first_discount integer
    discount_type integer
    discount_amount string
    discount_condition integer
    discount_condition_amount string
    free_shipping_amount string
    free_shipping_country_id integer
    free_shipping_country string
    start_date date
    end_date date
    used integer
    status integer
    deleted integer
    once_per_customer integer
    eligible_product_list string
    id_parent integer
    cancel_id integer
    offer_type integer
    cancel_reason_id integer

    Order Shipping Rate Object

    {
       "bold_order_id": 1,
       "code": "DOM.EP",
       "name": "Expedited Parcel",
       "price": "10.00",
       "source": "canada_post",
       "need_change": false,
       "hash": "hash_value"
    }
    
    Element Type Description
    bold_order_id integer Subscription Order ID
    code string Order Shipping Code
    name string Order Shipping Name
    price string Shipping Price
    source string Shipping Source
    for example: shopify, cashier, decimal etc.
    need_change integer 0/1
    hash string shipping Hash

    Order Log Object

    {
       "shopify_order_num": "#1",
       "shopify_order_token": "1",
       "price": "1.00",
       "tax": "1.00",
       "shipping": "1.00",
       "purchase_date": "2018-06-12",
       "share_shipping": false,
       "discount_amount": "0.00",
       "free_shipping_discount_applied": 0,
       "charged_amount": "1.00"
    }
    
    Element Type Description
    shopify_order_num string Shopify order Number
    shopify_order_token string
    price string Order Price value
    tax string Order Tax value
    shipping string Order Shipping value
    purchase_date date Purchase date
    share_shipping boolean Is shipping is shared
    discount_amount string Discount amount
    free_shipping_discount_applied integer
    charged_amount string Charged amount

    Order Hook Object

    {
        "title": "reduce_quantity",
        "bold_product_id": 644,
        "quantity": 1,
        "orders_remaining": 1,
        "conditions": [{
            "condition_type": "countdown",
            "condition_value": "1"
        }]
    }
    
    {
        "title": "switch_price",
        "bold_product_id": 644,
        "price": 3.00,
        "orders_remaining": 1,
        "conditions": [{
            "condition_type": "countdown",
            "condition_value": "1"
        }]
    }
    
    {
        "title": "switch_product",
        "bold_product_id": 644,
        "price": 3.00,
        "product_id": 23456432,
        "variant_id": 34456634,
        "orders_remaining": 1,
        "conditions": [{
            "condition_type": "countdown",
            "condition_value": "1"
        }]
    }
    
    {
        "title": "make_cancellable",
        "bold_product_id": NULL,
        "orders_remaining": 1,
        "conditions": [{
            "condition_type": "order_countdown",
            "condition_value": "1"
        }]
    }
    
    Element Sub Element Type Description
    title string Type of hook
    bold_product_id* integer Indicates the id from the Order Product Object that the hook will be applied to. Only used for product based hooks which have a condition type of countdown.
    conditions
      condition_type string The condition type countdown indicates the hook is monitoring the number of orders where a specific product exists. The condition type order_countdown indicates the hook is monitoring the number of orders that have processed for the subscription.
      condition_value string Indicates the amount of orders that need to process before the hook is applied.
    quantity* integer Indicates the quantity that a product will be reduced by after the number of orders has passed.
    price* decimal Indicates the price the product will be changed to after the number of orders has passed.
    product_id* integer Indicates the Shopify product_id of the product that will replace the existing product after the number of orders has passed.
    variant_id* integer Indicates the Shopify variant_id of the product that will replace the existing product after the number of orders has passed.
    orders_remaining integer Indicates the number of orders remaining before the hook is applied to the order.

    *These attributes are dependant on the hook type

    Hook Attribute Condition Type
    reduce_quantity countdown
      bold_product_id
      quantity
    switch_price countdown
      bold_product_id
      price
    switch_product countdown
      bold_product_id
      product_id (Shopify)
      product_id (Shopify)
    make_cancellable order_countdown

    Order Fixed Recurrences Object

    {
       "bold_order_id": 1,
       "total_recurrences": 6,
       "recurrence_count": 1,
       "one_charge_only": 0,
       "recurr_after_limit": 0
    }
    
    Element Type Description
    bold_order_id integer Subscription Order ID
    total_recurrences integer Number of prepaid/limited subscriptions
    recurrence_count integer Current Orders Shipped
    one_charge_only integer If order is prepaid:
    0 - no, 1 - yes
    recurr_after_limit integer Automatically renew after last prepaid order
    Allowed: 0 - no / 1 - yes

    Build a Box Object

    {
       "date": "2018-06-12",
       "status": "See details in Build a Box Statuses table",
       "choices": [
          {
             "slot_id": 1,
             "product_id": 111,
             "variant_id": 222,
             "quantity": 1
          }
       ]
    }
    
    Element Sub Element Type Description
    date   integer Build a Box date in Y-m-d format
    status   integer Look on statuses
    choices   array List of BaB choices
      slot_id integer Slot ID
      product_id integer Shopify Product ID
      variant_id integer Shopify variant ID
      quantity integer Product Quantity

    Build a Box Statuses

    Status Definition
    locked Inside of lock time with choices in database
    locked_default_choices Inside of lock time without choices in database
    locked_after_choices_made Choices made and in available range but lock after choices is turned on in group
    available In available range with no changes in database
    available_choices_made In available range with choices in database
    unavailable Date beyond time to make choices
    unavailable_choices_made Date beyond time to make choices but previously choices were made

    General Settings Object

    {
       "recurring_type": 2,
       "cancel_mode": 1,
       "provide_cancel_incentives_enabled": false,
       "custom_cancel_message_enabled": false,
       "custom_cancel_message": null,
       "shop_name": "Test Shop",
       "allow_change_shipping_date": true,
       "allow_change_discounts": true,
       "allow_manage_prepaid": false,
       "bold_token": "123",
       "bold_signature": "123",
       "select_products_url": "https:\/\/test.myshopify.com\/tools\/checkout\/manage_subscription_box\/select_products\/",
       "gateway_name": "cashier",
       "gateway_token": "token",
       "disallowed_line_item_properties": [...],
    }
    
    Element Type Description
    recurring_type integer 1 - 2 -
    cancel_mode string Cancellation Management mode:
    cancel_mode_standard
    cancel_mode_off
    cancel_mode_custom_reasons
    cancel_mode_special_instruction
    gateway_name string Payment gateway name:
    stripe
    braintree
    spreedly
    cashier
    gateway_token string Payment gateway token
    provide_cancel_incentives_enabled string
    custom_cancel_message_enabled boolean
    custom_cancel_message string
    shop_name string Shop name
    allow_change_shipping_date boolean
    allow_change_discounts boolean
    allow_manage_prepaid boolean
    bold_token string BOLD-Authorization Token
    bold_signature string BOLD Signature
    select_products_url string The URL for Select Build A Box products
    disallowed_line_item_properties array Disallowed line item properties name list

    Cashier Card Object

    {
       "public_id": "public_id_1",
       "cc_type": "VISA",
       "expiration": {
          "date": "2024-04-30 00:00:00.000000",
          "timezone_type": 3, 
          "timezone": "UTC"
       }, 
       "last_four": "4242", 
       "is_default": true
    }
    
    Element Sub Element Type Description
    public_id string Cashier Public ID
    cc_type string Credit Card type, for example: VISA
    expiration array
      date date Credit Card expiration date
      timezone_type integer
      timezone string
    last_four integer Credit Card last four digits
    is_default boolean If card is selected as a default

    Initial Data Order Object

    {
        "id": 1,
        "shopify_customer_id": 1,
        "interval_number": 1,
        "interval_type_id": 1,
        "first_name": "FirstName",
        "last_name": "LastName",
        "customer_email": "customer@email.com",
        "address1": "Address1",
        "address2": null,
        "country": "Country",
        "province": "Province",
        "city": "City",
        "zip": "Zip",
        "phone": "1111111111",
        "company": "Bold",
        "purchase_date": "2018-06-12",
        "delete_date": null,
        "last_ship_date": "2018-06-12",
        "next_ship_date": "2018-06-12",
        "discount_code_id": 0,
        "cancel_discount_code_id": 0,
        "billing_first_name": "FirstName",
        "billing_last_name": "LastName",
        "billing_address1": "Address1",
        "billing_address2": "Apt 102",
        "billing_country": "Country",
        "billing_province": "Province",
        "billing_city": "City",
        "billing_zip": "Zip",
        "billing_phone": "1111111111",
        "billing_company": "Bold",
        "notes": null,
        "taxes_included": 0,
        "tax_shipping": 0,
        "attributes": "[]",
        "is_cancellable": 1,
        "cancel_reason": null,
        "reactivatable": false,
        "next_active_ship_date": null,
        "billing_plan_id": 0,
        "order_day": null,
        "last_updated": "2018-06-12 11:11:51",
        "order_logs": [
           {
              "shopify_order_num": "#1",
              "shopify_order_token": "1",
              "price": "1.00",
              "tax": "1.00",
              "shipping": "1.00",
              "purchase_date": "2018-06-12",
              "share_shipping": false,
              "discount_amount": "0.00",
              "free_shipping_discount_applied": 0,
              "charged_amount": "1.00"
           }
        ],
        "order_product_exceptions": [
           {
              "date": "2018-07-12",
              "products": [
                 {
                    "product_internal_id": 1,
                    "quantity": 8
                 }
              ]
           }
        ],
        "order_interval_type": {
           "interval_type": "day",
           "interval_text": "Day",
           "estimated_days": 1
        },
        "order_fixed_recurrences": null,
        "order_products": [
           {
              "id": 1,
              "shop_app_id": 1,
              "bold_order_id": 1,
              "product_id": 111,
              "variant_id": 222,
              "price": "1.00",
              "quantity": 1,
              "gram": 0,
              "product_title": "ProductTitle",
              "variant_title": "VariantTitle",
              "status": 0,
              "price_changed": 0,
              "shopify_price": "1.00",
              "shopify_new_price": null,
              "sku": "",
              "shopify_inventory": null,
              "inventory_management": null,
              "taxable": 1,
              "properties": "{\u0022frequency_num\u0022:\u00227\u0022,\u0022frequency_type\u0022:\u00221\u0022,\u0022group_id\u0022:\u00226\u0022,\u0022is_prepaid\u0022:\u0022\u0022,\u0022total_recurrences\u0022:\u0022\u0022,\u0022prepaid_id\u0022:\u0022\u0022,\u0022recurr_after_limit\u0022:\u00221\u0022,\u0022_ro_subscription_box_choices\u0022:[{\u0022slot\u0022:\u002211\u0022,\u0022quantity\u0022:\u00222\u0022},{\u0022slot\u0022:\u002212\u0022,\u0022quantity\u0022:\u00221\u0022}],\u0022_ro_billing_plan\u0022:0,\u0022frequency_type_text\u0022:\u0022Day(s)\u0022}",
              "vendor": "VendorName",
              "is_active": true,
              "last_updated": "2018-06-12 11:06:23",
              "properties_group_id": 6
           }
        ],
        "order_shipping_rate": {
           "bold_order_id": 1,
           "code": "DOM.EP",
           "name": "ShipName",
           "price": 1.00,
           "source": "shopify",
           "need_change": false,
           "hash": "123"
        },
        "order_exceptions":[
           "2018-08-12",
           "2018-09-12"
        ],
        "order_hooks": [
           {
              "bold_product_id": 111,
              "conditions": [
                 {
                    "condition_type": "countdown",
                    "condition_value": "8"
                 }
              ],
              "title": "Switch Price",
              "new_price": null
           }
        ],
        "next_orders": ["2018-06-12",...],
        "is_billing_the_same": true,
        "build_a_box_next_orders": [
           {
              "date": "2018-06-12",
              "status": "See details in Build a Box Statuses table",
              "choices": [
                 {
                    "slot_id": 1,
                    "product_id": 111,
                    "variant_id": 222,
                    "quantity": 1
                 },{...},{...}],
           },{...},{...}
        ],
        "build_a_box": true,
        "has_prepaid": false,
        "group_id": 1,
        "discount": null,
        "discount_queue": [
    ], "credit_card": { "last_four": "1111", "expiry_date": "2021-12-31 00:00:00" }, "status": 0 }
    Element Type Description
    id integer Recurring Orders internal product ID
    shopify_customer_id integer Shopify Customer ID
    interval_number integer Recurring interval number
    for example: 2 (for every 2 weeks/days etc.)
    interval_type_id integer Recurring interval type:
    1 - Day
    2 - Week
    3 - Month
    5 - Year
    first_name string Shipping First Name
    last_name string Shipping Last name
    customer_email string Customer Email address
    address1 string Shipping Address
    address2 string Shipping Address optional
    country string Shipping Country
    province string Shipping Province
    city string Shipping City
    zip string Shipping Zip Code
    phone string Shipping Phone Number
    company string Shipping Company
    purchase_date date First order date
    delete_date date Delete date or null
    last_ship_date date Last order date
    next_ship_date date next order date
    discount_code_id integer Discount Code ID
    cancel_discount_code_id integer Cancellation Code ID
    billing_first_name string Billing First Name
    billing_last_name string Billing Last name
    billing_address1 string Billing Address
    billing_address2 string Billing Address optional
    billing_country string Billing Country
    billing_province string Billing Province
    billing_city string Billing City
    billing_zip string Billing Zip Code
    billing_phone string Billing Phone Number
    billing_company string Billing Company
    notes string Order notes
    taxes_included integer
    tax_shipping integer
    attributes string
    is_cancellable integer
    cancel_reason string
    reactivatable integer 0/1
    next_active_ship_date date
    billing_plan_id integer
    order_day integer
    last_updated datetime
    order_logs array List of Order Log Objects
    order_product_exceptions array List of Order Product Exceptions Object
    order_interval_type array
    order_fixed_recurrences object/null Order Fixed Recurrences Object
    order_products array List of Order Product Object
    order_shipping_rate object Order Shipping Object
    order_exceptions array Array of order exception dates
    order_hooks array Order hooks Object
    next_orders array Array of next order dates
    is_billing_the_same boolean true/false
    build_a_box_next_orders array Build A Box Object
    build_a_box boolean If order is Build a Box type
    has_prepaid boolean If order is prepaid
    group_id integer Subscription Group ID
    discount object / null Order Discount Object
    discount_queue array List of Order Discount Queue Objects
    credit_card array
    status integer Order payment status:
    0 - no failed tx's
    1 - failed tx's
    2 - authentication required