Pull orders that changed, oldest change first
const url = 'https://example.com/api/v1/integration/orders';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/integration/ordersRequires the orders:read scope. Orders come back in the order they last changed, so a consumer can follow the feed forward. Pass nextCursor from the previous page as cursor to continue; a null nextCursor means the feed is caught up. Use since to start from a point in time and repeat status to keep only certain statuses — an unknown status or a malformed cursor answers 400. limit defaults to 50 and is capped at 100. Archived orders are never returned.
Authorizations
Заголовок раздела «Authorizations»Parameters
Заголовок раздела «Parameters»Query Parameters
Заголовок раздела «Query Parameters»Responses
Заголовок раздела «Responses»OK
One page of the order feed, oldest change first.
object
The orders on this page.
One order, as the pull feed reports it.
object
The order’s id in PickUpper.
The id the source system created the order under, or null for an order created in PickUpper.
The short human-readable code operators use to refer to the order.
Where the order stands, as a name: New, InPlanning, Planned, InProgress, FullyDelivered, PartiallyDelivered, Returned, Collected, PartiallyCollected, NotCollected, Refused, Cancelled or Closed. A Pickup or Return order ends Collected, PartiallyCollected or NotCollected where a Delivery order ends FullyDelivered, PartiallyDelivered or Returned; a Rebox order uses the delivery values and is FullyDelivered only when the new item was handed over and the old one collected. New values may be added: treat a value you do not know as not final.
The tenant’s own sub-status within the current status, by name, or null when none is set. It is a label the tenant configures, not part of the status machine.
What the order is for, as a name: Delivery, Pickup, Return or Rebox.
The reference the source system sent with the order, stored and returned unchanged.
When the order was created (UTC).
When the order last changed (UTC). This is the value the feed orders by and that the since parameter compares against.
The ids of the tags on the order, always an array. Resolve a tag id through the tag endpoints.
The opaque token to send as cursor for the next page, or null when the feed is caught up. Treat it as a value to pass back unchanged, not as something to parse.
Example
{ "items": [ { "status": "New", "type": "Delivery" } ]}Validation failed
The body of a 400 response, served as application/problem+json. It follows the RFC 9457 problem-details shape: type, title, status and detail are the standard members, and errors is an extension that lists the offending fields.
object
A stable, machine-readable code for the error. Branch on this rather than on the wording of the title or the detail.
A short label for the kind of failure, such as Validation failed.
The HTTP status code of the response, which for this body is 400.
A human-readable explanation of this particular failure, or null.
The fields the request was rejected over, one entry each. Omitted entirely when the failure carries no field-level context, so a 400 can arrive without this member.
One field the request was rejected over.
object
The name of the offending field, spelled as the request body spells it.
A stable, machine-readable code for this field’s failure.
The rejected value. Always present, and null when it was not safe to echo back.
A human-readable explanation of what is wrong with the field.
Set only by the dispatcher application’s manual planning operations — integration endpoints never set it. True when every problem in this refusal is a tenant-policy refusal the operator may override by re-sending the same request with force: true. Omitted otherwise.
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "errors": [ { "field": "example", "code": "example", "value": "example", "message": "example" } ], "overridable": true}Missing or invalid credentials
Authenticated, but the role or scope does not allow this
Not found
RFC 9457 problem body returned on every failure. type carries a stable machine-readable error code (see docs/api/error-codes.yaml), title a short human summary, status the HTTP status, detail the specific message.
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Conflict
RFC 9457 problem body returned on every failure. type carries a stable machine-readable error code (see docs/api/error-codes.yaml), title a short human summary, status the HTTP status, detail the specific message.
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Rate limit exceeded; retry after the Retry-After header
RFC 9457 problem body returned on every failure. type carries a stable machine-readable error code (see docs/api/error-codes.yaml), title a short human summary, status the HTTP status, detail the specific message.
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Unexpected error
RFC 9457 problem body returned on every failure. type carries a stable machine-readable error code (see docs/api/error-codes.yaml), title a short human summary, status the HTTP status, detail the specific message.
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}