This tutorial walks you through how to add or update an order using Bronto's REST API. All of the code examples in the tutorial are based on JAX-RS, so if you want to use the examples as written download that library.Start Tutorial
In order to use Bronto's REST API to work with order data you need to have an account that uses Bronto's New Order Service. If you have the Cart Recovery app, you are using New Order Service. Also, you should have successfully set up your commerce configuration settings so that your site is connected to Bronto. All of your commerce configuration settings can be found and modified by logging into the platform and navigating to Home->Settings->Commerce.
The Java code examples provided in this tutorial use the JAX-RS library. If you want to use the examples as written you will need to install the library before you start.
Setup Hallmonitor Client
If you haven't already, you need to set up Hallmonitor in order to be able to authenticate and work with Bronto's REST API. Hallmonitor is an OAuth 2.0 compliant service that is used to request and refresh access tokens for Bronto's APIs. You must create a client key and client secret for Hallmonitor in order to authenticate with Hallmonitor and get an API token.
A client key (ID) and secret are generated and shown on the Data Exchange page. Save the client key and client secret shown in the REST Integrations section of the Data Exchange page. You will use it in the next step to create an API token.
Import JAX-RS Library
To use the example code provided, you will need to have installed the JAX-RS library. Import this library at the start of your session if you want to use our example code as written. Otherwise, import the library of your choice and adjust the code samples to work with your library.
Set Global Variables
Map the string variables you will use to construct requests and store responses in the following steps. This isn't strictly required, but it will save you from having to type these string variables multiple times.
Because we are adding and updating an order in this tutorial we've provided the variables for each of these calls. However, you will likely only need to either add or update an Order, so you only need to create the variables relevant to your situation. For example, if you only want to add an order you would not include the UPDATE_ORDER_PATH or ORDER_ID.
Get Authentication Token
This call returns an authentication token as well as a refresh token to be used once the access token expires. The access token expires after 1 hour. The refresh token expires after 30 days. You will need to use this token to access Bronto's API.
Use Token To Authenticate With Bronto's API
Each request to the external API must include an HTTP Authorization header. The header value should specify a “Bearer” authorization scheme followed by a space and then the OAuth2 access token.
A 403 Forbidden response will be returned if no authorization header is provided, if a scheme other than Bearer is specified, if the token is unknown/expired, or if the token has an insufficient scope to execute the request.
To leverage your Order data in Bronto you must first add your Order to Bronto. To do this, first build the Add Order request data, making sure to match the Bronto defined names for each field. The example provided shows every valid field you can pass in for an Order.
When you add the Order, only set createContact to true if the Contact does not already exist in Bronto. If createContact is true and you provide an emailAddress that is not currently associated with a Contact, a transactional Contact will be created. A transactional Contact can only be sent transactional emails until the contact opts in to receiving messages from you.
After you have added the Order, check the response to make sure your request was successful. If it was not, use the information provided in the response to troubleshoot you issue. Generally, if you have an issue adding an Order it's because the customerOrderId already existed in Bronto or not all of the required data was included in the request. Grab the orderId from the response data to use in future requests.
View An Order's Data
This is optional and just shows how to get an Order using the orderId from a previous AddOrder request. Note that the Bronto generated 'orderId' is used to identify the Order in these requests, not the user supplied 'customerOrderId.'
Update An Order
When you update an order, first build the request data. You can update any of the fields available in the AddOrder request except for cartId, customerOrderId, and orderDate. You only need to supply the Order fields which you wish to update.
Any valid value you provide will replace the existing value. This includes the 'lineItems' field as a whole. So if you update the lineItems, please provide all lineItems you wish to associate with the order on each update request.
When you update the order, only set createContact to true if the contact does not already exist in Bronto. If createContact is true and you provide an emailAddress that is not currently associated with a contact, a transactional contact will be created. A transactional contact can only be sent transactional emails until the contact opts in to receiving messages from you.