checkout.paid delivery

The traveler completed payment on the operator's hosted page; the new offer's own status follows as offer.* events.

postWebhookcheckout.paid

Headers

X-UpgradeAgent-Signaturestring required

t=<unix>,v1=<hex HMAC-SHA256(secret, ${t}.${body})>

X-UpgradeAgent-Event'checkout.paid' required
X-UpgradeAgent-Idempotency-Keystring required

Stable per (quote, offer, status) — dedupe on it.

X-UpgradeAgent-Webhook-Idstring required

Payload

event'offer.status_changed' | 'offer.accepted' | 'offer.declined' | 'offer.cancelled' | 'checkout.paid' | 'ping' required

Event name (or ping for test deliveries).

quoteIdstring nullable required

The quote the offer belongs to.

offerReferencestring nullable required

Operator order-change id (the offerReference on GET /offers); null for checkout.paid when ambiguous.

statusstring nullable required

New normalized status: submitted | pending | accepted | declined | cancelled | paid | unknown.

previousStatusstring nullable required

Previous normalized status; null on first observation.

amountnumber nullable required

Offer amount.

currencystring nullable required

ISO currency, or PTS for points.

cabinstring nullable required

Cabin / product name.

segmentstring nullable required

Route, e.g. NCE-ZRH.

occurredAtstring required

ISO-8601 time of the observation.

idstring required

Event id.

Response

Acknowledge within 10s. Anything else (or a timeout) is retried with backoff.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.