Pedidos y preparación
La referencia detallada de campos se muestra en inglés. Los identificadores y valores de API no cambian.
Create an order through the normal ingest pipeline.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"orders.write"
]
}
]
}Parámetros
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
|---|
Solicitud
externalIdstring · Obligatorio | |
|---|---|
orderNumberstring · Opcional | |
referencestring · Opcional | |
currencystring · Obligatorio | |
shipToobject · Obligatorio | Original address is preserved. Country-specific postal validation and carrier print-field limits are separate checks; do not silently truncate. Residential null means unknown. |
shipFromobject · Opcional | Original address is preserved. Country-specific postal validation and carrier print-field limits are separate checks; do not silently truncate. Residential null means unknown. |
warehouseIdstring · Opcional | Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number. |
deliveryMethodstring · Opcional | ["label","external","pickup"] |
itemsarray · Obligatorio | |
shippingAmountstring · Opcional | Non-negative decimal monetary amount as a string; never IEEE floating point. |
taxAmountstring · Opcional | Non-negative decimal monetary amount as a string; never IEEE floating point. |
discountAmountstring · Opcional | Non-negative decimal monetary amount as a string; never IEEE floating point. |
notestring · Opcional | |
metadataobject · Opcional | Client-owned string metadata only. No secrets or card data. Not used for authorization or business rules. |
{
"externalId": "ERP-ORDER-1001",
"orderNumber": "SO-1001",
"currency": "USD",
"shipTo": {
"name": "Alex Chen",
"street1": "456 Pine St",
"city": "Seattle",
"state": "WA",
"postalCode": "98101",
"country": "US",
"phone": "2065550100",
"residential": true
},
"warehouseId": "10",
"deliveryMethod": "label",
"items": [
{
"clientLineId": "line-1",
"productId": "501",
"quantity": 2,
"unitPrice": "19.95"
}
],
"shippingAmount": "0.00",
"taxAmount": "0.00",
"discountAmount": "0.00"
}Respuesta
201 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
List sales orders.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"orders.read"
]
}
]
}Parámetros
cursorquery · Opcional | Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan. |
|---|---|
limitquery · Opcional | integer |
updatedAfterquery · Opcional | Exclusive UTC updated-time lower bound. For incremental sync keep a small overlap and deduplicate by id/version; cursor is authoritative within a scan. |
referencequery · Opcional | string |
externalIdquery · Opcional | string |
orderNumberquery · Opcional | string |
statusquery · Opcional | string |
Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Retrieve a sales order.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"orders.read"
]
}
]
}Parámetros
orderIdpath · Obligatorio | string |
|---|
Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Edit allowed order fields.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"orders.write"
]
}
]
}Parámetros
orderIdpath · Obligatorio | string |
|---|---|
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
If-Matchheader · Obligatorio | Exact strong ETag from the latest resource read. Required for PATCH; absent=428, stale=412. Quote/ship/split actions use explicit expectedVersion. An authorized idempotent replay returns its original committed result even if the resource is now newer. |
Solicitud
referenceobject · Opcional | |
|---|---|
shipToobject · Opcional | Original address is preserved. Country-specific postal validation and carrier print-field limits are separate checks; do not silently truncate. Residential null means unknown. |
notestring · Opcional | |
itemsarray · Opcional | |
metadataobject · Opcional | Client-owned string metadata only. No secrets or card data. Not used for authorization or business rules. |
{
"reference": "PO-2026-1200",
"note": "Customer requested side door delivery."
}Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
412 | If-Match does not match the current resource revision. |
422 | Field/business validation failed; details identify invalid fields. |
428 | Required concurrency precondition missing. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Cancel an order with business guards.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"orders.cancel"
]
}
]
}Parámetros
orderIdpath · Obligatorio | string |
|---|---|
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
Solicitud
reasonstring · Obligatorio |
|---|
{
"reason": "Customer canceled"
}Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Hold an order and eligible related fulfillments.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"orders.write"
]
}
]
}Parámetros
orderIdpath · Obligatorio | string |
|---|---|
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
Solicitud
reasonstring · Obligatorio | |
|---|---|
holdUntilobject · Opcional |
{
"reason": "Customer address needs confirmation",
"holdUntil": "2026-11-02 18:00:00"
}Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Uses the existing order release cascade only where the affected fulfillment hold is unambiguous. The current domain has no independent hold-source tracking. The public adapter must reject ambiguous shared-order/manual-hold release with 409 before mutation, not promise preservation or silently change shared hold semantics. No status rewind or inventory movement.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"orders.write"
]
}
]
}Parámetros
orderIdpath · Obligatorio | string |
|---|---|
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
Solicitud
reasonstring · Obligatorio |
|---|
{
"reason": "Address confirmed"
}Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
List fulfillments related to an order.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"orders.read",
"fulfillments.read"
]
}
]
}Parámetros
orderIdpath · Obligatorio | string |
|---|---|
cursorquery · Opcional | Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan. |
limitquery · Opcional | integer |
updatedAfterquery · Opcional | Exclusive UTC updated-time lower bound. For incremental sync keep a small overlap and deduplicate by id/version; cursor is authoritative within a scan. |
Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
List fulfillment plans.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"fulfillments.read"
]
}
]
}Parámetros
cursorquery · Opcional | Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan. |
|---|---|
limitquery · Opcional | integer |
updatedAfterquery · Opcional | Exclusive UTC updated-time lower bound. For incremental sync keep a small overlap and deduplicate by id/version; cursor is authoritative within a scan. |
warehouseIdquery · Opcional | string |
orderIdquery · Opcional | string |
statusquery · Opcional | string |
Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Retrieve a fulfillment plan.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"fulfillments.read"
]
}
]
}Parámetros
fulfillmentIdpath · Obligatorio | string |
|---|
Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Edit a fulfillment shipping plan.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"fulfillments.write"
]
}
]
}Parámetros
fulfillmentIdpath · Obligatorio | string |
|---|---|
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
If-Matchheader · Obligatorio | Exact strong ETag from the latest resource read. Required for PATCH; absent=428, stale=412. Quote/ship/split actions use explicit expectedVersion. An authorized idempotent replay returns its original committed result even if the resource is now newer. |
Solicitud
warehouseIdstring · Opcional | Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number. |
|---|---|
shipFromobject · Opcional | Original address is preserved. Country-specific postal validation and carrier print-field limits are separate checks; do not silently truncate. Residential null means unknown. |
shipToobject · Opcional | Original address is preserved. Country-specific postal validation and carrier print-field limits are separate checks; do not silently truncate. Residential null means unknown. |
packagesarray · Opcional | |
optionsobject · Opcional | Portable shipping options and optional typed FedEx Direct services. On fulfillment PATCH, omitted or null fields preserve their stored values; a supplied fedex object replaces the entire FedEx option group, and an empty object clears it. Carrier eligibility, account agreements and service combinations are validated before quoting or purchasing. Transportation billing is an atomic group: omit all four fields or use null to preserve it on PATCH; explicit sender clears the three billing details, while receiver or third_party requires all four fields together. Nonnull billing details without an external billingType are rejected. Duties and taxes remain independently configured under customs. Buying a frozen quote does not accept payer overrides. |
customsobject · Opcional | |
plannedShipDateobject · Opcional | |
deliveryMethodstring · Opcional | ["label","external","pickup"] |
{
"packages": [
{
"packageNo": 1,
"length": "12",
"width": "9",
"height": "3",
"weight": "2",
"dimensionUnit": "in",
"weightUnit": "lb",
"shape": "box"
}
],
"plannedShipDate": "2026-11-02"
}Respuesta
200 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
412 | If-Match does not match the current resource revision. |
422 | Field/business validation failed; details identify invalid fields. |
428 | Required concurrency precondition missing. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Quote the persisted fulfillment shipping plan.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"rates.read",
"fulfillments.read"
]
}
]
}Parámetros
fulfillmentIdpath · Obligatorio | string |
|---|---|
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
Solicitud
expectedVersionstring · Obligatorio | Opaque resource revision. The ETag header is its quoted representation; send the exact ETag as If-Match. |
|---|---|
shippingAccountIdsarray · Opcional | |
serviceCodesarray · Opcional |
{
"expectedVersion": "7",
"shippingAccountIds": [
"41"
]
}Respuesta
201 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Uses the existing inventory-aware shared ship transition and current account trigger. Does not buy labels; label purchase may already have auto-shipped under account settings, in which case idempotent state guards apply. Reject unsupported partial/dropship handling explicitly.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"fulfillments.ship"
]
}
]
}Parámetros
fulfillmentIdpath · Obligatorio | string |
|---|---|
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
{
"mode": "label",
"expectedVersion": "8"
}Respuesta
200 | Success. |
|---|---|
202 | Accepted; poll Location or GET /operations/{id}. |
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |
Split unexecuted quantities into a new fulfillment.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"fulfillments.write"
]
}
]
}Parámetros
fulfillmentIdpath · Obligatorio | string |
|---|---|
Idempotency-Keyheader · Obligatorio | Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover. |
Solicitud
expectedVersionstring · Obligatorio | Opaque resource revision. The ETag header is its quoted representation; send the exact ETag as If-Match. |
|---|---|
itemsarray · Obligatorio |
{
"expectedVersion": "4",
"items": [
{
"fulfillmentItemId": "601",
"moveQuantity": 1
}
]
}Respuesta
201 | Success. |
|---|---|
400 | Malformed JSON, unsupported query or invalid request syntax. |
401 | Missing, invalid, expired or revoked API key credential. |
403 | Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted. |
404 | Resource absent or not visible in the authorized tenant/environment. |
409 | Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds. |
422 | Field/business validation failed; details identify invalid fields. |
429 | Rate or paid-service limit exceeded. Respect Retry-After. |
500 | Unexpected server error; use requestId and query operation before retrying a side effect. |
503 | Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation. |