POST or PUT), Trackstar forwards that request directly to the underlying integration in real time. We respond immediately with the success or error status from the integration, including any error messages or validation feedback provided by the integration itself. This ensures transparency and helps with rapid debugging and resolution when issues arise.
We have done the heavy lifting to unify the body of each action across integrations, so you can write data in a consistent way across all of them. The same field means the same thing no matter which integration you send it to.
Which fields are required or accepted still depends on the integration, and some integrations take a field that is unique to them. So the API reference shows one schema per integration for every write, starting with the Sandbox, which you can use to try a write before connecting a real account. See Extensiv’s Create Order Schema for an example.
On the API side, we have created an endpoint that will return the required and optional fields for a given integration.
The /write-info endpoint
The GET Write Info endpoint returns information on our supported integrations in standard OpenAPI format. The required and optional fields are denoted in the response. If you choose to pass in the optional access token, you will also get any connection-specific information you might need about writing data. Here’s an example from hitting/integrations/wms/ongoing (truncated for just Returns):
Write endpoints your org has disabled return a
403 (e.g. create_order is disabled for this connection) without reaching the integration.Example Create Return Request
Based on the response from the/write-info endpoint, the required and optional fields to create an order in the Some WMS integration are as follows:
Let’s send in all of the fields for this request:
Non Nullable Fields
All fields in the write body are non-nullable. You cannot send anull / "none" / empty string for any field. This is because nulls are ambiguous: they could mean you want the field blank on purpose, or maybe you’re just using a default. The underlying systems also disagree on what a null should do (some clear the field, some reject the request, some ignore it). Rather than guess and risk writing data you didn’t intend, we reject the request up front. If you don’t mean to set a field, leave it out of the body entirely.
For example, tracking_number and tracking_url are optional fields. Sending in the following request will result in a 422 error response:
Safe Retries with Idempotency Keys
When you write to the integration, it happens right away. If the network has a problem or times out, you might not know if your write actually went through. If you try again without checking, the write could be applied twice in the connected system, such as a duplicate order or the same file attached again. To make retrying safe, send anIdempotency-Key header with your write. Use a unique value for each write, like a UUID (up to 255 characters). If you retry with the same key, we’ll give you the response from the first request instead of sending it to the integration again.
A few more things to know:
- Keys expire 24 hours after the first request. After that, the same key acts like a new one.
- Keys are tied to a connection. Using the same key on two different connections counts as two separate keys.
- A retry still counts as the same request if its body lists the fields in a different order or uses different spacing. Reordering the items inside a list, such as
line_items, does make it a different request. - Every write endpoint accepts this header, including cancels and batch writes. Passthrough requests don’t.
Don’t See a Field You Need?
If the field is part of Trackstar’s schema (thinkorder_number, carrier_name, expected_arrival_date etc) then reach out to us and we’ll gladly expose it for you if the integration allows.