Надёжность доставки
Какая доставка считается успешной
Доставка считается успешной, если ответ с кодом из списка success_statuses вебхука (по умолчанию 200) получен до истечения timeout (по умолчанию 10 секунд). Тело ответа не анализируется. Отвечайте на запрос сразу, а ресурсоёмкую обработку выполняйте после отправки ответа.
Повторные попытки
При получении кода ошибки в ответе BookNow повторяет запрос до tries раз (по умолчанию 5). Когда попытки исчерпаны, вебхук переходит в статус auto_disabled и больше не отправляется. Если в настройках включено send_notification, на адреса из emails отправляется письмо об отключении.
Повторно включить вебхук можно в панели или запросом POST /webhooks/{id}/enable. События, пропущенные за время отключения, автоматически не отправляются: их можно отправить повторно из истории в панели.
История и повторная отправка
Панель хранит журнал доставок: запрос, ответ, код, число попыток. Любую доставку из журнала можно отправить повторно. Журнал хранится ограниченное время: подробные записи 7 дней, сводные 30.
Обработка дубликатов
Одно действие может привести к нескольким доставкам: при переносе записи отправляются booking-updated и booking-rescheduled, а повторная отправка из панели дублирует уже полученный запрос. Обработчик должен быть идемпотентным: в качестве ключа используйте uid записи вместе с booking_status и booking_date_start. Для goods-sold тело может быть пустым массивом, такие доставки пропускайте.
Порядок доставки
Порядок доставок не гарантирован: события отправляются через очередь, поэтому повторные попытки могут увеличивать время доставки. Ориентируйтесь на значения полей, а не на порядок получения.
Сетевые требования
Адрес вебхука должен быть доступен из интернета по HTTPS или HTTP и отвечать за время меньше timeout. Запросы отправляются с заголовком User-Agent: GuzzleHttp/7; дополнительные заголовки для авторизации задаются в настройках вебхука (headers).