Создание webhook
POST/api/v1/webhooks
Регистрирует URL для получения callback-ов о результатах доставки. Привязывается к клиенту из JWT токена (один клиент = один webhook). Ошибка 400, если webhook уже зарегистрирован (используйте PUT для обновления). Требуется scope webhook.
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 409
- 429
- 500
OK
Ошибка
Ошибка
Ошибка
Ошибка
Ошибка
Превышен rate-limit (100 запросов в минуту на интеграцию).
Ошибка
Callbacks
- POST onNotificationEvent
POST{$request.body#/url}
Сервис отправляет POST-запрос на URL клиента (значение поля url из тела POST /api/v1/webhooks).
Срабатывает один раз на нотификацию — когда она достигает терминального статуса (DELIVERED при успешной доставке или FAILED для всех остальных случаев).
С вязка с исходным запросом — по полю notificationId, которое равно тому, что вернул POST /api/v1/notifications в теле SendNotificationResult.
Retry-политика. При ответе 5xx, 408, 429 или сетевой ошибке callback ретраится до 8 раз с exponential backoff (waits 10s, 20s, 40s, 80s, 160s, 320s, 640s, 1280s; полное окно ≈ 42 минуты). При остальных 4xx-ответах событие помечается permanent и не ретраится. Клиент должен ответить любым 2xx чтобы подтвердить получение.
Callbacks Responses
- 2XX
- 4XX
- 5XX
Клиент успешно принял событие. Подтверждение получено, retry не запускается.
Permanent failure (кроме 408 и 429): событие удаляется без retry. Клиентская ошибка трактуется как "клиент не хочет получать это событие".
Transient failure: событие уходит в retry-очередь (до 8 попыток с exponential backoff).