Partial update (RFC 7396 merge semantics) of editable fields on an
existing shipment. Identify the shipment via the URL path; identity
fields are immutable.
Editable fields: order_number, customer_email, tracking_url,
shipped_at, eta, items, servicelevel, ship_to, metadata,
totals, return_label.
Use this to amend the merchant-provided prepaid return label on an
existing shipment (last write wins); send return_label: null to clear
it. Same payload shape as POST /shipments.
Immutable fields: tracking_number and carrier cannot be
changed (the request is rejected with 400 Bad Request). To change a
carrier, register the shipment again with POST /shipments.
Null semantics: sending null for a field clears it
(RFC 7396 merge-patch). Omitted fields are left untouched.
At least one updatable field must be present in the body — an
empty / no-op patch returns 400 Bad Request with a detail
message of "No updatable fields supplied".
Shared tracking numbers (clubbed parcels): if the tracking number
maps to MORE than one shipment (several orders shipped in one parcel),
it cannot identify a single shipment and this endpoint returns
409 Conflict (errors/ambiguous-tracking-number) with a candidates
list of the matching shipment ids — nothing is updated. Amend a
specific shipment via PATCH /shipments/by-id/{id}.
Rate limit: 600 requests per minute per store, shared with
POST /shipments.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||