API reference

Fulfillment API

The Carriyo Fulfillment API covers the work between order allocation and carrier handoff: picking items off shelves, packing them into parcels, and managing customer-collection handovers. Bin-location mappings for the Fulfillment App are also managed here.

Access

Every request needs the matching scope on the API client. Picks, packs and collections sit under /orders and are covered by the orders scope; bin locations need the bin-locations scope. A 403 on a documented endpoint means the client lacks the scope, not that the endpoint is unavailable.

Idempotency

Write endpoints accept an optional Idempotency-Key request header for safe request replay when your integration retries after uncertain network outcomes, except Remove a package and Send pickup OTP to customer. Replayed responses include Idempotent-Replayed: true. See Idempotency for the full contract.

Serverhttps://api.carriyo.comAuthOAuth 2.0 + API KeySpecfulfillment.yaml

Picks

A pick is a picker's work order: the line items to pull from the shelves at one fulfillment location, for one or more fulfillment orders. It is created open, starts into processing, and ends completed or cancelled, pausing in stopped when cancelled with items already picked. Picks are reached only through the lookup reads by order or fulfillment order, which return summaries.

Picks emit no webhook, and no pick operation fires the order webhook, automatic creation included. Poll the order or the pick for changes.

Related: How picks move line items through the pick lifecycle

11 operations · 0 objects

post/orders/picks

Create a pick

Creates a pick for line items of one or more fulfillment orders at a single location, and moves those line items into picking.

Behavior

What to send

partner_location_id, the Carriyo location id, and at least one item, each naming its order_id, fulfillment_order_id, line_item_id and quantity. Every item must belong to a fulfillment order at that location.

  • Only an allocated line item can be picked, and quantity may not exceed its quantity.
  • A line item already in a non-terminal pick is refused.
  • A pick is refused while the order or the fulfillment order is on hold.
  • With split picking disabled in the location's Fulfillment App settings, every non-terminal line item of each fulfillment order must be included.

With auto_create_picks on in the location's Fulfillment App settings, Carriyo creates one pick per fulfillment order itself, skipping held orders. It does so on order creation, on allocation, and on a location update that gives the fulfillment order its first location. A manual create is then only for line items not already in a pick.

Pick type

  • One fulfillment order gives an ORDER_PICK, even when only some of its items are included.
  • Several fulfillment orders give a CLUSTER_PICK when every included fulfillment order is fully covered, otherwise a ZONE_PICK.
  • Several fulfillment orders need cluster picking enabled in the location's Fulfillment App settings. Any fulfillment order not fully included needs split picking enabled, an ORDER_PICK of some items too; so a ZONE_PICK needs both.

Picker

picker must hold the Fulfillment App's pick permission at that location. On create, a picker without it is dropped silently and the pick is created without one; Reassign a pick rejects it instead.

Without a picker, assignment follows the location's picker assignment strategy: manual and round_robin leave the pick unassigned, work_load assigns the least-loaded eligible picker.

What happens

  1. Each line item moves from allocated to pick_in_progress. A quantity below the line item's splits it: the requested quantity moves into picking as a new line item and the remainder stays allocated.
  2. The pick is created in open with its pick_type and a pick list document.
  3. The order status is recalculated. No webhook fires.

Errors

  • 400partner_location_id is blank.
  • 400items is empty.
  • 400 — an item belongs to a fulfillment order at another location.
  • 400 — a line item is not allocated.
  • 400 — a line item is already in a non-terminal pick.
  • 400 — a quantity exceeds the line item's quantity.
  • 400 — the order or the fulfillment order is on hold.
  • 400 — the items span more than one fulfillment order with cluster picking disabled.
  • 400 — the items leave out line items of a fulfillment order with split picking disabled.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: pick-requestrequired
  • partner_location_idstringrequired
    The Carriyo location id where the pick takes place (location_id in the Locations API), not your partner_location_code. Every item must belong to a fulfillment order allocated to this location.
  • pickerstring
    The picker's scoped user key as it appears in Fulfillment App access: global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users; a bare email is not a valid key. The user must hold pick permission at partner_location_id; their on_duty flag is not checked, since only work_load assignment uses it. When omitted, the location's picker assignment strategy applies.
  • itemspick-item-request[]required
    The fulfillment-order line items to pick. At least one item is required.

Responses

200Pick created. Returns the full pick.Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Validation failed.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/picks/{pickId}

Get a pick

Returns the full pick, including its items, documents and timestamps.

Errors

  • 400pickId is unknown.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier (e.g. `PIK_123`).

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200The full pick record.Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Pick not found.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/picks/order/{orderId}

List picks for an order

Returns lookup summaries of the picks associated with an order.

Behavior

Each entry carries pick_id, tenant, partner_location_id, status and creation_date, never the items or documents; read the full pick by pick_id. An unknown orderId returns an empty array, not an error.

Path parameters

NameTypeRequiredDescription
orderIdstringYesThe order identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of pick lookup summaries.

An array of pick-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/picks/fulfillment-order/{fulfillmentOrderId}

List picks for a fulfillment order

Returns lookup summaries of the picks associated with a fulfillment order.

Behavior

Each entry carries pick_id, tenant, partner_location_id, status and creation_date, never the items or documents; read the full pick by pick_id. An unknown fulfillmentOrderId returns an empty array, not an error.

Path parameters

NameTypeRequiredDescription
fulfillmentOrderIdstringYesThe fulfillment order identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of pick lookup summaries.

An array of pick-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/picks/{pickId}/start

Start a pick

Moves an open pick to processing and sets start_date.

Behavior

The pick must be open and have a picker, set by Create a pick or Reassign a pick. No request body is needed.

Errors

  • 400pickId is unknown.
  • 400 — the pick is not open.
  • 400 — the pick has no picker.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Responses

200Pick started. Status is now `processing`.Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Pick is not in `open` status, or no picker is assigned.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/picks/{pickId}/cancel

Cancel a pick

Cancels a pick and returns its line items to allocated, or stops it when items have already been picked.

Behavior

Outcome.

  • An open or stopped pick, or a processing pick with nothing picked, becomes cancelled with cancel_date; its line items return to allocated.
  • A processing pick with any picked quantity becomes stopped instead; its line items stay pick_in_progress and the order is not touched. Cancel a stopped pick again to cancel it fully; it still accepts Restock items back to shelf first, to record items returned to the shelf.

Reason. reason_code is optional and stored on the pick. The body may be omitted.

Errors

  • 400pickId is unknown.
  • 400 — the pick is completed.
  • 400 — the pick is already cancelled.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: cancel-pick-request
  • reason_codestring
    Free-text reason stored on the pick as cancellation_reason_code.

Responses

200Pick cancelled (or stopped if items were partially picked).Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Pick is already in a terminal status (`completed` or `cancelled`).

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/picks/{pickId}/reassign

Reassign a pick

Assigns or replaces the picker on an open pick.

Behavior

picker is required, and the user must hold the Fulfillment App's pick permission at the pick's location. Unlike Create a pick, which drops such a picker silently, an invalid picker is rejected here.

Errors

  • 400pickId is unknown.
  • 400 — the pick is not open.
  • 400picker is missing.
  • 400picker has no pick permission at the pick's location.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: reassign-pick-requestrequired
  • pickerstringrequired
    The new picker's scoped user key as it appears in Fulfillment App access (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users); a bare email is rejected. The user must have pick permission at the pick's location; their on_duty flag is not checked.

Responses

200Pick reassigned.Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Pick is not in `open` status, or the picker does not have `pick` permission.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/picks/{pickId}/complete

Complete a pick

Completes a processing pick, moving its line items to picked and handing them over for packing.

Behavior

Preconditions. The pick must be processing and every item fully resolved: quantity_picked plus its mispicked quantities equals quantity. No request body is needed.

What happens. The pick becomes completed and each line item is settled by what was picked:

  • fully picked, it moves from pick_in_progress to picked;
  • partly picked with mispicks, it moves to picked with its quantity reduced to the picked amount;
  • with nothing picked, it is cancelled.

Mispicked remainder. The mispicked units of a partly picked line item are dropped. No cancelled line item is created for them, nothing returns to allocated, and the order's own line item is unchanged.

Nothing picked. When nothing at all was picked across the pick, the pick becomes cancelled instead of completed and every line item returns to allocated.

Errors

  • 400pickId is unknown.
  • 400 — the pick is not processing.
  • 400 — an item is not fully picked or mispicked.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Responses

200Pick completed (or cancelled if all items were mispicked).Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Pick is not in `processing` status, or not all items are accounted for.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/picks/{pickId}/items/pick

Record items picked off shelf

Records quantities the picker has taken from the shelf, adding to each item's quantity_picked.

Behavior

What to send. A JSON array of {fulfillment_order_id, line_item_id, quantity}, each entry naming an item of the pick. The pick must be processing.

What happens. Each quantity is added to the item's quantity_picked. It must not exceed what remains: quantity less quantity_picked less its mispicked quantities. Calls accumulate, and line items stay pick_in_progress until the pick completes.

Validation. One invalid entry rejects the whole call, and nothing is saved.

Errors

  • 400pickId is unknown.
  • 400 — the pick is not processing.
  • 400 — an entry names a line item that is not in the pick.
  • 400 — a quantity exceeds what remains to pick; the message gives the available quantity.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonrequired

An array of pick-item-action-request. Each item has the following fields:

  • fulfillment_order_idstringrequired
    The fulfillment order of the line item. Together with line_item_id it must match an item in the pick.
  • line_item_idstringrequired
    The line item to pick or restock. Must be in the pick.
  • quantityinteger
    Units to pick or restock. For pick, at most quantity - quantity_picked - mispicked units, and for restock, at most quantity_picked; more is rejected with 400. Omitting it fails with 500, not 400.

Responses

200Updated pick with incremented `quantity_picked` values.Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Pick is not in `processing` status, a line item is not in the pick, or quantity exceeds what remains to be picked.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/picks/{pickId}/items/restock

Restock items back to shelf

Records quantities put back on the shelf, reducing each item's quantity_picked.

Behavior

What to send. A JSON array of {fulfillment_order_id, line_item_id, quantity}, each entry naming an item of the pick. The pick must be processing or stopped.

What happens. Each quantity is taken off the item's quantity_picked and must not exceed it. Line item statuses do not change.

Validation. One invalid entry rejects the whole call, and nothing is saved.

Errors

  • 400pickId is unknown.
  • 400 — the pick is not processing or stopped.
  • 400 — an entry names a line item that is not in the pick.
  • 400 — a quantity exceeds the item's quantity_picked; the message gives the picked quantity.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonrequired

An array of pick-item-action-request. Each item has the following fields:

  • fulfillment_order_idstringrequired
    The fulfillment order of the line item. Together with line_item_id it must match an item in the pick.
  • line_item_idstringrequired
    The line item to pick or restock. Must be in the pick.
  • quantityinteger
    Units to pick or restock. For pick, at most quantity - quantity_picked - mispicked units, and for restock, at most quantity_picked; more is rejected with 400. Omitting it fails with 500, not 400.

Responses

200Updated pick with decremented `quantity_picked` values.Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Pick is not in `processing` or `stopped` status, a line item is not in the pick, or quantity exceeds what was picked.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/picks/{pickId}/items/mispick

Record mispicked items

Records quantities that could not be picked, with a reason, on each item's mispicks.

Behavior

What to send. A JSON array of {fulfillment_order_id, line_item_id, quantity, reason}, each entry naming an item of the pick. The pick must be processing.

What happens. Each entry is appended to the item's mispicks as a record of quantity and reason. The quantity must not exceed what remains: quantity less quantity_picked less mispicks already recorded. Nothing is decremented, and line items keep their status until Complete a pick settles them.

Validation. One invalid entry rejects the whole call, and nothing is saved.

Errors

  • 400pickId is unknown.
  • 400 — the pick is not processing.
  • 400 — an entry names a line item that is not in the pick.
  • 400 — a quantity exceeds what remains; the message gives the available quantity.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonrequired

An array of mispick-item-request. Each item has the following fields:

  • fulfillment_order_idstringrequired
    The fulfillment order of the line item. Together with line_item_id it must match an item in the pick.
  • line_item_idstringrequired
    The line item that was mispicked. Must be in the pick.
  • quantityinteger
    Units that could not be picked, at most quantity - quantity_picked - mispicked units; more is rejected with 400. Omitting it fails with 500, not 400.
  • reasonstring
    Free-text reason, stored on the item's mispicks entry.

Responses

200Updated pick with mispick records appended.Schema: pick-response
  • tenantstring
    Tenant identifier.
  • pick_idstring
    Unique pick identifier, prefixed PIK_.
  • partner_location_idstring
    The Carriyo location id of the location the pick belongs to.
  • pickerstring
    The assigned picker's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until a picker is assigned.
  • pick_typestring
    Set from the items at creation: ORDER_PICK when all items belong to one fulfillment order, CLUSTER_PICK when several fulfillment orders are each fully included, ZONE_PICK when several are included and any only partly. Several fulfillment orders need cluster picking enabled at the location and any partly included fulfillment order needs split picking enabled, so ZONE_PICK needs both.
    Values:ORDER_PICKZONE_PICKCLUSTER_PICK
  • statusstring
    Lifecycle state: open (created, not started), processing (picker working), stopped (cancelled with items already picked; cancel again to void it). completed and cancelled are terminal.
    Values:openprocessingstoppedcompletedcancelled
  • creation_datestringformat: date-time
    When the pick was created.
  • update_datestringformat: date-time
    When the pick was last modified.
  • start_datestringformat: date-time
    When the pick moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pick was cancelled. Not set when the pick is stopped; omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pick. Omitted when none was given.
  • completed_datestringformat: date-time
    When the pick was completed. Omitted until then.
  • itemspick-item[]
    The line items in the pick with their picking progress. Omitted on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pick, typically the pick list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pick.
  • update_sourcerequest-source
    The system or actor that last modified the pick.
400Pick is not in `processing` status, a line item is not in the pick, or quantity exceeds what remains.

Need the full machine-readable spec? Download the OpenAPI document →

Packs

A pack is a packer's work order: the line items to consolidate into packages at a packing station at one fulfillment location, for one or more fulfillment orders. It is created open, starts into processing once a packer and packing station are set, and ends completed or cancelled; completing it is the handover to shipping, or to collection for click-and-collect fulfillment orders. A pack does not need a prior pick, and packs are reached only through the lookup reads by order, fulfillment order or pick.

Packs have no webhook of their own. Only Complete a pack and Create a shipment from the pack fire the order webhook; after any other pack operation, poll the order or the pack. Complete a pack and Cancel a pack also trigger shipment webhooks through the shipment changes they make.

A local collection is a fulfillment order with delivery_method COLLECTION whose customer_collection_address is absent, names no location, or names the fulfilling location; it needs no shipment. A remote collection is one whose customer_collection_address names another location, and it needs a shipment to get there.

A live shipment is a shipment on a package that is not cancelled. A package with a live shipment cannot be changed, packed, emptied or shipped again; a cancelled shipment does not block.

Related: How packs, packages and shipments fit together

16 operations · 0 objects

post/orders/packs

Create a pack

Creates a pack for line items of one or more fulfillment orders at a single location, and moves those line items into packing.

Behavior

What to send

partner_location_id, the Carriyo location id, and at least one item, each naming its order_id, fulfillment_order_id, line_item_id and quantity, and optionally the pick_id it came from. Every item must belong to a fulfillment order at that location.

  • A line item is packable when it is allocated or picked; a prior pick is not required. quantity may not exceed the line item's quantity.
  • A line item already in a non-terminal pack is refused.
  • pick_id on an item is optional; when given, that pick must exist and be completed.
  • Unlike Create a pick, an order or fulfillment order on hold is not refused.

pick_id and cancel. Cancel a pack returns a line item to picked only when its pack item has a pick_id. Leave pick_id out on a picked line item and a cancel returns it to allocated.

Packer and packing station

packer and packing_station are optional, and neither is validated on create: both are stored as sent. Both must be set before Start a pack, which accepts whatever is stored. Only Reassign a pack checks them: packer for the Fulfillment App's pack permission at the location, and packing_station for existence at the location.

What happens

  1. Each line item moves from allocated or picked to pack_in_progress. A quantity below the line item's splits it, the remainder keeping its status.
  2. The pack is created in open with a packing list document and no packages. packages is absent until you call Add a package to the pack, or Reset packages on the pack, which creates one default package per fulfillment order.

Errors

  • 400partner_location_id is blank.
  • 400items is empty.
  • 400 — an item belongs to a fulfillment order at another location.
  • 400 — a line item is neither allocated nor picked.
  • 400 — a line item is already in a non-terminal pack.
  • 400 — a quantity exceeds the line item's quantity.
  • 400pick_id names a pick that does not exist.
  • 400pick_id names a pick that is not completed.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: pack-requestrequired
  • partner_location_idstringrequired
    The Carriyo location id where packing takes place (location_id in the Locations API), not your partner_location_code. Every item must belong to a fulfillment order allocated to this location.
  • packing_stationstring
    The packing station at the location, stored as sent. Optional at creation but required before Start a pack, which does not check that it exists; only Reassign a pack does.
  • packerstring
    The packer's scoped user key as it appears in Fulfillment App access: global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users; a bare email is not a valid key. Optional at creation but required before Start a pack, and stored as sent without checks. Reassign a pack checks that the user has pack permission at partner_location_id, ignoring their on_duty flag.
  • itemspack-item-request[]required
    The fulfillment-order line items to pack. At least one item is required.

Responses

200Pack created. Returns the full pack.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400Validation failed.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/packs/{packId}

Get a pack

Returns the full pack, including its items, packages, documents and timestamps.

Errors

  • 400packId is unknown.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier (e.g. `PAK_123`).

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200The full pack record.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400Pack not found.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/packs/order/{orderId}

List packs for an order

Returns lookup summaries of the packs associated with an order.

Behavior

Each entry carries pack_id, tenant, partner_location_id, status and creation_date, never the items or packages; read the full pack by pack_id. An unknown orderId returns an empty array, not an error.

Path parameters

NameTypeRequiredDescription
orderIdstringYesThe order identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of pack lookup summaries.

An array of pack-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/packs/fulfillment-order/{fulfillmentOrderId}

List packs for a fulfillment order

Returns lookup summaries of the packs associated with a fulfillment order.

Behavior

Each entry carries pack_id, tenant, partner_location_id, status and creation_date, never the items or packages; read the full pack by pack_id. An unknown fulfillmentOrderId returns an empty array, not an error.

Path parameters

NameTypeRequiredDescription
fulfillmentOrderIdstringYesThe fulfillment order identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of pack lookup summaries.

An array of pack-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/packs/pick/{pickId}

List packs for a pick

Returns lookup summaries of the packs whose items reference a pick.

Behavior

Each entry carries pack_id, tenant, partner_location_id, status and creation_date, never the items or packages; read the full pack by pack_id. An unknown pickId returns an empty array, not an error.

Path parameters

NameTypeRequiredDescription
pickIdstringYesThe pick identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of pack lookup summaries.

An array of pack-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/start

Start a pack

Moves an open pack to processing and sets start_date.

Behavior

The pack must be open and have both a packer and a packing_station, set by Create a pack or Reassign a pack. Neither is validated here. No request body is needed.

Errors

  • 400packId is unknown.
  • 400 — the pack is not open.
  • 400 — the pack has no packer.
  • 400 — the pack has no packing_station.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Responses

200Pack started. Status is now `processing`.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400Pack is not in `open` status, or packing station / packer not assigned.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/reassign

Reassign a pack

Assigns or replaces the packer, the packing station, or both on an open pack.

Behavior

Send packer, packing_station or both; whichever is sent is set and the other is left as it is. packer must hold the Fulfillment App's pack permission at the pack's location, and packing_station must exist at that location. Unlike Create a pack, which stores both as sent, an invalid value is rejected here.

Errors

  • 400packId is unknown.
  • 400 — the pack is not open.
  • 400 — neither packer nor packing_station is sent.
  • 400packer has no pack permission at the pack's location.
  • 400packing_station does not exist at the pack's location.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: reassign-pack-requestrequired
  • packing_stationstring
    The new packing station. Must exist at the pack's location; must not be blank when sent.
  • packerstring
    The new packer's scoped user key as it appears in Fulfillment App access (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users); a bare email is rejected. The user must have pack permission at the pack's location; their on_duty flag is not checked.

Responses

200Pack reassigned.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400Pack is not in `open` status, or validation failed.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/packages

Add a package to the pack

Adds an empty package to a pack and returns its generated package_id.

Behavior

The pack must be open or processing. The package's order_id and fulfillment_order_id must be those of items in the pack; a package belongs to that one fulfillment order, and only its items can be packed into it. Put items into it with Place items into packages.

Errors

  • 400packId is unknown.
  • 400 — the pack is not open or processing.
  • 400order_id is not in the pack.
  • 400fulfillment_order_id is not in the pack.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: add-package-requestrequired
  • order_idstringrequired
    The order the package belongs to. Must match an item in the pack.
  • fulfillment_order_idstringrequired
    The fulfillment order the package belongs to. Must match an item in the pack.
  • package_typestring
    Free-text package type, such as medium_box; there is no catalog of types.
  • dimensiondimension
    Outer dimensions of the package.
  • empty_weightweight
    Weight of the empty package.
  • max_weightweight
    Maximum weight the package type can hold.

Responses

200Package added. The full pack is returned with the new package in the `packages` array.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400The pack is not `open` or `processing`, or the order or fulfillment order is not in the pack.

Need the full machine-readable spec? Download the OpenAPI document →

put/orders/packs/{packId}/packages/{packageId}

Update a package

Updates a package's physical properties; only the fields sent are changed.

Behavior

The pack must be open or processing, and the package must have no live shipment; once a shipment exists for the package, update the shipment itself. Only package_type, dimension, empty_weight and max_weight are changed, each when present.

weight cannot be set here or by any other pack operation, so Create a shipment from the pack uses empty_weight as the parcel weight.

Errors

  • 400packId is unknown.
  • 400packageId is not in the pack.
  • 400 — the pack is not open or processing.
  • 400 — the package has a live shipment.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.
packageIdstringYesThe package identifier (e.g. `PKG_456`).

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: update-package-requestrequired
  • package_typestring
    Free-text package type, such as medium_box; there is no catalog of types.
  • dimensiondimension
    Outer dimensions of the package.
  • empty_weightweight
    Weight of the empty package.
  • max_weightweight
    Maximum weight the package type can hold.

Responses

200Package updated.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400The pack is not `open` or `processing`, or the package has a live shipment.

Need the full machine-readable spec? Download the OpenAPI document →

delete/orders/packs/{packId}/packages/{packageId}

Remove a package

Removes a package from a pack, unpacking its items first.

Behavior

The pack must be open or processing, and the package must have no live shipment. Its items are unpacked first, reducing quantity_packed on their pack items, then the package is removed. This is the one write on a pack that does not accept Idempotency-Key.

Errors

  • 400packId is unknown.
  • 400packageId is not in the pack.
  • 400 — the pack is not open or processing.
  • 400 — the package has a live shipment.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.
packageIdstringYesThe package identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Package removed. The full pack is returned without the deleted package.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400The pack is not `open` or `processing`, or the package has a live shipment.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/reset-packages

Reset packages on the pack

Discards all packing progress on a pack, leaving one empty default package per fulfillment order.

Behavior

The pack must be open or processing, and no package may have a live shipment. Every item's quantity_packed returns to 0 and the packages are replaced. No request body is needed.

Errors

  • 400packId is unknown.
  • 400 — the pack is not open or processing.
  • 400 — a package has a live shipment.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Responses

200Pack reset with fresh default packages.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400The pack is not `open` or `processing`, or a package has a live shipment.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/items/pack

Place items into packages

Places quantities of line items into a package, adding to each item's quantity_packed.

Behavior

What to send. A JSON array, each entry naming an item of the pack by fulfillment_order_id and line_item_id, the target package_id and a quantity. The pack must be processing. The package must exist in the pack, belong to the item's fulfillment order and have no live shipment.

Selection method. selection_method (SCANNER, CAMERA or MANUAL) is optional and records how the item was identified. It is stored on the pack item, and omitting it clears a value an earlier call recorded.

What happens. Each quantity is added to the item's quantity_packed and must not exceed what remains: quantity less quantity_packed. The package's items entry carries line_item_id and quantity. Calls accumulate, and one invalid entry rejects the whole call with nothing saved.

Errors

  • 400packId is unknown.
  • 400 — the pack is not processing.
  • 400 — an entry names a line item that is not in the pack.
  • 400 — a quantity exceeds what remains to pack; the message gives the available quantity.
  • 400package_id is not in the pack.
  • 400package_id belongs to another fulfillment order.
  • 400package_id has a live shipment.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonrequired

An array of pack-item-action-request. Each item has the following fields:

  • line_item_idstringrequired
    The line item to pack. Must be in the pack.
  • fulfillment_order_idstringrequired
    The fulfillment order of the line item.
  • package_idstringrequired
    The package to place the item into. Must belong to the same fulfillment order and have no live shipment.
  • quantityinteger
    Units to place, at most quantity - quantity_packed; more is rejected with 400. Omitting it fails with 500, not 400.
  • selection_methodstring
    How the packer confirmed the item. Optional; omitting it clears a value recorded by an earlier call.
    Values:SCANNERCAMERAMANUAL

Responses

200Updated pack with incremented `quantity_packed` values and items added to the package.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400Pack is not in `processing` status, or quantity/package validation failed.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/items/unpack

Remove items from packages

Removes quantities of line items from a package, reducing each item's quantity_packed.

Behavior

What to send. A JSON array, each entry naming the package_id, the line_item_id packed in it, and a quantity no greater than what is packed there. The fulfillment order is taken from the package. The pack must be processing, and the package must have no live shipment.

What happens. Each quantity is taken off the item's quantity_packed and off the package's entry for it, which is removed at zero. One invalid entry rejects the whole call, and nothing is saved.

Errors

  • 400packId is unknown.
  • 400 — the pack is not processing.
  • 400package_id is not in the pack.
  • 400 — the package has a live shipment.
  • 400 — the line item is not packed in that package.
  • 400 — a quantity exceeds what is packed in that package; the message gives the packed quantity.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonrequired

An array of unpack-item-action-request. Each item has the following fields:

  • line_item_idstringrequired
    The line item to unpack. Must be packed in package_id.
  • package_idstringrequired
    The package to remove the item from. Must be in the pack and have no live shipment.
  • quantityinteger
    Units to remove, at most the item's quantity in this package. Omitting it fails with 500, not 400.

Responses

200Updated pack with decremented `quantity_packed` values.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400Pack is not in `processing` status, the item is not in that package, or quantity exceeds what was packed there.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/complete

Complete a pack

Completes a processing pack: fulfills the packed items, asks their shipments to become ready to ship, and creates collections for collection fulfillment orders.

Behavior

Preconditions

  • The pack must be processing, have items, and every item must be fully packed.
  • Every package holding non-digital items must already have a shipment, created with Create a shipment from the pack, unless its fulfillment order is a local collection. An item is digital when its order line item has digital set.
  • ship_zone is required when any package has a shipment. It is the id of a ship zone configured at the location the shipments pick up from.

No other shipment state is checked, so the pack completes while a shipment is still pending booking.

Fulfillment

The pack becomes completed. For each fulfillment order, the packed quantities are fulfilled under a new fulfillment_id, moving the line items to fulfilled. No partner_fulfillment_reference is set, because the body accepts only ship_zone, and no new shipment is created. A fully fulfilled line item keeps the shipment_ids that Create a shipment from the pack added.

Webhooks

One FULFILLMENT_ORDER_FULFILL order webhook fires per fulfillment order. Its payload does not carry the new collection_ids, which are saved afterwards without a webhook; read the order to get them.

Shipments

Asynchronously, ship_zone is applied to each shipment and each shipment is asked to become ready to ship; the outcomes arrive through the shipment webhooks. An unknown ship_zone is dropped silently. A shipment with no carrier cannot become ready to ship until one is assigned.

Collections

A collection is created for each fulfillment order with delivery_method COLLECTION that carries a customer_collection_address. It starts open with that fulfillment order's packages that hold items and the order's customer, and its id is added to the line items' collection_ids.

  • A local collection with a customer_collection_address needs no shipment and gets a collection.
  • A remote collection needs a shipment and also gets a collection.
  • A local collection without a customer_collection_address needs no shipment and never gets a collection.

Errors

  • 400packId is unknown.
  • 400 — the pack is not processing.
  • 400 — the pack has no items.
  • 400 — an item is not fully packed.
  • 400 — a package requires shipping but has no shipment.
  • 400ship_zone is missing while a package has a shipment.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: complete-pack-request
  • ship_zonestring
    The id of a ship zone configured at the location the shipments pick up from, applied to every shipment in the pack. Required when any package has a shipment_id; an unknown id is dropped silently.

Responses

200Pack completed. Returns the full pack; its shipments are asked to become ready to ship asynchronously.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400Not all items packed, shipments missing, or ship zone required but not provided.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/cancel

Cancel a pack

Cancels a pack, cancels the live shipments on its packages, and returns its line items to picked or allocated.

Behavior

Outcome. The pack becomes cancelled whatever has been packed; unlike a pick, a pack has no stopped state.

  • Each line item returns to picked when its pack item has a pick_id, otherwise to allocated.
  • Every live shipment on the pack's packages is cancelled, and shipment webhooks fire for them.

Reason. reason_code is optional and stored on the pack. The body may be omitted.

Errors

  • 400packId is unknown.
  • 400 — the pack is completed.
  • 400 — the pack is already cancelled.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: cancel-pack-request
  • reason_codestring
    Free-text reason stored on the pack as cancellation_reason_code.

Responses

200Pack cancelled. Line items reverted, shipments cancelled.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400Pack is already completed or cancelled.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/packs/{packId}/create-shipment

Create a shipment from the pack

Creates a confirmed shipment for selected packages of a pack, one parcel per package.

Behavior

What to send

package_ids, at least one. Every package must exist in the pack, hold packed items and have no live shipment; all of them must belong to one order and one fulfillment order.

The pack must be processing, and the fulfillment order must not be a local collection. A local collection gets its collection when the pack completes, provided it carries a customer_collection_address.

Carrier

carrier_account.carrier_id, the carrier account id, is optional and must resolve to a carrier account when sent; carrier_account_name is ignored. Without it, the tenant's shipping rules choose the carrier when the shipment is booked.

What happens

The shipment is created confirmed, not as a draft, with one parcel per selected package, in order. The shipment assigns each parcel_id (for example <shipment_id>-1), the parcel description carries the package type, the dimension is copied, and parcel_items carries the SKUs and quantities.

The parcel weight is the package's empty_weight, because no pack operation sets the package weight.

shipment_id is stamped on each package, and an earlier id moves to previous_shipment_ids. The response is the full pack; the shipment id appears as packages[].shipment_id.

Webhook. The order webhook fires with FULFILLMENT_ORDER_SHIP_LINE_ITEMS.

Errors

  • 400packId is unknown.
  • 400 — the pack is not processing.
  • 400package_ids is empty.
  • 400 — a package is not in the pack.
  • 400 — a package has no packed items.
  • 400 — a package has a live shipment.
  • 400 — the packages span more than one order or fulfillment order.
  • 400 — the fulfillment order is a local collection.
  • 400carrier_account.carrier_id does not resolve to a carrier account.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: create-pack-shipment-requestrequired
  • package_idsstring[]required
    The packages to ship together. All must belong to the same order and fulfillment order, each must hold items, and none may have a live shipment.
  • carrier_accountcarrier-account-request
    Carrier account to book with. When omitted, the tenant's shipping rules choose the carrier when the shipment is booked.

Responses

200Shipment created. Returns the full pack; the shipment id appears as `packages[].shipment_id`.Schema: pack-response
  • tenantstring
    Tenant identifier.
  • pack_idstring
    Unique pack identifier, prefixed PAK_.
  • partner_location_idstring
    The Carriyo location id of the location the pack belongs to.
  • packing_stationstring
    The packing station the pack is worked at. Omitted until assigned.
  • packerstring
    The assigned packer's scoped user key (global~<email>, or Carriyo-SSO::<provider>~<id> for SSO users). Omitted until assigned.
  • statusstring
    Lifecycle state: open (created, not started), processing (packer building packages). completed and cancelled are terminal.
    Values:openprocessingcompletedcancelled
  • creation_datestringformat: date-time
    When the pack was created.
  • update_datestringformat: date-time
    When the pack was last modified.
  • start_datestringformat: date-time
    When the pack moved to processing. Omitted until started.
  • cancel_datestringformat: date-time
    When the pack was cancelled. Omitted otherwise.
  • cancellation_reason_codestring
    The reason_code sent with Cancel a pack. Omitted when none was given.
  • cancelled_byrequest-source
    The system or actor that cancelled the pack. Omitted unless cancelled.
  • completed_datestringformat: date-time
    When the pack was completed. Omitted until then.
  • itemspack-item[]
    The line items in the pack with their packing progress. Omitted on lookup records.
  • packagespack-package[]
    The packages being built, each holding items from one fulfillment order. Omitted until a package is added, and on lookup records.
  • documentsfulfillment-document[]
    Documents generated for the pack, typically the packing list. Omitted on lookup records and when none were generated.
  • creation_sourcerequest-source
    The system or actor that created the pack.
  • update_sourcerequest-source
    The system or actor that last modified the pack.
400`package_ids` is empty, a package is not in the pack, has no packed items or has a live shipment, the packages span more than one order or fulfillment order, the fulfillment order is a local collection, or the carrier account is not found.

Need the full machine-readable spec? Download the OpenAPI document →

Collections

A collection is the customer-pickup record for a click-and-collect fulfillment order: the packages waiting at the collection point and the customer who will collect them, verified by a one-time code at handover. It is created open, is marked ready_to_collect when the packages are at the collection point, and ends collected or cancelled, passing through expired when the customer does not come within the expiry window. Collections are never created directly: when a pack completes, one is created for each fulfillment order with delivery_method COLLECTION that carries a customer_collection_address. A collection is reached through the lookup reads by order, fulfillment order or pack.

Collections emit no webhook, and no collection operation fires the order webhook, collect included; the only message sent is the one-time code email. Poll the collection or the order for changes.

Related: How customer collections are created, verified and expire

11 operations · 0 objects

get/orders/collections/{collectionId}

Get a collection

Returns the full collection, including its packages, customer, verification state and timestamps.

Errors

  • 400collectionId is unknown.

Path parameters

NameTypeRequiredDescription
collectionIdstringYesThe collection identifier (e.g. `COL_123`).

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200The full collection record.Schema: collection-response
  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.
400Collection not found.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/collections/order/{orderId}

List collections for an order

Returns lookup summaries of the collections associated with an order.

Behavior

Each entry carries collection_id, tenant, partner_location_id, status and creation_date, never the packages or customer; read the full collection by collection_id. An unknown orderId returns an empty array, not an error.

Path parameters

NameTypeRequiredDescription
orderIdstringYesThe order identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of collection lookup summaries.

An array of collection-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/collections/fulfillment-order/{fulfillmentOrderId}

List collections for a fulfillment order

Returns lookup summaries of the collections associated with a fulfillment order.

Behavior

Each entry carries collection_id, tenant, partner_location_id, status and creation_date, never the packages or customer; read the full collection by collection_id. An unknown fulfillmentOrderId returns an empty array, not an error.

Path parameters

NameTypeRequiredDescription
fulfillmentOrderIdstringYesThe fulfillment order identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of collection lookup summaries.

An array of collection-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/collections/pack/{packId}

List collections for a pack

Returns lookup summaries of the collections created when a pack completed.

Behavior

Each entry carries collection_id, tenant, partner_location_id, status and creation_date, never the packages or customer; read the full collection by collection_id. An unknown packId returns an empty array, not an error.

Path parameters

NameTypeRequiredDescription
packIdstringYesThe pack identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of collection lookup summaries.

An array of collection-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.

Need the full machine-readable spec? Download the OpenAPI document →

get/orders/collections/shipment/{shipmentId}

List collections for a shipment

Returns lookup summaries of the collections linked to a shipment.

Behavior

This read answers an empty array for every shipmentId: a collection is not linked to a shipment when it is created, so none is ever found here. Find a collection through its order, fulfillment order or pack instead.

Path parameters

NameTypeRequiredDescription
shipmentIdstringYesThe shipment identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Array of collection lookup summaries.

An array of collection-response. Each item has the following fields:

  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/collections/{collectionId}/ready

Mark collection ready for pickup

Moves an open collection to ready_to_collect and sets ready_date.

Behavior

The collection must be open. No request body is needed.

Expiry. With customer_collection_auto_expire_enabled on in the order management settings, the collection becomes expired on its own customer_collection_auto_expire_days after ready_date, 7 when unset. With customer_collection_auto_cancel_enabled also on and customer_collection_auto_cancel_days set above 0, an expired collection is then cancelled on its own after that many days, with reason auto_cancelled. Both settings are checked again at the moment of expiry or cancellation, so turning one off in the meantime stops it.

Errors

  • 400collectionId is unknown.
  • 400 — the collection is not open.

Path parameters

NameTypeRequiredDescription
collectionIdstringYesThe collection identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Responses

200Collection is now `ready_to_collect`.Schema: collection-response
  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.
400Collection is not in `open` status.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/collections/{collectionId}/reopen

Reopen a collection

Returns a ready_to_collect collection to open.

Behavior

The collection must be ready_to_collect. ready_date and the expiry date are cleared, and the verification is reset to pending, discarding any one-time code and its attempt count. No request body is needed.

Errors

  • 400collectionId is unknown.
  • 400 — the collection is not ready_to_collect.

Path parameters

NameTypeRequiredDescription
collectionIdstringYesThe collection identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Responses

200Collection reopened. Status is now `open`.Schema: collection-response
  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.
400Collection is not in `ready_to_collect` status.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/collections/{collectionId}/cancel

Cancel a collection

Cancels a collection, clearing its verification state and any pending expiry or auto-cancel schedule.

Behavior

Outcome. The collection becomes cancelled from open, ready_to_collect or expired. Only the collection changes: its packages and the fulfillment order's line items are untouched, so the line items stay fulfilled.

No replacement. There is no way to create another collection for those line items. Line items close only through Verify OTP and complete handover, once every collection they belong to is collected or cancelled.

Reason. cancellation_reason is optional and stored on the collection. The body may be omitted.

Errors

  • 400collectionId is unknown.
  • 400 — the collection is already collected.
  • 400 — the collection is already cancelled.

Path parameters

NameTypeRequiredDescription
collectionIdstringYesThe collection identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: cancel-collection-request
  • cancellation_reasonstring
    Free-text reason stored on the collection as cancellation_reason.

Responses

200Collection cancelled.Schema: collection-response
  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.
400Collection is already `collected` or `cancelled`.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/collections/{collectionId}/unexpire

Reverse auto-expiry

Returns an expired collection to ready_to_collect and starts a fresh expiry window.

Behavior

The collection must be expired. Auto-expiry is scheduled again under the same settings as Mark collection ready for pickup. No request body is needed.

Errors

  • 400collectionId is unknown.
  • 400 — the collection is not expired.

Path parameters

NameTypeRequiredDescription
collectionIdstringYesThe collection identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Responses

200Collection is back to `ready_to_collect`.Schema: collection-response
  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.
400Collection is not in `expired` status.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/collections/{collectionId}/verification/send-otp

Send pickup OTP to customer

Generates a 6-digit one-time code and emails it to the customer.

Behavior

The collection must be ready_to_collect and have a customer.email. The code is valid for 5 minutes, and sending one resets the failed-attempt count to 0; a new code can be sent at most once every 60 seconds. No request body is needed.

Customer without an email. This call is refused, and Verify OTP and complete handover needs the verification that only this call creates, override included. Such a collection can never be collected; there is no other path.

The response carries message, otp_sent_at, otp_expires_at and masked_email, the address with only the first and last characters of its local part shown, so staff can tell the customer where to look and how long they have. Each call sends a new email; Idempotency-Key is not supported here.

Errors

  • 400collectionId is unknown.
  • 400 — the collection is not ready_to_collect.
  • 400 — the customer has no email address.
  • 400 — fewer than 60 seconds have passed since the last send; the message says how long to wait.

Path parameters

NameTypeRequiredDescription
collectionIdstringYesThe collection identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200OTP sent.Schema: send-otp-response
  • messagestring
    Confirmation message.
  • otp_sent_atstringformat: date-time
    When the OTP was sent.
  • otp_expires_atstringformat: date-time
    When the OTP expires, 5 minutes after sending.
  • masked_emailstring
    The customer's email with most characters masked, so staff can tell the customer where to look.
400Collection not in `ready_to_collect`, no customer email, or resend cooldown not elapsed.

Need the full machine-readable spec? Download the OpenAPI document →

post/orders/collections/{collectionId}/verification/verify-and-collect

Verify OTP and complete handover

Verifies the customer's one-time code, or overrides it, and marks the collection collected.

Behavior

Preconditions

The collection must be ready_to_collect with a one-time code verification in progress, so Send pickup OTP to customer must have been called first, even for an override.

Customer without an email. Such a collection can never be collected. Send pickup OTP to customer needs customer.email, and this call, override included, needs the verification that only Send pickup OTP to customer creates.

Two modes

  • Code. Send otp. It must match the code sent, within its 5 minutes, and before 5 failed attempts. A wrong code is refused with the remaining attempts, and failed attempts are persisted; after the fifth every verify is refused until a new code is sent, which resets the count. On success verification.status is verified.
  • Override. Send override: true; the code is not checked, even when otp is also sent, and verification.status is overridden. override defaults to false.

What happens

The collection becomes collected with collected_date. The fulfillment order's line items close once every collection they belong to is collected or cancelled; this is evaluated only here, never on cancel.

Errors

  • 400collectionId is unknown.
  • 400 — the collection is not ready_to_collect.
  • 400 — no OTP verification is in progress.
  • 400otp is missing, expired or wrong, or the 5 attempts are used up.

Path parameters

NameTypeRequiredDescription
collectionIdstringYesThe collection identifier.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Header parameters

NameTypeRequiredDescription
Idempotency-KeystringNoOptional client-generated key that identifies one logical operation. Reuse the same key when retrying with the same payload. Replays the stored response. See [Idempotency](/api/idempotency/).

Request body

Content type: application/jsonSchema: verify-and-collect-requestrequired
  • otpstring
    The 6-digit OTP the customer received. Required unless override is true, and not checked when it is; 5 wrong attempts invalidate the OTP.
  • overrideboolean
    When true, skips OTP verification, even if otp is also sent, and completes the handover with verification.status set to overridden. Defaults to false.

Responses

200Collection is now `collected`. Handover complete.Schema: collection-response
  • tenantstring
    Tenant identifier.
  • collection_idstring
    Unique collection identifier, prefixed COL_.
  • statusstring
    Lifecycle state: open (not yet at the collection point), ready_to_collect (customer can be notified and verified), expired (collection window passed; Reverse auto-expiry returns it to ready_to_collect). collected and cancelled are terminal.
    Values:openready_to_collectcollectedexpiredcancelled
  • partner_location_idstring
    The Carriyo location id of the collection point, taken from customer_collection_address.partner_location_id when set and otherwise the fulfilling location. That is the fulfilling location for a local collection and the destination location for a remote collection.
  • addressaddress
    The collection address, copied from the fulfillment order's customer_collection_address.
  • packagescollection-package[]
    The packages to hand over, copied from the pack that created the collection.
  • customercollection-customer
    The customer collecting the order.
  • verificationcollection-verification
    Identity verification state. Created by Send pickup OTP to customer and omitted until then; Reopen a collection resets it to pending, Reverse auto-expiry leaves it unchanged.
  • customer_collection_schedulefo-schedule
    The customer's preferred collection window, copied from the fulfillment order.
  • creation_datestringformat: date-time
    When the collection was created.
  • update_datestringformat: date-time
    When the collection was last modified.
  • ready_datestringformat: date-time
    When the collection became ready_to_collect. Omitted until then.
  • collected_datestringformat: date-time
    When the order was handed over. Omitted until then.
  • expiry_datestringformat: date-time
    When the collection expired. Omitted otherwise.
  • cancel_datestringformat: date-time
    When the collection was cancelled. Omitted otherwise.
  • cancellation_reasonstring
    The cancellation_reason sent with Cancel a collection. Omitted when none was given.
  • expire_schedule_idstring
    Identifier of the auto-expire schedule. Omitted when none has been scheduled.
  • cancel_schedule_idstring
    Identifier of the auto-cancel schedule. Omitted when none has been scheduled.
  • partner_order_referencestring
    The merchant's own order reference.
  • partner_fulfillment_order_referencestring
    The merchant's own fulfillment order reference.
  • pack_idstring
    The pack that created the collection.
  • notesstring
    Free-text notes on the collection.
  • carriyo_metadatacarriyo-metadata[]
    Custom metadata entries on the collection.
400Wrong OTP, expired OTP, max attempts exceeded, or collection not in `ready_to_collect`.

Need the full machine-readable spec? Download the OpenAPI document →

Bin Locations

A bin location is the list of bins that hold one SKU at one fulfillment location; there is one record per location and SKU, and picks read it to stamp bin_locations on their items. Records have no lifecycle: they are created, updated, renamed to a new SKU and deleted directly, or upserted in bulk. Unlike picks, packs and collections, an unknown record here answers 404.

Related: How picks use bin locations

6 operations · 0 objects

post/bin-locations/{partnerLocationId}

Create bin location

Creates the bin location for a SKU at a fulfillment location: the list of bins that hold it.

Behavior

What to send. sku and bins, the list of bin identifiers that hold it; partner_location_id comes from the path.

Rules. There is one bin location per SKU and location, so a SKU that already has one is refused; call Update bin location or Rename the SKU on a bin-location mapping instead. The location must exist and not be deleted. Returns 201 with the record.

Errors

  • 400 — a bin location for sku already exists at partnerLocationId.
  • 400partnerLocationId is unknown or deleted.

Path parameters

NameTypeRequiredDescription
partnerLocationIdstringYesThe Carriyo location id of the fulfillment location.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Request body

Content type: application/jsonSchema: bin-location-requestrequired
  • partner_location_idstring
    The location. Always set from the URL path; a value in the body is overwritten.
  • skustring
    Product SKU, the key of the mapping. Set from the URL path on update; taken from the body on create and bulk import, where a duplicate SKU in one bulk request is rejected.
  • binsstring[]
    Bin identifiers holding the SKU at the location. Replaces the stored list on update.

Responses

201Created.Schema: bin-location-response
  • tenant_idstring
    Tenant identifier.
  • partner_location_idstring
    The location the mapping belongs to.
  • skustring
    Product SKU.
  • binsstring[]
    Bin identifiers holding the SKU at the location.
  • creation_datestringformat: date-time
    When the mapping was created. Preserved by Rename the SKU on a bin-location mapping.
  • update_datestringformat: date-time
    When the mapping was last updated.
  • creation_sourcerequest-source
    The system or actor that created the mapping.
  • update_sourcerequest-source
    The system or actor that last updated the mapping.

Need the full machine-readable spec? Download the OpenAPI document →

get/bin-locations/{partnerLocationId}/{sku}

Get bin location by SKU

Returns the bin location for a SKU at a fulfillment location.

Errors

  • 404 — no bin location exists for sku at partnerLocationId.

Path parameters

NameTypeRequiredDescription
partnerLocationIdstringYesThe Carriyo location id of the fulfillment location.
skustringYesSKU.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Success.Schema: bin-location-response
  • tenant_idstring
    Tenant identifier.
  • partner_location_idstring
    The location the mapping belongs to.
  • skustring
    Product SKU.
  • binsstring[]
    Bin identifiers holding the SKU at the location.
  • creation_datestringformat: date-time
    When the mapping was created. Preserved by Rename the SKU on a bin-location mapping.
  • update_datestringformat: date-time
    When the mapping was last updated.
  • creation_sourcerequest-source
    The system or actor that created the mapping.
  • update_sourcerequest-source
    The system or actor that last updated the mapping.

Need the full machine-readable spec? Download the OpenAPI document →

put/bin-locations/{partnerLocationId}/{sku}

Update bin location

Replaces the bins of a bin location; any other field sent is ignored.

Behavior

Send bins, the full list of bin identifiers. The SKU and the location come from the path.

Errors

  • 404 — no bin location exists for sku at partnerLocationId.

Path parameters

NameTypeRequiredDescription
partnerLocationIdstringYesThe Carriyo location id of the fulfillment location.
skustringYesSKU.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Request body

Content type: application/jsonSchema: bin-location-requestrequired
  • partner_location_idstring
    The location. Always set from the URL path; a value in the body is overwritten.
  • skustring
    Product SKU, the key of the mapping. Set from the URL path on update; taken from the body on create and bulk import, where a duplicate SKU in one bulk request is rejected.
  • binsstring[]
    Bin identifiers holding the SKU at the location. Replaces the stored list on update.

Responses

200Success.Schema: bin-location-response
  • tenant_idstring
    Tenant identifier.
  • partner_location_idstring
    The location the mapping belongs to.
  • skustring
    Product SKU.
  • binsstring[]
    Bin identifiers holding the SKU at the location.
  • creation_datestringformat: date-time
    When the mapping was created. Preserved by Rename the SKU on a bin-location mapping.
  • update_datestringformat: date-time
    When the mapping was last updated.
  • creation_sourcerequest-source
    The system or actor that created the mapping.
  • update_sourcerequest-source
    The system or actor that last updated the mapping.

Need the full machine-readable spec? Download the OpenAPI document →

delete/bin-locations/{partnerLocationId}/{sku}

Delete bin location

Deletes the bin location for a SKU at a fulfillment location and returns the deleted record.

Errors

  • 404 — no bin location exists for sku at partnerLocationId.

Path parameters

NameTypeRequiredDescription
partnerLocationIdstringYesThe Carriyo location id of the fulfillment location.
skustringYesSKU.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.

Responses

200Deleted. Returns the deleted record.Schema: bin-location-response
  • tenant_idstring
    Tenant identifier.
  • partner_location_idstring
    The location the mapping belongs to.
  • skustring
    Product SKU.
  • binsstring[]
    Bin identifiers holding the SKU at the location.
  • creation_datestringformat: date-time
    When the mapping was created. Preserved by Rename the SKU on a bin-location mapping.
  • update_datestringformat: date-time
    When the mapping was last updated.
  • creation_sourcerequest-source
    The system or actor that created the mapping.
  • update_sourcerequest-source
    The system or actor that last updated the mapping.

Need the full machine-readable spec? Download the OpenAPI document →

put/bin-locations/{partnerLocationId}/{sku}/update-sku

Rename the SKU on a bin-location mapping

Renames the SKU of a bin location to new_sku, keeping its bins.

Errors

  • 404 — no bin location exists for sku at partnerLocationId.
  • 400 — a bin location for new_sku already exists at partnerLocationId.

Path parameters

NameTypeRequiredDescription
partnerLocationIdstringYesThe Carriyo location id of the fulfillment location.
skustringYesCurrent SKU on the mapping.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Request body

Content type: application/jsonSchema: update-sku-requestrequired
  • new_skustringrequired
    The SKU to move the mapping to. Must not already have a mapping at the location; the same SKU as the current one is a no-op.

Responses

200Success.Schema: bin-location-response
  • tenant_idstring
    Tenant identifier.
  • partner_location_idstring
    The location the mapping belongs to.
  • skustring
    Product SKU.
  • binsstring[]
    Bin identifiers holding the SKU at the location.
  • creation_datestringformat: date-time
    When the mapping was created. Preserved by Rename the SKU on a bin-location mapping.
  • update_datestringformat: date-time
    When the mapping was last updated.
  • creation_sourcerequest-source
    The system or actor that created the mapping.
  • update_sourcerequest-source
    The system or actor that last updated the mapping.

Need the full machine-readable spec? Download the OpenAPI document →

post/bin-locations/{partnerLocationId}/bulk/import

Bulk import bin locations

Creates or updates up to 200 bin locations at a fulfillment location in one call, reporting the outcome of each row.

Behavior

What happens. Each row is matched by sku: an existing bin location at the location is updated, otherwise one is created. Rows are processed independently, and a row's failure is reported in its result rather than failing the call, so the call succeeds even when every row is rejected. A sku repeated within the request is rejected per row.

Reading the response. One entry per row, with partner_location_id, sku, result (created, updated or rejected), message and, unless rejected, the saved bin_location.

Errors

  • 400 — more than 200 items.

Path parameters

NameTypeRequiredDescription
partnerLocationIdstringYesThe Carriyo location id of the fulfillment location.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Request body

Content type: application/jsonrequired

An array of bin-location-request. Each item has the following fields:

  • partner_location_idstring
    The location. Always set from the URL path; a value in the body is overwritten.
  • skustring
    Product SKU, the key of the mapping. Set from the URL path on update; taken from the body on create and bulk import, where a duplicate SKU in one bulk request is rejected.
  • binsstring[]
    Bin identifiers holding the SKU at the location. Replaces the stored list on update.

Responses

200Per-item import outcomes.

An array of bin-location-bulk-response. Each item has the following fields:

  • partner_location_idstring
    The location from the URL path.
  • skustring
    Product SKU from the request item.
  • messagestring
    Detail on the outcome.
  • resultstring
    created for a new mapping, updated for an existing one, rejected on failure (including a duplicate SKU in the same request).
    Values:createdupdatedrejected
  • bin_locationbin-location-response
    The saved mapping. null when result is rejected.

Need the full machine-readable spec? Download the OpenAPI document →