Inventario
La referencia detallada de campos se muestra en inglés. Los identificadores y valores de API no cambian.
Always applies integration warehouse restrictions. Shipping-only credentials receive origin/capability metadata, not inventory balances.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.read"
]
},
{
"allOf": [
"fulfillments.read"
]
},
{
"allOf": [
"rates.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. |
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. |
Discover locations in authorized warehouses.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.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 |
typequery · 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. |
Read product-by-warehouse stock balances. Incremental updatedAfter follows persisted balance-row changes. Derived supply or pick allocations are evaluated at read time and may change without advancing that row timestamp; periodically perform a full read for these derived quantities. Opaque version values support equality checks, not numeric ordering.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.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 |
productIdquery · 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. |
Read location-level physical stock. Incremental updatedAfter follows persisted balance-row changes. Derived supply or pick allocations are evaluated at read time and may change without advancing that row timestamp; periodically perform a full read for these derived quantities. Opaque version values support equality checks, not numeric ordering.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.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 |
productIdquery · Opcional | string |
locationIdquery · 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. |
Stable order by occurredAt,id. No transaction mutation endpoints. These records represent executed business changes, not requested future quantities. Source order, fulfillment and store references must also be within the credential resource restrictions before pagination. A restricted ledger may contain fewer rows than the full physical warehouse ledger; stock quantities are never reduced to match those visible rows.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.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 |
warehouseIdquery · Opcional | string |
productIdquery · Opcional | string |
locationIdquery · Opcional | string |
occurredAfterquery · Opcional | string |
sourceIdquery · 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. |
Apply an atomic guarded stock adjustment.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.adjust"
]
}
]
}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
warehouseIdstring · Obligatorio | Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number. |
|---|---|
reasonCodestring · Obligatorio | ["correction","damage","loss"] |
reasonstring · Obligatorio | |
linesarray · Obligatorio |
{
"warehouseId": "10",
"reasonCode": "correction",
"reason": "Cycle check found two additional units",
"lines": [
{
"productId": "501",
"locationId": "22",
"mode": "delta",
"quantityDelta": 2,
"expectedOnHand": 20
}
]
}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. |
Create a manual warehouse-level stock hold.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.reserve"
]
}
]
}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
warehouseIdstring · Obligatorio | Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number. |
|---|---|
productIdstring · Obligatorio | Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number. |
quantityinteger · Obligatorio | |
reasonstring · Obligatorio | |
expiresAtstring · Opcional | UTC date/time, exactly yyyy-MM-dd HH:mm:ss. This project convention deliberately is not RFC 3339; all time zones are UTC unless a field explicitly says local calendar date. |
{
"warehouseId": "10",
"productId": "501",
"quantity": 3,
"reason": "Reserved for upcoming promotion",
"expiresAt": "2026-11-03 18:00: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. |
Only active manual holds; fully released/expired rows are not retained as resources by the current model. Audit/operation receipts are separate. Fulfillment holds are not editable here.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.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 |
productIdquery · 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. |
Release all or part of a manual stock hold.
Permisos necesarios
{
"anyOf": [
{
"allOf": [
"inventory.reserve"
]
}
]
}Parámetros
reservationIdpath · 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
quantityinteger · Opcional | |
|---|---|
reasonstring · Obligatorio |
{
"quantity": 1,
"reason": "Promotion requirement reduced"
}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. |