Best Practices for Pushing
This article covers the "Dos and Don’ts" of interacting with Bushel’s push API. By following these guidelines, your integration with Bushel will complete with fewer surprises.
Request Tracking
Utilizing a Request ID is immensely helpful when communicating about and troubleshooting any issues with Bushel. If not provided in the initial request, Bushel will generate a random Request ID. The is recorded in Bushel’s logs and observability tools and is returned as an X-Request-ID
header in the response.
Detecting Changes
Do
-
When data is changed, immediately trigger a push to Bushel containing only items with updated data
-
Routinely poll for changed data and only send updated data to Bushel. Polling for updates no less than once every 15m is highly recommended, particularly for frequently-updated items such as Splits and Tickets.
Formatting Requests
Detecting Deletes
Timestamps
Identifiers
In order for relationships between records to function, the identifiers used must match exactly. For example, the id
of an account must be identical to the corresponding user_id
on a Contract in order for a User to view their Contract.
Historical Data
Syncing of all records that have been updated since a particular start date is required for the product to perform correctly.
Error Handling
We take pride in our uptime and strive to always have our services available. Unfortunately, errors both within and outside our control do occur. Building an integration resilient to intermittent problems reduces support and manual recovery efforts while providing a better user experience to our customers.
Do
-
If a retry-able error is received when making a request, the request should be retried after a delay calculated by an exponential backoff algorithm. Retry-able errors include:
-
409
errors (which may be returned by our firewall) -
All
500
-level errors
-