Webhook'и
Если владелец ресторана зарегистрирует ваш адрес (в Sitora Biz, рядом с учётными данными), Sitora будет отправлять подписанные события по мере их возникновения. Webhook’и необязательны; контроллер, который только опрашивает, полностью соответствует требованиям.
Адреса должны быть HTTPS и разрешаться в публичный адрес. Sitora отказывает в регистрации — и в доставке — для обычного HTTP, URL со встроенными учётными данными и хостов, разрешающихся в loopback, приватные или link-local диапазоны. Редиректы не отслеживаются: публикуйте конечный URL.
События
Заголовок раздела «События»| Событие | Когда срабатывает |
|---|---|
serving_task.offered |
Вашему парку предложена новая задача. |
serving_task.cancelled |
Задача, которую вы могли выполнять, отменена Sitora. |
serving_task.expired |
Предложение истекло непринятым. |
robotics.paused |
Робототехника филиала приостановлена. |
robotics.resumed |
Робототехника филиала возобновлена. |
Полезная нагрузка
Заголовок раздела «Полезная нагрузка»Тело webhook’а идентифицирует задачу и её новое состояние — и ничего больше:
{ "delivery_id": 4412, "event_type": "serving_task.offered", "created_at": "2026-08-06T18:20:05.412Z", "payload": { "task_id": 8871, "display_number": 42, "leg": "dine_in_tray", "status": "offered", "expires_at": "2026-08-06T18:22:05.412Z" }}Манифест намеренно отсутствует. Webhook’и уходят на URL, который ввёл
владелец ресторана, и сохраняются как записи доставки, поэтому назначение —
адрес гостя на курьерских этапах — в этот канал не помещается. Дополните задачу
через GET /serving-tasks/, где ваши учётные данные проверяются при каждом
чтении. robotics.paused / robotics.resumed несут только filial_id.
Подпись
Заголовок раздела «Подпись»Каждая доставка несёт:
X-Sitora-Robotics-Signature: t=<unix_timestamp>,v1=<hex>где v1 — это HMAC_SHA256(secret, "{t}.{body}"), а secret — секрет
webhook’а, показанный один раз при регистрации. Проверяйте сравнением за
постоянное время и отклоняйте устаревшие метки времени (нескольких минут
допуска достаточно), чтобы исключить повторное воспроизведение.
Семантика доставки — прочитайте дважды
Заголовок раздела «Семантика доставки — прочитайте дважды»Доставка выполняется не менее одного раза и по возможности. События могут приходить дублированными, с опозданием или не прийти вовсе. Поэтому:
- Webhook’и — оптимизация задержки, а не правда. По любому событию сверяйтесь опросом — контрактом является список задач.
- Пропущенные или сомнительные события можно перечитать через
GET /webhook-deliveries/?since_id=<последний виденный id>, а отдельную доставку можно переслать черезPOST /webhook-deliveries/{id}/redeliver/. - Отвечайте
2xxбыстро и делайте работу асинхронно; медленный адрес — это провалённая доставка.