Справочник API

Склад и остатки

Остатки хранятся по размерам, а не по товарам. Физический остаток — это то, что лежит на полке; доступный — физический минус резервы под неотгруженные заказы. Покупатель на витрине видит доступный, кладовщик работает с физическим, и путать их нельзя.

GET/warehouses

Склады бренда

Список складов с пометкой, какой из них онлайн-склад и какой производственный.

Доступ:Ключ интеграцииСессия сотрудникаПраво:view_stock, manage_stock или manage_orders

Онлайн-склад — тот, чей остаток показывается покупателю на витрине. Именно с него списывается товар при отгрузке, если у заказа не указан другой.

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

ПараметрТипОбязателенОписание
includeDeactivatedtrue | 1нетПоказать выключенные склады. По умолчанию они скрыты.

Поля ответа

ПолеТипОписание
warehousesarrayСклады бренда.
onlineWarehouseIdnumber | nullСклад, остаток которого видит покупатель.
productionWarehouseIdnumber | nullСклад, на который приходует готовую продукцию производство.

Ошибки

КодОтвет сервераКогда возникаетЧто делать
403{"error":"Forbidden: Missing permission view_stock"}Нет права на чтение склада.
GET/warehouses/{id}/stock

Остатки склада

Остатки по каждому размеру: физический, зарезервированный и доступный.

Доступ:Ключ интеграцииСессия сотрудникаПраво:view_stock или manage_stock

Параметры пути

ПараметрТипОбязателенОписание
idnumberдаИдентификатор склада.

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

ПараметрТипОбязателенОписание
productIdnumberнетОставить только размеры этого товара.

Поля ответа

ПолеТипОписание
quantitynumberФизический остаток. Может быть отрицательным, если товар отгрузили в минус.
reservednumberСколько единиц закреплено за неотгруженными заказами.
availablenumberФизический минус резервы. Тоже может быть отрицательным.
productSizeobjectРазмер и его товар.
ответ
[
  {
    "warehouseId": 4,
    "productSizeId": 1923,
    "quantity": 12,
    "reserved": 3,
    "available": 9,
    "productSize": {
      "id": 1923,
      "size": "M",
      "product": { "id": 341, "name": "ДЖЕРСИ «LIGHT CLASSIC» BLACK" }
    }
  }
]

Ошибки

КодОтвет сервераКогда возникаетЧто делать
400{"error":"Некорректный id склада"}В пути не число.
404{"error":"Склад не найден"}Склада нет или он чужого бренда.
POST/warehouses/{id}/stock

Установить остаток

Записывает остаток по размерам. Это установка значения, а не прибавка.

Доступ:Ключ интеграцииСессия сотрудникаПраво:manage_stock

Передаётся итоговое количество, а не дельта. Режим physical означает, что вы сообщаете физическое наличие на полке, и платформа сама вычтет из него уже собранные, но не отгруженные заказы.

Параметры пути

ПараметрТипОбязателенОписание
idnumberдаИдентификатор склада.

Тело запроса

ПараметрТипОбязателенОписание
itemsarrayдаСписок из объектов с полями productSizeId и quantity.
modestringнетphysical — вы сообщаете наличие на полке; без него значение записывается как есть и не опускается ниже нуля.physical
curl -s -X POST "https://api.amarix.ru/warehouses/4/stock" \
  -H "Authorization: Bearer $AMARIX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "mode": "physical",
        "items": [
          { "productSizeId": 1923, "quantity": 12 },
          { "productSizeId": 1924, "quantity": 0 }
        ]
      }'

Ошибки

КодОтвет сервераКогда возникаетЧто делать
400{"error":"Нет позиций для сохранения"}Пустой список позиций.
400{"error":"Склад архивный или деактивирован"}Склад выключен.
404{"error":"Склад не найден"}Склада нет или он чужого бренда.
403{"error":"Forbidden: Missing permission manage_stock"}Нет права на изменение склада.
GET/warehouses/audit

История движений

Журнал изменений остатков: кто, когда, на сколько и почему.

Доступ:Ключ интеграцииСессия сотрудникаПраво:view_stock или manage_stock

Основной инструмент разбора «куда делся товар». Каждая запись содержит знаковое изменение количества и причину.

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

ПараметрТипОбязателенОписание
takenumberнетпо умолчанию 50Сколько записей вернуть, не больше 200.
skipnumberнетпо умолчанию 0Сколько пропустить.
warehouseIdnumberнетТолько по этому складу.
productSizeIdnumberнетТолько по этому размеру.
orderIdnumberнетТолько движения, связанные с этим заказом.
productIdsstringнетТовары через запятую.
actionstringнетПричина движения.
qstringнетПоиск по названию товара.

Поля ответа

ПолеТипОписание
rowsarrayЗаписи журнала.
totalnumberВсего записей по фильтру.
quantityDeltanumberИзменение количества: со знаком, минус означает списание.

Ошибки

КодОтвет сервераКогда возникаетЧто делать
403{"error":"Forbidden: Missing permission view_stock"}Нет права на чтение склада.
GET/warehouses/reservations

Резервы

Единицы товара, закреплённые за заказами, с признаком срока годности.

Доступ:Ключ интеграцииСессия сотрудникаПраво:view_stock или manage_stock

Резерв до оплаты живёт ограниченное время — по умолчанию тридцать минут — и снимается сам, если заказ не оплатили. После оплаты становится бессрочным и снимается только при отгрузке.

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

ПараметрТипОбязателенОписание
statusstringнетпо умолчанию activeКакие резервы показать.active · expired · released · all
searchstringнетПоиск по товару или номеру заказа.
limitnumberнетпо умолчанию 100От 1 до 500.
offsetnumberнетпо умолчанию 0Сколько пропустить.

Ошибки

КодОтвет сервераКогда возникаетЧто делать
403{"error":"Forbidden: Missing permission view_stock"}Нет права на чтение склада.
POST/warehouses/transfer

Перемещение между складами

Переносит указанные количества с одного склада бренда на другой.

Доступ:Ключ интеграцииСессия сотрудникаПраво:manage_stock

Тело запроса

ПараметрТипОбязателенОписание
fromWarehouseIdnumberдаОткуда.
toWarehouseIdnumberдаКуда.
linesarrayдаСтроки с productSizeId и quantity.
notestringнетКомментарий, который сохранится в истории.

Ошибки

КодОтвет сервераКогда возникаетЧто делать
400{"error":"Некорректные склады"}Склады не указаны или совпадают.
400{"error":"Пустой список строк"}Нечего переносить.
400{"error":"Недостаточно остатка sizeId=<N> на складе <ID>: есть <X>, нужно <Y>"}На складе-источнике не хватает товара.Сообщение содержит фактический и требуемый остаток — по нему видно, чего не хватило.
403{"error":"Forbidden: Missing permission manage_stock"}Нет права на изменение склада.