1-2.su REST API
Передача данных осуществляется по протоколу HTTP. Применяются принципы REST API. Сервер отвечает в формате JSON.
Адрес API: http://m1.1-2.su/api
Документация с примерами команд и выгрузок: http://m1.1-2.su/api/apidoc/
Авторизация
Каждый запрос к API серверу должен передавать HTTP Basic Authentication. Логин и пароль зарегистрированных пользователей в системе.
Тестирование
Для выполнения запросов можно воспользоваться следующими Linux командами:
-
curl -i -u LOGIN:PASSWORD -X GET http://m1.1-2.su/api/...
выводит HTTP заголовки ответа сервера -
curl -u LOGIN:PASSWORD -X GET http://m1.1-2.su/api/...
выполняет запрос и выводит результат в формате JSON "как есть" -
curl -u LOGIN:PASSWORD -X GET http://m1.1-2.su/api/... | python -m json.tool
то же, но форматирует JSON в человекочитаемый вид
где LOGIN и PASSWORD -- логин и пароль из системы соответственно.
Ограничения
Действуют ограничения на количество запросов к сервису. На данный момент разрешено 600 запросов в 1 минуту. Каждый ответ сервера содержит HTTP заголовки содержащие оставшиеся лимиты.
curl -i -u LOGIN:PASSWORD -X GET http://m1.1-2.su/api/user
Логин или пароль неверный:
HTTP/1.1 401 Unauthorized
...
www-authenticate: Basic
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
...
Успешный ответ:
HTTP/1.1 200 OK
...
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
...
Превышение лимитов:
HTTP/1.1 429 Too Many Requests
...
x-ratelimit-limit: 60
x-ratelimit-remaining: 0
retry-after: 30
x-ratelimit-reset: 1515948378
...
Реализованные методы
GET /api/user
Данные текущего пользователя и складах его контекста.
Ключу "code" соответствует значение - код склада.
Ключу "title" - наименование склада.
GET /api/sections
Все разделы. Указан родительский и текущий id через которые получается иерархия групп каталога.
GET /api/sections/{section}
Конкретный раздел по идентификатору. Выгружаются сведения как по родительскому так и по всем дочерним группам.
GET /api/products
Все товары. Выгружаются как данные по товару так и группы в которых этот товар находиться (товар может находиться сразу в нескольких группах).
В значениях ключей выгружаются следующие данные:
"id"- код товара
"article" - артикул поставщика
"barcode" - штрих-код товара
"pack" - упаковки товара перечисленные через "/"
"min_amount" - минимальная кратность отгрузки
"title" - наименование товара
GET /api/products/{product}
Конкретный товар по идентификатору. Кроме уже описанных данных, данный запрос выдает:
"price" - цена товара,
"stock"- склад на котором товар присутствует (складов может быть несколько), \
"amount" - количество товара,
"ontheway_amount" - количество товара в пути,
"ontheway_date" - дату ближайшего поступления товара на склад,
"delivery" - среднее время доставки товара со склада после получения заказа.
Этот запрос удобен для получения текущих данных по конкретному товару.
GET /api/prices
Все цены товаров. С возможностью отбора по разделам и отдельным товарам.
GET /api/amounts
Все остатки товаров. С возможностью отбора по отдельным складам и товарам, а также по группам товаров.