Webhook
Требования к реализации ресурса, обрабатывающего webhook
На стороне клиента должен быть реализован публичный ресурс с методом POST, который отвечает кодом 2xx. Если Консоль получает код 2xx, webhook считается полученным и обработанным на стороне клиента.
Ресурс должен быть доступен без аутентификации и авторизации. Разрешите входящие запросы с IP-адресов:
84.201.153.160158.160.48.19884.201.153.101158.160.170.215
Если endpoint возвращает ответ, отличный от 2xx, Консоль выполнит до 20 попыток отправки с увеличивающимся интервалом. Обработчик должен быть идемпотентным: повторная доставка одного webhook не должна создавать дубликаты объектов в вашей системе.
Возможные варианты подписки
Для каждого кабинета в Консоли можно настроить один или несколько уникальных endpoint, на которые будут отправляться webhook. Например, отдельные endpoint для демонстрационного и боевого кабинетов.
Для каждого события можно использовать отдельный endpoint. Например, обрабатывать создание акта на одном ресурсе, а изменения заданий — на другом.
Порядок подключения к webhook
- Реализуйте на стороне клиента endpoint, который принимает и обрабатывает полезную нагрузку webhook для нужных событий.
- Передайте название компании в Консоли, endpoint и названия webhook, которые требуется получать в демонстрационном кабинете.
- После проверки обработки 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.