Вебхуки
Когда в магазине происходит событие, InSales отправляет POST-запрос на адрес приложения, указанный в вебхуке. Так приложение получает уведомления об изменениях товаров, заказов и клиентов.
Доставка уведомления не гарантируется. Для полной сверки данных дополнительно запрашивайте списки с параметром updated_since.
Методы — Webhook в справочнике. Создавать вебхуки можно уже в обработчике установки приложения.
Темы
Параметр topic определяет событие, о котором нужно уведомлять приложение. Он обязателен при создании вебхука. В справочнике перечислены следующие темы:
orders/create,orders/update,orders/destroyproducts/create,products/updateclient/create,client/update
Дополнительные поля:
format_type—jsonилиxmlwarehouse_idприменяется только к темам заказов. Если указать идентификатор склада, уведомления будут приходить только о заказах этого складаsales_channel_idприменяется только кproducts/updateи ограничивает уведомления товарами выбранного канала продажbatch_sizeприменяется только кproducts/createиproducts/update. Задаёт максимальное число товаров в одном уведомлении; по умолчанию — 10
Создание
POST /admin/webhooks.json
{
"webhook": {
"address": "https://myapp.example/insales/products",
"topic": "products/update",
"format_type": "json",
"batch_size": 10
}
}
Ответ 201 содержит id, topic, format_type, warehouse_id, sales_channel_id, batch_size.
Остальные методы:
GET /admin/webhooks.jsonGET /admin/webhooks/:id.jsonPUT /admin/webhooks/:id.jsonDELETE /admin/webhooks/:id.json—{ "status": "ok" }
Для одного приложения нельзя создать два вебхука с одинаковыми адресом и темой.
Что приходит на address
InSales отправляет уведомление POST-запросом на address. Заголовок Content-Type соответствует выбранному format_type: например, для JSON используется application/json.
Для products/create и products/update тело — JSON-массив товаров, те же поля, что у GET /admin/products.json. В одном запросе не больше batch_size товаров. При batch_size: 1 тело всё равно содержит массив, состоящий из одного товара.
Для orders/create, orders/update и orders/destroy тело — один заказ в выбранном формате, как объект заказа в API.
Для client/create и client/update тело — один клиент, тоже в выбранном формате.