Webhook

konsol-smz-webhook

Webhook

Требования к реализации ресурса, обрабатывающего webhook

На стороне клиента должен быть реализован публичный ресурс с методом POST, который отвечает кодом 2xx. Если Консоль получает код 2xx, webhook считается полученным и обработанным на стороне клиента.

Ресурс должен быть доступен без аутентификации и авторизации. Разрешите входящие запросы с IP-адресов:

  • 84.201.153.160
  • 158.160.48.198
  • 84.201.153.101
  • 158.160.170.215

Если endpoint возвращает ответ, отличный от 2xx, Консоль выполнит до 20 попыток отправки с увеличивающимся интервалом. Обработчик должен быть идемпотентным: повторная доставка одного webhook не должна создавать дубликаты объектов в вашей системе.

Возможные варианты подписки

Для каждого кабинета в Консоли можно настроить один или несколько уникальных endpoint, на которые будут отправляться webhook. Например, отдельные endpoint для демонстрационного и боевого кабинетов.

Для каждого события можно использовать отдельный endpoint. Например, обрабатывать создание акта на одном ресурсе, а изменения заданий — на другом.

Порядок подключения к webhook

  1. Реализуйте на стороне клиента endpoint, который принимает и обрабатывает полезную нагрузку webhook для нужных событий.
  2. Передайте название компании в Консоли, endpoint и названия webhook, которые требуется получать в демонстрационном кабинете.
  3. После проверки обработки webhook передайте данные боевого кабинета: endpoint и перечень событий, на которые требуется подписка.

Общая схема полезной нагрузки в webhook

Объект details содержит полезную нагрузку и зависит от типа события. action_cipher — уникальное наименование webhook-события.

Упрощённый пример webhook:

{
  "details": {
    "id": 1234
  },
  "manifest": {
    "action_cipher": "random_name"
  }
}

Текущие действия, настроенные на отправку webhook

Ниже приведён полный перечень событий, которые подтверждённо отправляются на URL компании в сценарии Консоль.Самозанятые.

CipherНазваниеPayloadОписание
workflow.submit_tasksРазместить задания{"details":{"id":50255,"state_code":"submitted"},"manifest":{"action_cipher":"workflow.submit_tasks"}}Отправляется при публикации задания. id — идентификатор задания, state_code — его актуальный статус.
workflow.revoke_tasksОтозвать задания{"details":{"id":50255,"state_code":"revoked"},"manifest":{"action_cipher":"workflow.revoke_tasks"}}Отправляется при отзыве задания компанией. id — идентификатор задания, state_code — его актуальный статус.
workflow.check_in_tasksНачать работу над заданиями{"details":{"id":50255,"state_code":"checked_in"},"manifest":{"action_cipher":"workflow.check_in_tasks"}}Отправляется, когда компания отмечает начало работы по заданию. id — идентификатор задания, state_code — его актуальный статус.
workflow.accept_tasksПринять задания{"details":{"id":50255,"state_code":"accepted"},"manifest":{"action_cipher":"workflow.accept_tasks"}}Отправляется, когда компания принимает результат выполнения задания. id — идентификатор задания, state_code — его актуальный статус.
workflow.reject_tasksОтклонить задания{"details":{"id":50255,"state_code":"rejected"},"manifest":{"action_cipher":"workflow.reject_tasks"}}Отправляется, когда компания отклоняет результат выполнения задания. id — идентификатор задания, state_code — его актуальный статус.
workflow.finalize_tasksЗавершение заданий с одновременным созданием актов{"details":{"id":50255,"contractor_id":173053,"state_code":"accepted"},"manifest":{"action_cipher":"workflow.finalize_tasks"}}Отправляется при создании акта по заданию. id — идентификатор акта, contractor_id — идентификатор исполнителя, state_code — статус связанного задания.

Webhook передаёт краткие данные. После получения уведомления о задании запросите актуальную карточку через GET /workflow/tasks/{id}. После создания акта получите его данные штатным методом вашей интеграции и обновите состояние в своей системе по ответу API.