readme.md

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

Все остатки товаров. С возможностью отбора по отдельным складам и товарам, а также по группам товаров.