Общее описание
Эта версия API устарела.
Мы продолжаем ее поддерживать, но рекомендуем использовать более быстрый и стабильный API SellOut+ по блокам.
Общие сведения
SellOut+ предоставляет API для экспорта загруженных и обработанных данных в другие информационные системы по протоколу https. API доступен по адресу https://app.sellout.plus/api/sellout/sync.
Для подключения к API требуется ключ аутентификации (токен), который предоставляется сотрудниками SellOut+ (support@sellout.plus).
API возвращает данные в одном из двух режимов:
Полная выгрузка, т.е. все доступные данные из объекта;
Инкрементальная выгрузка, т.е. изменившиеся (в т.ч. и удалённые) данные относительно прошлой выгрузки.
Таймаут запроса – 10 минут.
API не поддерживает версионность. Изменения в API потребуют изменения в интеграции с SellOut+.
Аутентификация, параметры и пример запроса
Для аутентификации, в API нужно передать заголовок следующего вида:
Authorization: Bearer <ВАШ_ТОКЕН>
Доступные параметры приведены ниже:
Mode— режим работы API. Следует указать режим asis.Table— название объекта, из которого будут получены данные.Take— максимальное количество строк в ответе.Если параметр не передан, будет использовано значение по умолчанию = 5000000
RowVersion— максимальное значение версии изменений (поле RowVersion) из последней выгрузки для выбранного объекта. Необязательный параметр.Fields— возвращаемые поля объекта. Обязательный параметр. Для перечисления нескольких полей используются символ-разделитель,. ПолеFlagDeletedвозвращается только для объектов с полемRowVersionпри указании хотя бы одного из параметровRowVersionилиTake.
Пример подключения
Рассмотрим работу с API на примере получения данных из справочника ref.Company. Для обращений к API используем системную утилиту curl.
Запрашиваем первые 100 000 строк из объекта ref.Company:
curl -H "Authorization: Bearer <ВАШ_ТОКЕН>" "https://app.sellout.plus/api/sellout/sync?mode=asis&Table=ref.Company&Take=100000&Fields=ID,Code,Name" -o result.csv
Запрашиваем следующие 100 000 строк из объекта ref.Company, где RowVersion равен максимальному значению из прошлой выгрузки:
curl -H "Authorization: Bearer <ВАШ_ТОКЕН>" "https://app.sellout.plus/api/sellout/sync?mode=asis&Table=ref.Company&Take=100000&RowVersion=12356789&Fields=ID,Code,Name" -o result.csv
Запрос следует повторять, пока количество строк в ответе не станет меньше значения, указанного в параметре Take. Меньшее количество строк означает, что новых данных для синхронизации нет.
Через некоторое время можно повторить запрос с максимальным RowVersion из последней выгрузки, чтобы получить последние изменения в данных.
Отслеживание изменений в данных
На уровне записи в объекте поддерживается поле RowVersion.
RowVersion – это глобальный счётчик для всей системы SellOut+. Каждый раз, когда происходит изменение в данных, то счётчик увеличивается на единицу и значение счётчика записывается в поле RowVersion изменившейся записи. RowVersion присваивается не только новым или изменённым записям, но и удалённым.
В некоторых объектах нет RowVersion. Как правило, в таком объекте редко меняются записи.
Формат и структура получаемых данных
Данные представлены в виде таблицы с заголовками и разделителями между столбцами ;. Кодировка – UTF-8.
Во всех объектах есть следующие системные поля:
ID— уникальный идентификатор записи в SellOut+.RowVersion— версия изменения данных.FlagDeleted— признак удаления записи.
Для удалённых записей хранятся только системные поля: ID, RowVersion, FlagDeleted. Идентификаторы удалённых записей хранятся в SellOut+ 14 календарных дней, после чего удаляются навсегда.
Загружаемые факты Таблицы фактов – плоские таблицы, которые хранят загруженные транзакционные данные.
Загружаемые справочники Справочники, в которые могут быть загружены данные, имеют двухуровневую структуру: запись источника и итоговая запись.
В строках таблиц справочников в API выгружаются загруженные записи источника и итоговые записи. Записи источника ссылаются на итоговые записи через поле ID_mapping_MDT (Parent-child). Итоговые записи всегда имеют ID_mapping_DataSource/Code равный MDT.
Рекомендации по использованию API
Всегда использовать параметр
Takeв запросах к API.Сначала выгружать объекты с фактами, а затем справочники.
Настроить синхронизацию в нерабочее время, например в промежутке с 03:00 до 05:00 (МСК).
Настроить обработку добавления новых полей или изменения порядка полей. Также в API могут удаляться или переименовываться поля, о чём сообщается заранее.
Коды ошибок
Код ошибки | Описание | Ответ от сервера |
400 | Несуществующее значение пар-ра Mode |
|
400 | Не указан пар-р Fields, когда Mode=”asis” |
|
400 | Значение пар-ра Take больше максимального |
|