POST на ваш URL.
Область ключа для управления подписками —
webhooks:manage. Доставка «хотя бы
один раз»: возможны повторы, дедуплицируйте по полю id.Подписка
secret подписки — он показывается один раз. Сохраните его:
им проверяется подпись каждой доставки.
Тонкий payload
Событие несёт тип, идентификатор ресурса и время — но не сами данные:GET /developer/v1/employees/{employee_id}. Так к ним автоматически применяются
область ключа и редакция полей, а персональные данные не уезжают на внешний URL.
Типы событий
Переименование человека приходит как
employee.changed по каждому затронутому
сотруднику — это основной канал, чтобы держать имена свежими (фильтр
updated_since в списках такие изменения не отражает).
События по документам — document.sent, document.completed, document.rejected
и другие — вынесены в отдельный гайд События документов.
employee.changed объединяет создание и изменение: получив его, перечитайте ресурс
и примените upsert. Отдельного created нет намеренно — источник не всегда может
надёжно отличить первое появление от последующего изменения.Проверка подписи
Каждая доставка несёт заголовок:v1 — это HMAC-SHA256(secret, "{t}.{тело запроса}") в hex. Проверьте на
своей стороне и отклоните запрос, если подпись не сходится или t старше пяти
минут (защита от повторов).
Доставка и надёжность
- Ответьте
2xxбыстро и обрабатывайте асинхронно. Таймаут — 10 секунд. - При неуспехе событие доставляется повторно — до 8 попыток с экспоненциально растущей задержкой, суммарно около суток.
- После 20 подряд окончательно проваленных доставок эндпоинт автоматически отключается, и новые события на него не отправляются.
- Доставка — «хотя бы один раз»: возможны повторы. Используйте
idсобытия для дедупликации.
Эксплуатация
- Повторное включение. Отключённый эндпоинт (после серии отказов или вручную) включается в настройках приложения: Интеграции → Вебхуки. Эндпоинта включения в Developer API сейчас нет.
- События за время простоя не доигрываются. Пока эндпоинт отключён, события
не копятся. После включения сделайте сверку опросом:
GET /employees?updated_since=<время отключения>. - Ротация секрета. Секрет выдаётся один раз при создании и не ротируется. Чтобы сменить его — создайте новый эндпоинт с тем же URL и набором событий, переключите проверку подписи на новый секрет, затем удалите старый эндпоинт.