# The menu file was written EVENT `menu.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-Signature` (string, required) `t=,v1=.")>`, 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-Id` (string, required, pattern: `^evt_`) The event's `id`; deduplicate by it. - `X-Partner-Event-Type` (string, required, `order.accepted` | `order.ready` | `order.completed` | `order.rejected` | `order.cancelled` | `menu.updated` | `store.status_changed` | `connection.revoked`) ## Payload `application/json` - `id` (string, required, pattern: `^evt_`) - `type` (string, required, Value: `menu.updated`) - `createdAt` (string, required, format: date-time) - `connectionId` (string, required, pattern: `^pc_[0-9a-f]{20}$`) - `data` (object, required) - `url` (string, required, format: uri) The menu file (stable per connection); GET it without the key - `hash` (string, required, pattern: `^[0-9a-f]{64}$`) SHA-256 (hex) of the file's bytes when the event was sent - `publishedAt` (string, required, format: date-time) The sync that last changed the menu - `updatedAt` (string, required, format: date-time) The last write of the file ## Expected response ### 200 — Stored. 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. ## Payload — Example ```json { "id": "evt_0a1b2c3d4e5f6a7b", "type": "menu.updated", "createdAt": "2026-10-15T10:04:40.000Z", "connectionId": "pc_3f1c0a9e5b7d2c4f6a81", "data": { "url": "https://cdn.horeca-24.de/partner-api/menus/pc_3f1c0a9e5b7d2c4f6a81/menu.json", "hash": "9b2f6a1c0d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f90", "publishedAt": "2026-10-15T09:58:12.000Z", "updatedAt": "2026-10-15T10:04:40.000Z" } } ```