Очередь команд
Обмен с платформой односторонний: Октопус не обращается к вашей системе сам. Вместо этого он складывает задания в очередь, а вы периодически её опрашиваете. Так платформа просит досинхронизировать данные, которых ей не хватает.
Опрашивать очередь не обязательно, но без этого некоторые ситуации придётся разбирать вручную — например, торговое предложение, пришедшее раньше родительского товара.
Получение команд
GET /client/commands?limit=100
{
"success": true,
"code": 200,
"data": {
"commands": [
{ "id": 4501, "type": "SYNC_PRODUCT", "data": { "id": "5600" } },
{ "id": 4502, "type": "SYNC_SECTIONS", "data": [] }
],
"count": 2
}
}
| Параметр | Обязательно | Описание |
|---|---|---|
limit | нет | Сколько команд вернуть за раз. Если не передан — 100 |
При выдаче команда сразу помечается отправленной и в следующем запросе не придёт снова. Если вы её не обработали и не сообщили об ошибке, она просто потеряется. Обрабатывайте команды сразу после получения и всегда отвечайте — подтверждением или ошибкой.
Рекомендуемая периодичность опроса — раз в несколько минут. Готовый коннектор 1С-Битрикс совмещает этот опрос с повторной отправкой неудавшихся запросов из своей очереди.
Подтверждение выполнения
После успешной обработки отправьте номера команд:
POST /client/commands/confirm
{ "command_ids": [4501, 4502] }
| Поле | Обязательно | Описание |
|---|---|---|
command_ids | да | Непустой массив номеров выполненных команд. Пустой массив — ошибка, "code": 400 |
{ "success": true, "code": 200, "message": "Команды успешно подтверждены" }
Сообщение об ошибке
Если команду выполнить не удалось, сообщите об этом — платформа зафиксирует причину, и её будет видно в кабинете.
POST /client/commands/errors
{
"errors": {
"4501": "Товар 5600 удалён в учётной системе"
}
}
| Поле | Обязательно | Описание |
|---|---|---|
errors | да | Непустой объект: ключ — номер команды, значение — текст ошибки. Пустой объект — ошибка, "code": 400 |
Ключ — номер команды, значение — текст ошибки. Ответ: {"success": true, "code": 200, "message": "Ошибки зафиксированы"}.
Типы команд
Обрабатывайте те, что относятся к переданным вами данным, остальные подтверждайте без действий.
| Тип | Данные | Что от вас нужно |
|---|---|---|
SYNC_PRODUCT | { "id": "5600" } | Прислать этот товар через /products/sync. Платформа запрашивает его, когда пришло торговое предложение, а родителя ещё нет |
SYNC_SECTIONS | [] | Прислать всё дерево разделов через /products/syncSections. Приходит, когда товар ссылается на неизвестный раздел |
SYNC_GOAL | Описание цели: ID, NAME, ELEMENT_TYPE, INTEGRATION, SETTINGS, ACTIVE | Сохранить или обновить цель у себя, если вы отслеживаете цели по элементам страницы. Иначе — подтвердить без действий |
DELETE_GOAL | { "ID": 12 } | Удалить цель у себя |
POPUP_SHOW, POPUP_HIDE | Описание всплывающего окна | Относится к показу всплывающих окон на сайте. Если вы их не показываете — подтвердить без действий |
Команды промокодов и правил работы с корзиной (SYNC_PROMO_CODE, ACTIVATE_PROMO_CODE и подобные) приходят только проектам с коннектором 1С-Битрикс. Если такая команда пришла и вы её не поддерживаете — подтвердите её, чтобы очередь не копилась.
Список может пополняться. Сделайте обработку устойчивой: неизвестный тип — подтвердить и записать в свой журнал, а не считать сбоем.