{
"id": "evt_00000000000ab",
"occurred_at": "2026-10-16T09:30:00Z",
"channel": "<string>",
"data": {
"id": "<string>",
"version": 2
}
}A thin notification standard webhooks naming the resource to read
At least once, in no particular order. Deduplicate on webhook-id; apply a resource only when its version is
higher than yours; always re-read an availability range. Verify the signature over id.timestamp.body with
each v1, value; during a rotation two are sent. Answer 2xx within 10 seconds. Non-2xx and timeouts are
retried after 1 m, 5 m, 30 m, 2 h, 6 h, then every 12 h (±20 % jitter) for 3 days; then the endpoint becomes
inactive with suspended_reason: failing and your technical contact is mailed. A 410 makes it inactive
at once (gone). Redirects are never followed.
{
"id": "evt_00000000000ab",
"occurred_at": "2026-10-16T09:30:00Z",
"channel": "<string>",
"data": {
"id": "<string>",
"version": 2
}
}Headers
Opaque. Ordered within your channel; do not parse.
^evt_(test_)?[0-9a-hjkmnp-tv-z]{13}$"evt_00000000000ab"
Unix seconds. Reject if more than 5 minutes off.
^[0-9]+$Space-separated v1,<base64 HMAC-SHA256(secret, id.timestamp.body)>.
Body
Opaque. Ordered within your channel; do not parse.
^evt_(test_)?[0-9a-hjkmnp-tv-z]{13}$"evt_00000000000ab"
Open enum.
location.created, location.updated, location.deleted, owner.created, owner.updated, owner.deleted, property.created, property.updated, property.deleted, property.distributed, property.withdrawn, availability.updated ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"2026-10-16T09:30:00Z"
- Option 1
- Option 2
Show child attributes
Show child attributes
Response
Acknowledged.