Chokepoint disruption alert outbound signed
WorldMonitor POSTs this event to the callbackUrl you register via
RegisterWebhook whenever a subscribed chokepoint’s disruption score
crosses your alertThreshold. Every delivery is signed so you can
confirm it genuinely came from WorldMonitor.
Verification: the X-WM-Signature header is
sha256=<hex>, where <hex> is the lowercase hex HMAC-SHA256 of the
exact raw request body, keyed by the secret returned when you
registered the webhook. To verify, recompute
sha256= + hex(HMAC_SHA256(key=secret, message=rawRequestBody)) over
the bytes exactly as received (do not re-serialize the JSON) and
compare against X-WM-Signature in constant time. Use the
secret string verbatim as the HMAC key — do not hex-decode it.
Reject the delivery if the signatures differ.
A verifiable signed sample (fixed secret + exact raw body + resulting signature) is published at https://www.worldmonitor.app/.well-known/webhook-sample.json so you can confirm your HMAC verification end-to-end before registering.
Respond with any 2xx to acknowledge receipt; a non-2xx response or a
timeout marks the delivery failed. X-WM-Delivery-Id uniquely
identifies each delivery for idempotent processing.
Headers
HMAC-SHA256 signature of the raw request body, keyed by the
subscription secret, formatted as sha256=<lowercase-hex>.
^sha256=[0-9a-f]{64}$"sha256=2b8c0d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c"
Event type. Currently always chokepoint.disruption.
"chokepoint.disruption"
Unique delivery identifier (whd_ + 32 hex chars). Use it to
dedupe retries and process deliveries idempotently.
^whd_[0-9a-f]{32}$"whd_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d"
Body
The wh_-prefixed subscription receiving this alert.
Chokepoint that breached the threshold (e.g. suez).
Current disruption score of the chokepoint, 0-100.
The subscription's configured alert threshold, 0-100.
ISO-8601 timestamp when the alert fired.
Human-readable explanation for the alert.
Optional structured context for the disruption.
Response
Any 2xx acknowledges receipt. A non-2xx response or a delivery timeout marks the delivery failed.
