Исходящие webhook-события
Исходящие webhook-события позволяют внешней системе получать уведомления о важных изменениях в SNABZHENETS+: создании сущностей, обновлении данных, смене статусов, архивировании и тестовой проверке доставки.
Короткий ответ
Подписка API/Webhooks отправляет HTTP-запрос во внешнюю систему, когда в SNABZHENETS+ происходит выбранное событие. Имя события передаётся в поле event тела webhook и в заголовке X-Snabplus-Event.
Если в подписке не выбран конкретный список событий, подписка получает все успешные бизнес-события audit trail, кроме внутренних событий управления webhook.
Где получить каталог
Актуальный список публичных событий доступен через API:
GET /api/v1/integration-api/metaСобытия находятся в поле events ответа.
GET /api/v1/integrations/api-webhooks/installations/:id/consoleСобытия находятся в поле eventCatalog ответа.
Сущности и события
| Сущность | Системная сущность | Событие | Что означает |
|---|---|---|---|
| Закупка | procurement | integration_api.procurement.created | Создана новая закупка. |
| Закупка | procurement | integration_api.procurement.updated | Изменены данные закупки без отдельного события смены статуса. |
| Закупка | procurement | integration_api.procurement.status_changed | У закупки изменился статус. |
| Номенклатура | catalog_item | integration_api.catalog_item.created | Создана новая позиция номенклатуры. |
| Номенклатура | catalog_item | integration_api.catalog_item.updated | Изменены данные позиции номенклатуры. |
| Номенклатура | catalog_item | integration_api.catalog_item.deleted | Позиция номенклатуры удалена или архивирована. |
| Контрагент | counterparty | integration_api.counterparty.created | Создан новый контрагент. |
| Контрагент | counterparty | integration_api.counterparty.updated | Изменены данные контрагента. |
| Контрагент | counterparty | integration_api.counterparty.status_changed | У контрагента изменился статус. |
| Контрагент | counterparty | integration_api.counterparty.deleted | Контрагент удалён или архивирован. |
| Склад | warehouse | integration_api.warehouse.created | Создан новый склад. |
| Склад | warehouse | integration_api.warehouse.updated | Изменены данные склада. |
| Склад | warehouse | integration_api.warehouse.deleted | Склад удалён или архивирован. |
| Прайс-лист | price_list | integration_api.price_list.created | Создан новый прайс-лист. |
| Прайс-лист | price_list | integration_api.price_list.updated | Изменены данные прайс-листа. |
| Прайс-лист | price_list | integration_api.price_list.status_changed | У прайс-листа изменился статус. |
| Прайс-лист | price_list | integration_api.price_list.deleted | Прайс-лист удалён или архивирован. |
| Счёт | invoice | integration_api.invoice.created | Создан новый счёт. |
| Счёт | invoice | integration_api.invoice.updated | Изменены данные счёта. |
| Счёт | invoice | integration_api.invoice.status_changed | У счёта изменился статус. |
| Тест интеграции | integration | integration.test_event | Техническое тестовое событие для проверки подписки, URL, заголовков и подписи. |
Типы событий
| Тип | Суффикс | Когда отправляется |
|---|---|---|
| Создание | created | В SNABZHENETS+ появилась новая сущность. |
| Обновление | updated | Изменились поля существующей сущности. |
| Смена статуса | status_changed | Изменился статус сущности, и внешняя система должна отдельно отреагировать на переход. |
| Удаление или архивирование | deleted | Сущность стала неактивной, удалена или архивирована. Этот тип есть только у архивируемых сущностей. |
| Тестовое событие | test_event | Пользователь вручную проверяет webhook-подписку без изменения бизнес-данных. |
Payload
Тело исходящего webhook остаётся стабильным:
{
"event": "integration_api.procurement.status_changed",
"eventId": "audit-log-uuid",
"tenantId": "tenant-uuid",
"entity": {
"type": "procurement",
"id": "entity-uuid"
},
"occurredAt": "2026-05-28T10:00:00.000Z",
"data": {
"changes": {},
"snapshot": {},
"metadata": {}
},
"links": [
{
"externalSource": "erp",
"externalId": "PO-1001",
"entityType": "procurement",
"entityId": "entity-uuid"
}
]
}Заголовки и подпись
Каждый исходящий webhook подписывается HMAC-SHA256:
X-Snabplus-Event: integration_api.procurement.status_changed
X-Snabplus-Event-Id: audit-log-uuid
X-Snabplus-Timestamp: 1760000000000
X-Snabplus-Signature: sha256=<hex>Подпись считается по строке:
{timestamp}.{rawBody}Внешняя система должна проверить подпись до обработки события.
Повторы доставки
SNABZHENETS+ повторяет доставку при сетевой ошибке, 408, 429 и ответах 5xx. Каждая попытка видна в журнале доставки API/Webhooks.