Skip to main content
Вместо периодического опроса вы можете подписаться на события: когда данные в вашем тенанте меняются, Doodocs People сам отправит 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 и набором событий, переключите проверку подписи на новый секрет, затем удалите старый эндпоинт.

Отладка

Отправьте тестовое событие на существующую подписку:
Ответ содержит код состояния, с которым ваш сервер принял тестовую доставку.