HOOK order.addition_request.resolved

Not yet available. Order additions are switched off in production and in the sandbox, so Snapcaster does not send this event yet; the changelog announces when additions open. Snapcaster sends this event when a pending add-on request ends. status says how: offered when the seller answered it with an offer, which then sends its own order.addition_offer.updated; declined when the seller declined it, from your integration or the seller dashboard, with the optional resolution_note the buyer reads; withdrawn when the buyer took it back. Nothing on the order changes. data is the request as GET /orders/{orderId}/addition-requests returns it, plus order_id and seller_id. If you miss an event, read that list: every change to a request also brings the order back into the GET /orders poll. The envelope, signing and retries match order.created; see https://developers.snapcaster.ca/guide/webhook-signing and https://developers.snapcaster.ca/guide/path-b#delivery-semantics. Subscriptions orders and both receive it; an inventory subscription never does. Deduplicate by event_id. Events can arrive out of order, so compare created_at.

Example

Delivery payload: Signed add-on request resolved (not yet available) payload
{
  "event_id": "evt_sandbox_01K4AA3F2W8K5T1N7G4P9D0X6Y",
  "type": "order.addition_request.resolved",
  "created_at": "2026-09-04T19:20:41.000Z",
  "data": {
    "request_ref": "oar_5c1e9a7f3b2d48e6a0f4c8d1b7e3a925",
    "status": "declined",
    "lines": [
      {
        "sku_id": 14602,
        "product_id": 86,
        "quantity": 2,
        "name": "Abyssal Nightstalker",
        "set_name": "Portal Second Age",
        "condition": "Near Mint",
        "category_name": "Magic: The Gathering",
        "language": "English",
        "finish": "Normal",
        "collector_number": null,
        "rarity": "Uncommon"
      }
    ],
    "note": "Two more for my sideboard, please",
    "support_case_id": null,
    "created_at": "2026-09-04T19:01:12.000Z",
    "resolved_by_party": "seller",
    "resolved_at": "2026-09-04T19:20:41.000Z",
    "resolution_note": "Sold out of that printing",
    "order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW",
    "seller_id": 42
  },
  "api_version": "2026-10"
}

Signature headers

Snapcaster sends a POST to your webhook endpoint with these headers. Webhook signing shows how to verify them.

X-Snapcaster-Timestamp string required

Unix seconds when the request was signed; reject if outside a ±5 minute window.

X-Snapcaster-Signature string required

sha256= + lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body).

Delivery payload

The signed order.addition_request.resolved event.

Payload type: OrderAdditionRequestResolvedEvent

Envelope fields

event_id string required

A globally unique event id that stays the same across retries. Use it to deduplicate deliveries (STABLE).

Example evt_sandbox_01K4AA3F2W8K5T1N7G4P9D0X6Y

type string required

The event type (STABLE).

Constraints: allowed values: order.addition_request.resolved Example order.addition_request.resolved

created_at string required

ISO-8601 UTC instant of the change the event reports; unchanged across retries (STABLE).

Example 2026-09-04T19:20:41.000Z

data OrderAdditionRequestEventData required

The operation or event payload.

api_version string required

The dated API version used for this payload, frozen when Snapcaster queued the delivery. Changing the platform pin does not change queued events or retries; they keep the same version. See https://developers.snapcaster.ca/guide/api-versioning (STABLE).

Constraints: allowed values: 2026-10 Example 2026-10

Payload fields

data.request_ref string required

The opaque public request id (oar_…) - the {requestRef} of the withdraw and decline paths.

Example oar_5c1e9a7f3b2d48e6a0f4c8d1b7e3a925

data.status string required

pending is the one open state. withdrawn is the buyer taking their own ask back; declined is the seller’s answer; offered means the seller ANSWERED it with a payable offer, whose own lifecycle carries on under addition-offers and which names this request. All three endings are one-way and change nothing else about the order.

Constraints: allowed values: pending, withdrawn, declined, offered Example declined

data.lines OrderAdditionRequestLine[] required

The cards asked for, with enough canonical catalog identity frozen at the ask to say which PRINTING was meant - condition, finish, language, collector number - so a later catalog correction cannot change what was understood.

Show child fieldsHide child fields
data.lines[].sku_id integer required

The exact printing asked for. This is the identity; everything beside it is frozen from it.

Example 14602

data.lines[].product_id integer required

See Canonical catalog in Core concepts.

Example 86

data.lines[].quantity integer required

The number of units.

Example 2

data.lines[].name string or null required

Example Abyssal Nightstalker

data.lines[].set_name string or null required

Example Portal Second Age

data.lines[].condition string or null required

The normalized condition assigned to the card.

Example Near Mint

data.lines[].category_name string or null required

Example Magic: The Gathering

data.lines[].language string or null required

The language of the card printing.

Example English

data.lines[].finish string or null required

The catalog’s printing, under the name the order line snapshot uses.

Example Normal

data.lines[].collector_number string or null required

Example null

data.lines[].rarity string or null required

The rarity assigned to the card printing.

Example Uncommon

data.note string or null required

The buyer’s own words beside the ask; null when none was given.

Example Two more for my sideboard, please

data.support_case_id integer or null required

The support conversation the ask came out of, when there was one; null otherwise.

Example null

data.created_at string required

Example 2026-09-04T19:01:12.000Z

data.resolved_by_party string or null required

Who ended the ask - buyer on a withdrawal, seller on a decline. Null while pending.

Constraints: allowed values: buyer, seller, operator, system, null Example seller

data.resolved_at string or null required

Example 2026-09-04T19:20:41.000Z

data.resolution_note string or null required

The seller’s short reason on a decline, shown to the buyer beside the ending.

Example Sold out of that printing

data.order_id string required

The order the add-on is for (STABLE).

Example ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW

data.seller_id integer required

The seller that owns the order. Use this id to route the event to the right store (STABLE).

Example 42

Receiver response

200 - Return any 2xx after verifying the event and durably accepting it. This event moves no stock, so its 2xx acknowledges no sale and leaves every stock hold as it was.