Синхронизация данных


API Zenky.io позволяет импортировать данные каталога из внешних систем учёта (например, 1С).

Поддержка сущностей

Импорт производится с помощью отдельного API, на данный момент поддерживающий следующие сущности:

Работа со шлюзами обмена

Работа со шлюзами обмена, как и с основным API, проводится с использованием JSON-структур. Список требуемых полей для каждой сущности описан в документации к конкретным объектам.

Отправка данных должна производиться на специальные адреса API, которые указаны в документации к конкретным сущностям. Список объектов должен находиться внутри массива payload. Остальные поля запроса игнорируются.

Получение токена обмена

У каждого магазина имеется свой уникальный токен, который должен подставляться в адрес API. Просмотреть токен для своего магазина можно в разделе API профиля магазина.

Ограничения и требования

В одном запросе можно отправлять не более 100 структур (кроме товаров - там действует ограничение в 20 структур). В случае, если количество данных превышает лимит, обработаны будут только первые 100 (или 20 для товаров) записей.

Все сущности должны иметь уникальные внешние идентификаторы (поля id), которые не должны меняться для одного и того же объекта. Идентификаторы могут повторяться для различных видов сущностей (к примеру, товар с ID 1 не будет конфликтовать с категорий 1).

Удаление данных

Для удаления тех или иных объектов из нашей базы (и всех связанных с ним данных!) необходимо установить поле каждого такого объекта remove в значение true.

Ответы шлюзов

В ответе на каждый запрос все шлюзы отвечают стандартным ответом, структура которого указана ниже.

{
  "data": {
    "count": 15,
    "created_count": 2,
    "existed_count": 13,
    "updated_count": 4,
    "deleted_count": 0
  }
}

Описание полей ответа

Удаление данных

Запросы на удаление данных заканчиваются ответом, структура которого указана ниже. В отличие от импорта данных, ответы удаления не предоставляют информацию о количестве удалённых данных.

{
  "data": {
    "queued": true
  }
}

Алгоритм работы шлюзов

Каждая сущность, которая отправляется в шлюз обмена, должна иметь свой внешний идентификатор (поле id со значением идентификатора из вашей системы учёта). Этот идентификатор должен быть уникальным на уровне типа сущности (с id 1 может быть только один товар, но, одновременно, может существовать категория с таким же id).

По этим идентификаторам мы связываем новые записи в нашей базе данных. Таким образом, после первичного сохранения данных, мы сможем обновлять информацию о существующих объектах (если она, конечно, изменилась).

Список полей, которые влияют на обновление сущности, представлен на страницах документации каждой сущности.