Asynchronous API imports for custom channels

Import orders and products asynchronously for your custom channel

Last updated April 27th, 2021

When building out a custom channel connection to Jetti, you'll likely first develop using the synchronous API to import orders and products. This will provide feedback on validation issues and errors as the integration is being built.

When you are ready to go-live, you'll want to ensure there is sufficient throughput available for sending new orders and order updates. For example, during peak times at checkout, there may be more orders flowing in than the API throttling in the synchronous API will allow.

To solve this, we recommend migrating to the asynchronous API when production ready. This will allow higher throughput of data. While any immediate errors on the order import won't be returned within the request cycle, the errors will be visible in the API logs. For example, when integrating with a custom channel, you'll be able to access the error logs on the main sales list.

You should typically accept a 200 response from any request being sent into the endpoint.

Importing sales asynchronously

When switching to the asynchronously method, while the data structures being sent will remain the same, there will be changes to the endpoint and authentication.

  • To import sales, you'll need to migrate from the synchronous endpoint (e.g. https://api.jetti.io/channels/:id/manual-sale.json) to the asynchronous endpoint (https://inbound.jetti.io/webhooks/custom-channels/orders.json).

  • Alongside the URL change, the authentication method will also change for the asynconrous sending of data. Instead of a Bearer Token, you'll pass a jetti-webhook-hash field in the header. We recommend retaining the Content-Type to application/json header, as with the synchronously calls.

You can find your webhook hash under Integrations > Custom channel. It will be listed on the main setup tab:

The complete request should now be as follows (payload body removed for brevity). Note the change to the URL and the header.

curl --request POST \
  --url 'https://inbound.jetti.io/webhooks/custom-channels/orders.json' \
  --header 'Content-Type: application/json' \
  --header 'jetti-webhook-hash: abcdef' \
  --data '{}'

Data sent is typically reflected in the system under a minute. When sending larger volumes, this delay may be extended. Within our queue, priority is given to new data vs updates.

We will be rolling out throttling of these endpoints. We'd recommend assuming a 10x increase in your syncronous API throughput as a benchmark while we don't have any formal restrictions in place.

Back to API