↑↓select↵openescclose

Webhooks

The menu file was written

EVENTmenu.updated

Sent on every menu sync by the restaurant, every switch of a product or option on or off, and when you set or change the webhook URL. Download url and take the file over; skip the download when you hold hash already. The file may be newer than the event; take it anyway. Coalesced: while one is waiting, a newer one replaces it.

Headers

X-Partner-SignaturestringRequired

t=<unix seconds>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>, one v1= per active secret (two during a rotation; the key is the whole whsec_… string). Recomputed at every attempt. Verify against the raw body, reject t more than 300 s off, compare in constant time.

X-Partner-Event-IdstringRequiredpattern: ^evt_

The event's id; deduplicate by it.

X-Partner-Event-TypestringWebhookEventTypeRequiredorder.acceptedorder.readyorder.completedorder.rejectedorder.cancelledmenu.updatedstore.status_changedconnection.revoked

Payload

application/jsonRequired

idstringRequiredpattern: ^evt_
typestringWebhookEventTypeRequiredValue: menu.updated
createdAtstringRequiredformat: date-time
connectionIdstringRequiredpattern: ^pc_[0-9a-f]{20}$
dataobjectMenuUpdatedDataRequired
Show child attributesHide child attributes
urlstringRequiredformat: uri

The menu file (stable per connection); GET it without the key

hashstringRequiredpattern: ^[0-9a-f]{64}$

SHA-256 (hex) of the file's bytes when the event was sent

publishedAtstringRequiredformat: date-time

The sync that last changed the menu

updatedAtstringRequiredformat: date-time

The last write of the file

Expected response

200Stored. Answer 2xx within 3 s, as soon as the event is stored. Timeouts, network errors, 429 and 5xx are

retried (Retry-After first; else after about 1, 2, 10 min, then every 30 min, for 24 h). Other 4xx and every 3xx are final.