Остатки по API

Swagger

API предоставляет доступные остатки товаров на складах и в производстве с детализацией по городам и цветам. 

1. Адрес и метод

GET

http://ea.f1s.org.ua:8080/EA/ru_RU/hs/API/GetInfo

2. Параметры запроса

В параметре URL param передаётся JSON, закодированный для передачи в URL. Тело GET-запроса не используется. Оба поля обязательны.

ПолеТипОписание
tokenСтрокаИндивидуальный токен доступа
includeCharacteristicsBooleanfalse — по товару; true — по товару и характеристике

Без характеристик

curl --get \
  'http://ea.f1s.org.ua:8080/EA/ru_RU/hs/API/GetInfo' \
  --data-urlencode 'param={"token":"<YOUR_TOKEN>","includeCharacteristics":false}'

С характеристиками

curl --get \
  'http://ea.f1s.org.ua:8080/EA/ru_RU/hs/API/GetInfo' \
  --data-urlencode 'param={"token":"<YOUR_TOKEN>","includeCharacteristics":true}'

3. Поля ответа

ПолеТипОписание
productCodeСтрокаКод товара
articleСтрокаАртикул
productNameСтрокаНазвание товара
unitСтрокаЕдиница измерения
stockQuantityЧислоДоступный остаток на складе
productionQuantityЧислоДоступное количество в производстве
detailsМассивДетализация по городам
priceЧислоЦена, только если её выгрузка разрешена
vatStatusСтрока или nullСтатус НДС, передаётся вместе с price
characteristicCodeСтрокаКод характеристики; может быть пустым
characteristicNameСтрокаНазвание характеристики
colorСтрокаЦвет, только если заполнен

При includeCharacteristics: true дополнительно передаются characteristicCode и characteristicName. Поле color передаётся только при заполненном цвете. Если выгрузка цен выключена, price и vatStatus отсутствуют. Цена 0 — числовое значение, а не отсутствие поля.

vatStatus: included — с НДС; excluded — без НДС; null — статус не определён.

4. Детализация по городам и цветам

Каждый элемент details содержит city (строка или null), stockQuantity и productionQuantity (числа). Необязательный массив colors содержит color, stockQuantity и productionQuantity. Если цвета не заполнены, colors отсутствует. Количества без цвета учитываются в итоге города, но не включаются в colors; сумма по цветам может быть меньше итога города. Суммы по городам равны общим количествам позиции. Неопределённый город передаётся как city: null.

Пустой массив [] означает отсутствие доступных остатков. Коды нужно хранить как строки с ведущими нулями.

5. Пример без характеристик

Примеры содержат условные данные.

[
  {
    "productCode": "0000005870",
    "article": "ЕА-0005870",
    "productName": "Olflex Classic 110 18G1",
    "unit": "м",
    "stockQuantity": 200,
    "productionQuantity": 100,
    "details": [
      {
        "city": "Запоріжжя",
        "stockQuantity": 150,
        "productionQuantity": 100,
        "colors": [
          {
            "color": "Чорний",
            "stockQuantity": 150,
            "productionQuantity": 100
          }
        ]
      },
      {
        "city": "Кам'янець-Подільський",
        "stockQuantity": 50,
        "productionQuantity": 0
      }
    ]
  }
]

6. Пример с характеристиками

Примеры содержат условные данные.

[
  {
    "productCode": "0000005870",
    "article": "ЕА-0005870-000004287",
    "productName": "Olflex Classic 110 18G1",
    "unit": "м",
    "stockQuantity": 40,
    "productionQuantity": 0,
    "price": 42.5,
    "vatStatus": "included",
    "characteristicCode": "000004287",
    "characteristicName": "Відрізок 40 м",
    "details": [
      {
        "city": "Запоріжжя",
        "stockQuantity": 40,
        "productionQuantity": 0
      }
    ]
  }
]

7. Статусы и ошибки

HTTPОписание
200Данные успешно получены
400Некорректный JSON или параметры
403Токен отсутствует, недействителен или доступ запрещён
500Внутренняя ошибка получения или формирования ответа

Коды error передаются на английском, сообщения message — на украинском независимо от языка этой инструкции. Примеры ошибок:

{
  "error": "access_denied",
  "message": "Токен не вказано"
}
{
  "error": "internal_error",
  "message": "Не вдалося отримати залишки. Зверніться до постачальника"
}
Content-Type: application/json; charset=utf-8

Если цена не передана, ранее сохранённую цену изменять не нужно. При ошибке запроса прежние данные следует сохранить. Токен доступа конфиденциален.