Inventory adjusted (Snapcaster → Platform)
Sent when an Order commits units on Snapcaster: one `inventory.adjusted` event per Order, carrying a signed per-sku `delta` for every line, so the Platform moves its on-hand with one handler (`on_hand += delta`). Each event carries `seller_id` so the Platform can route it to the right store. Signing, verification, and delivery semantics are identical to `order.created` (see https://developers.snapcaster.ca/guide/webhook-signing); only the `data` body differs. Dedup on `event_id`: delivery is at-least-once, and an undeduped `on_hand += delta` double-applies on a retry. **Ack = durably applied**: return 2xx only after the stock change is durably written (or durably enqueued). Snapcaster releases its Committed hold on your 2xx; if you cannot apply the delta, return non-2xx so it retries. Fields are tagged STABLE / PROVISIONAL; treat the payload as open and ignore unknown fields.
Delivery payload
The signed `inventory.adjusted` event.
{ "event_id": "evt_sandbox_01K4A91J43MTZ8C2E7P5X6Q9NV", "type": "inventory.adjusted", "created_at": "2026-09-04T18:42:18.000Z", "data": { "seller_id": 42, "lines": [ { "sku_id": 427286, "external_ref": "platform-listing-1042", "delta": -1 } ], "reason": "sale", "order_ref": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW" }, "api_version": "2026-07"}Signature headers
| Field | In | Type | Constraints | Meaning | Example |
|---|---|---|---|---|---|
X-Snapcaster-Timestamprequired | header | string | None | Unix seconds when the request was signed; reject if outside a ±5 minute window. | string (generated) |
X-Snapcaster-Signaturerequired | header | string | None | `sha256=` + lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body). | string (generated) |
Envelope fields
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
event_idrequired | string | None | Globally unique, stable across retries; the idempotency/dedup key (STABLE). | evt_sandbox_01K4A91J43MTZ8C2E7P5X6Q9NV |
typerequired | string | allowed values: inventory.adjusted | Event discriminator; future inventory events reuse this envelope (STABLE). | inventory.adjusted |
created_atrequired | string | None | ISO-8601 UTC instant the event was generated; unchanged across retries (STABLE). | 2026-09-04T18:42:18.000Z |
datarequired | object | None | The operation or event payload. | {
"seller_id": 42,
"lines": [
{
"sku_id": 427286,
"external_ref": "platform-listing-1042",
"delta": -1
}
],
"reason": "sale",
"order_ref": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW"
} |
api_versionrequired | string | allowed values: 2026-07 | The dated partner API version this payload was serialized at: the version frozen when the delivery was enqueued (never the live pin), so every retry carries the same value and byte-identical bytes. Added additively per the tolerant-reader rule; see https://developers.snapcaster.ca/guide/api-versioning (STABLE). | 2026-07 |
Receiver response
200 - Receiver acked: the delta is durably applied (or durably enqueued to apply), not merely received. Snapcaster releases the matching Committed hold against this acknowledgement.