Webhook Targets
Seatmap.pro может уведомлять ваши системы об изменениях площадок, схем и карт мест. На этой странице описано, каким должен быть адрес вебхука и что происходит при неудачной доставке.
События
| Событие | Когда отправляется |
|---|---|
venue.created |
Создана площадка. |
venue.updated |
Изменена площадка. |
venue.deleted |
Удалена площадка. |
schema.created |
Создана схема. |
schema.updated |
Изменена схема. |
schema.deleted |
Удалена схема. |
seatmap.stored |
Сохранена карта мест. |
Требования к адресу
Breaking: начиная с 1.70.0 адрес вебхука должен быть публичным HTTPS-адресом. Адрес, не удовлетворяющий обоим условиям, отклоняется при сохранении, а любая доставка на него записывается с типом ошибки TARGET_NOT_ALLOWED.
Адрес принимается, если:
- URL — корректный URI с хостом.
- Схема —
https. Незашифрованныйhttpотклоняется. - Все адреса, в которые разрешается хост, публично маршрутизируемы.
Хост отклоняется, если любой из его адресов относится к loopback, link-local, site-local (частные диапазоны вроде 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16), multicast, CGNAT или иным образом зарезервирован. Отклоняются также IPv6-адреса unique-local и IPv4-mapped IPv6-адреса, у которых заблокирован лежащий в основе IPv4-адрес. Хост, который вообще не разрешается, тоже отклоняется.
Если ваш эндпоинт не публичный
Терминируйте TLS на публичном имени хоста и переадресуйте трафик внутрь оттуда — достаточно обратного прокси или API-шлюза перед вашим сервисом. Не рассчитывайте, что внутреннее имя хоста сработает, если оно публично разрешается в частный адрес: проверяется разрешённый адрес, а не имя.
Self-hosted установки, которым действительно нужна доставка внутри собственной сети, могут задать сервису редактора seatmap.webhooks.allow-private-targets со значением true. Это выключает проверку адресов, поэтому включайте эту настройку только тогда, когда весь сетевой путь находится под вашим контролем.
Повторы доставки
Неудачная доставка повторяется с экспоненциальной задержкой, по умолчанию три раза. Значения по умолчанию:
| Параметр | По умолчанию | Что означает |
|---|---|---|
timeoutMs |
30000 |
Таймаут одной попытки. |
maxRetries |
3 |
Число повторов после первой попытки. |
backoffInitialMs |
1000 |
Задержка перед первым повтором. |
backoffMultiplier |
2.0 |
Множитель для каждой следующей задержки. |
retryOnHttpStatuses |
500, 502, 503, 504 |
Коды, при которых доставка повторяется. |
skipRetryOnHttpStatuses |
400, 401, 403, 404 |
Коды, которые считаются окончательными. |
Таймауты, сетевые ошибки и ошибки соединения повторяются. Ошибка TARGET_NOT_ALLOWED не повторяется: адрес некорректен, и ожидание не поможет. После последнего повтора событие попадает в список недоставленных, а не пропадает молча.
Что сохраняется в попытке доставки
В каждой попытке фиксируются статус, тип ошибки и фрагмент тела ответа, чтобы можно было понять причину сбоя, не встраивая логирование в собственный эндпоинт.
Заголовки ответа, несущие учётные данные, сохраняются как [redacted]: authorization, proxy-authorization, set-cookie, set-cookie2, www-authenticate, proxy-authenticate и x-amz-security-token. Если ваш эндпоинт возвращает токен в одном из этих заголовков, в журнал доставок он не попадёт.