Chokepoint disruption alert (outbound, signed)
WorldMonitor POSTs this event to the callbackUrl you register via RegisterWebhook when a subscribed chokepoint's disruption score is at or above your alertThreshold (and its live signals above minLiveSignal when set), once per crossing, including one already in progress at first evaluation. It re-arms below the threshold unless a score input missing since the last delivery could explain the drop. Failures retry every 5 minutes with the same X-WM-Delivery-Id while the score holds; 5 failed ticks deactivate the webhook. Full rules at https://www.worldmonitor.app/docs/api-shipping-v2#delivery-worker.
Verify X-WM-Signature-V2 in constant time against sha256= + hex(HMAC-SHA256(key=secret, message=timestamp.deliveryId.event.rawRequestBody)). Use the exact header strings and raw body bytes. Use secret verbatim; do not hex-decode it or re-serialize JSON. Reject missing or malformed headers and timestamps more than 300 seconds in the past or future. Require V2; never fall back to the legacy body-only signature. Atomically dedupe verified delivery ids for the subscription lifetime. Retries keep the id but refresh the timestamp and signature. Respond with any 2xx to acknowledge receipt.
Headers
Legacy body-only HMAC-SHA256. No replay protection. Migrate to V2.
HMAC-SHA256(secret, timestamp.deliveryId.event.rawRequestBody).
Send time in Unix seconds. Accept within 300 seconds of the receiver clock.
Always chokepoint.disruption for this body. The other events (country.risk_surge, news.breaking, market.move, natural.hazard) send the same headers and signature with the payloads documented at https://www.worldmonitor.app/docs/api-shipping-v2#delivery-format.
Unique delivery identifier (whd_ + 32 hex chars). Use it to dedupe retries and process deliveries idempotently.
Payload
Response
Any 2xx acknowledges receipt. A non-2xx response or a delivery timeout marks the delivery failed.
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.