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 is 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 Recurring Orders app and request access to this feature via Bold's Merchant Success team.

    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/v1"
    

    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 Recurring Orders 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 /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/v1/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 /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": [
    ] },{...}, {...}], "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 the page initially

    GET /manage/subscription/initial_data

    Data Object

    Element Description
    orders Array of all the Order Objects associated to a customer
    general_settings General Settings Object containing the Recurring Orders App settings for the shop
    groups
    countries List of available countries
    products Array of all products appearing in the orders above

    Orders

    Delete Order

    DELETE /manage/subscription/orders/{order_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 deletes the specified order.

    DELETE /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 /manage/subscription/orders/{order_id}/cancellation_offers 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
          }
       ]
    }
    

    This endpoint retrieves cancellation offers for the specified order.

    GET /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 /manage/subscription/orders/{order_id}/card 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 orders credit card information.

    GET /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 /manage/subscription/orders/{order_id}/cashier_card_data 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 /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 /manage/subscription/orders/{order_id}/discounts  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 information for an order.

    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 /manage/subscription/orders/{order_id}/prepaid_settings 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
          }
       }
    }
    

    This endpoint retrieves prepaid settings details for the specified order.

    GET /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 /manage/subscription/orders/{order_id}/products 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 an order.

    GET /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 order is prepaid

    Get Shipping Rates

    GET /manage/subscription/orders/{order_id}/shipping_rates 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 order id.

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

    URL Parameters

    Element Type Description
    order_id integer Subscription Order ID

    Data Object

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

    Get Upcoming Orders

    GET /manage/subscription/orders/{order_id}/upcoming 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 all upcoming orders.

    GET /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 /manage/subscription/orders/{order_id}/upcoming_products 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 retrieves the upcoming products from a Recurring Orders order by Subscription Order ID.

    GET /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 /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 /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 /manage/subscription/orders/{order_id}/recover 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 to remove order exception date.

    POST /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 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 /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 /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 /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 Cancellation Offer Code

    POST /manage/subscription/orders/{order_id}/cancellation_offer_code 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 /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 /manage/subscription/orders/{order_id}/discount 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 order.

    POST /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 /manage/subscription/orders/{order_id}/upcoming_products 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": "hash" } }

    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 an upcoming order

    PUT /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 /manage/subscription/orders/{order_id}/save_swap_product 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.

    PUT /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 /manage/subscription/orders/{order_id}/skip 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 to add order exception date.

    POST /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 /manage/subscription/orders/{order_id}/billing_address 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 specific order.

    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 /manage/subscription/orders/{order_id}/card 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 /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 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 Order.

    PUT /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 /manage/subscription/orders/{order_id}/interval 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 the provided order id.

    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 /manage/subscription/orders/{order_id}/prepaid_settings 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 /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 /manage/subscription/orders/{order_id}/shipping_address 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 address for specific order.

    PUT /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 /manage/subscription/orders/{order_id}/shipping_method 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": "hashValue"
            }
        }
    }
    

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

    PUT /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 /manage/subscription/orders/{order_id}/quantity 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.

    PUT /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 /manage/subscription/orders/{order_id}/shopify_order_tags 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 /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 /manage/subscription/groups/{group_id}/swap_information?product_internal_id={product_internal_id}&order_id={order_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 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