Основные методы
SellOut+ предоставляет API для экспорта загруженных и обработанных данных в другие информационные системы по протоколу HTTPS, данные передаются в формате JSON. API позволяет:
Выгружать данные из объектов SellOut+ по блокам;
Получать блоки объекта и их контрольные суммы. Это гарантирует, что ранее выгруженные с помощью API данные точно совпадают с данными, содержащимися в базе SO+.
API доступен по адресу https://app.sellout.plus/<ВАШ_ТЕНАНТ>/api/, где <ВАШ_ТЕНАНТ> — наименование проекта.
Для подключения к API требуется ключ аутентификации (токен), который предоставляется сотрудниками SellOut+ (администратором проекта или по запросу на почту support@sellout.plus). Заголовок с токеном необходимо отправлять в каждом запросе к API:
Authorization: Bearer <ВАШ_ТОКЕН>
Таймаут запросов к API на стороне сервера – 10 минут.
Выгрузка блока данных
GET /sync/<ИМЯ_ОБЪЕКТА>, где <ИМЯ_ОБЪЕКТА> – наименование объекта, из которого необходимо получить данные.
Выгрузка происходит по блокам, т.е. один запрос к методу возвращает весь блок данных целиком.
Параметры:
fields— выгружаемые из объекта поля. Можно использовать любой набор полей из описания объекта. Для перечисления нескольких полей используются символ-разделитель,. Обязательный параметр.ID_ParentLevel1— ID иерархии для объектов географии и атрибутов географии, по которому будет получен блок данных. Обязательный параметр для объектов географии и атрибутов географии.
Параметры, определяющие блок данных:
ID_mapping_DataSource— ID источника, по которому будет получен блок данных. Обязательный параметр для объектов, содержащих источник данных.date— дата факта, по которой будет получен блок данных, формат датыyyyy-mm-dd. Обязательный параметр для выгрузки объектов-фактов. Конкретное название поля с датой факта указано в описании объекта.
Запрос возвращает все записи из заданного блока объекта.
Постраничная выгрузка (пагинация)
Для более удобной работы с крупными объемами данных метод поддерживает постраничная выгрузку. С помощью опциональных параметров ID и Take можно управлять размером и начальной позицией выгружаемой порции данных. Параметры:
ID— начальный идентификатор записи объекта для выгрузки данных с использованием пагинации.Для получения первой порции данных укажите
ID = 0.Для последующих порций данных укажите
IDпоследней записи из последней полученной порции.
Take— количество записей, которое нужно вернуть в ответе. Значение по умолчанию — 1000000.
Запрос возвращает Take записей из заданного блока, у которых поле ID больше переданного значения параметра ID. Результаты будут отсортированы по возрастанию поля ID.
Если в запросе не указан ID или Take , то метод вернёт весь блок данных.
Если в результате запроса получено меньше записей, чем значение параметра Take, значит все порции данных уже получены.
Пример
Запрос выгрузки блока данных в системной утилите curl. Выгрузка данных объекта “Отгрузки в ТТ” от источника данных с кодом “SRT“ за 01.09.2023 с сохранением результата в файл “result.json“:
curl -H "Authorization: Bearer <ВАШ_ТОКЕН>" "https://app.sellout.plus/<ВАШ_ТЕНАНТ>/api/sync/sales-sellout?fields=id%2Cid_mapping_datasource%2Cid_ref_customerfrom%2Cid_ref_customerto%2Cid_ref_sku%2CVolume%2CID_mapping_DataSource=112%2Cdate=2023-09-01" -o result.json
Запрос выгрузки блока данных с пагинацией:
curl -H "Authorization: Bearer <ВАШ_ТОКЕН>" "https://app.sellout.plus/<ВАШ_ТЕНАНТ>/api/sync/sales-sellout?fields=id%2Cid_mapping_datasource%2Cid_ref_customerfrom%2Cid_ref_customerto%2Cid_ref_sku%2CVolume%2CID_mapping_DataSource=112%2Cdate=2023-09-01&ID=19882321%2CTake=100" -o result.json
Структура ответа в обоих случаях одинаковая, различаться будет только количество записей и наличие или отсутствие сортировки по полю ID.
[ { "ID": 3495321228, "ID_mapping_DataSource": 135, "ID_ref_CustomerFrom": 196001727, "ID_ref_CustomerTo": 196009700, "ID_ref_SKU": 196000821, "Volume": 69.0, "RowVersion": 69048278774 }, { "ID": 3495321227, "ID_mapping_DataSource": 135, "ID_ref_CustomerFrom": 196001727, "ID_ref_CustomerTo": 196009700, "ID_ref_SKU": 196000821, "Volume": 2.0, "RowVersion": 69048278773 } ]
Выгрузка блока данных в формате GZIP (сжатый формат)
Выгрузка в формате GZIP позволяет сжать размер блока в несколько раз. В результате по сети будет передаваться гораздо меньший объем данных, но на клиенте необходимо будет разжимать данные. Для выгрузки блока в формате GZIP необходимо передать в запросе заголовок Accept-Encoding: gzip.
Пример запроса:
curl -H "Authorization: Bearer <ВАШ_ТОКЕН>" -H "Accept-Encoding: gzip" "https://app.sellout.plus/<ВАШ_ТЕНАНТ>/api/sync/sales-sellout?fields=id%2Cid_mapping_datasource%2Cid_ref_customerfrom%2Cid_ref_customerto%2Cid_ref_sku%2CVolume%2CID_mapping_DataSource=112%2Cdate=2023-09-01" -o result.json
Получение блоков и контрольных сумм объекта
GET /checksum. Параметры:
object— название объекта, по которому будут получены контрольные суммы. Обязательный параметр.
Запрос возвращает набор всех блоков и соответствующих им контрольных сумм у переданного объекта.
Пример
Запрос в системной утилите curl. Получение блоков и контрольных сумм объекта “Остатки в ТТ” с сохранением результата в файл “result.json“:
curl -H "Authorization: Bearer <ВАШ_ТОКЕН>" "https://app.sellout.plus/<ВАШ_ТЕНАНТ>/api/checksum?object=stock-outlet" -o result.json
Ответ:
[ { "Date": "2018-06-30", "CheckSum": "0xEEF82EA88828DA7C802B2098A24051BEE1C33AEB2346A5079E12A6C31C484A0A", "ID_mapping_DataSource": 145 }, { "Date": "2018-07-31", "CheckSum": "0xF89F48FCF943C32EAA9C977A3BCEAAB1DDC01C98B160058B37953AB85D331C2C", "ID_mapping_DataSource": 145 }, { "Date": "2018-08-31", "CheckSum": "0x75B42222ADE53630EFD4582F77BC2C1798AA81BA1E9D0CDEDF44770EC3762C97", "ID_mapping_DataSource": 145 } ]