Производство

Очередь и приёмка

Как устроен производственный контур целиком — в разделе «Как устроено».

Производственный контур живёт отдельно от остального API: свой префикс пути, свой ключ и своя логика доступа. Ключ выдаётся производственной площадке и жёстко привязан к одному бренду — подставить другой нельзя ни заголовком, ни параметром.

GET/production-api/me

Проверить ключ

Возвращает площадку, которой принадлежит ключ. Первый запрос при настройке.

Доступ:Ключ площадки

Признак «основная площадка» важен: основная дополнительно получает товары, не закреплённые ни за одной площадкой.

ответ
{
  "facility": { "id": 3, "name": "Основной цех", "is_default": true }
}

Ошибки

КодОтвет сервераКогда возникаетЧто делать
401{"error":"Missing Authorization: Bearer <apiKey>"}Заголовка нет или он не в том виде.Добавьте заголовок с ключом площадки.
401{"error":"Invalid or inactive API key"}Ключ неизвестен или площадка выключена.После выключения площадки старый ключ может отвечать ещё до 30 секунд.
GET/production-api/queue

Очередь на изготовление

Что и в каком количестве нужно произвести прямо сейчас.

Доступ:Ключ площадки

Очередь нигде не хранится — она считается на лету из текущих остатков, порога и размера партии. Поэтому она всегда актуальна, но и меняется от запроса к запросу: продали вещь — позиция появилась в очереди.

curl -s https://api.amarix.ru/production-api/queue \
  -H "Authorization: Bearer $КЛЮЧ_ПЛОЩАДКИ"

Поля ответа

ПолеТипОписание
quantity_to_producenumberСколько штук изготовить.
stocknumberОстаток за вычетом резервов. Отрицательное значение означает нехватку под уже принятые заказы.
thresholdnumberПорог, ниже которого позиция попадает в очередь.
batch_sizenumberРазмер партии.
on_demandbooleanПозиция шьётся под заказ, а не на склад.
chestny_znakstring | nullКод маркировки размера.
ответ
{
  "facility": { "id": 3, "name": "Основной цех", "is_default": true },
  "count": 2,
  "items": [
    {
      "product_id": 341,
      "product_name": "ДЖЕРСИ «LIGHT CLASSIC» BLACK",
      "product_slug": "dzhersi-light-classic-black",
      "brand_code": "casher",
      "chestny_znak": "04600000000017",
      "size": "M",
      "quantity_to_produce": 5,
      "batch_size": 5,
      "stock": 1,
      "threshold": 2,
      "on_demand": false,
      "link_only": false
    }
  ]
}

Ошибки

КодОтвет сервераКогда возникаетЧто делать
401{"error":"Invalid or inactive API key"}Ключ неизвестен или площадка выключена.
GET/production-api/products

Каталог бренда

Справочник товаров с размерами, остатками и настройками производства.

Доступ:Ключ площадки

В отличие от очереди отдаёт все товары, а не только те, что надо шить. Нужен для поиска, карточки товара и сопоставления позиций в вашем приложении.

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

ПараметрТипОбязателенОписание
all1 | true | yesнетВсе товары бренда, а не только закреплённые за вашей площадкой.

Поля ответа

ПолеТипОписание
pricenumberЦена товара.в копейках
sizes[].stocknumberФизический остаток на складе.
sizes[].stock_availablenumberОстаток за вычетом резервов.
sizes[].reservednumberЗакреплено за заказами.
sizes[].size_idnumberИдентификатор размера. Он же приходит в очереди — по нему и сопоставляйте.

Ошибки

КодОтвет сервераКогда возникаетЧто делать
401{"error":"Invalid or inactive API key"}Ключ неизвестен.
GET/production-api/products/{id}

Один товар

Тот же объект, что в каталоге, но без обёртки.

Доступ:Ключ площадки

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

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

Ошибки

КодОтвет сервераКогда возникаетЧто делать
400{"error":"Некорректный идентификатор товара"}В пути не число.
404{"error":"Товар не найден"}Товара нет либо он принадлежит другому бренду.Чужой товар неотличим от несуществующего — так и задумано.
POST/production-api/receive

Приёмка готовой продукции

Сообщает, что произведено столько-то штук. Остаток на складе увеличивается.

Доступ:Ключ площадки

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

Тело запроса

ПараметрТипОбязателенОписание
product_idnumberдаТовар. Для пачки указывается внутри строк.
sizestringдаРазмер, как он называется в каталоге.
quantitynumberдаСколько штук произведено. Больше нуля.
linesarrayнетПачка строк вместо одной позиции.
warehouse_slugstringнетКуда приходовать. По умолчанию — онлайн-склад бренда товара.
curl -s -X POST https://api.amarix.ru/production-api/receive \
  -H "Authorization: Bearer $КЛЮЧ_ПЛОЩАДКИ" \
  -H "Content-Type: application/json" \
  -d '{"product_id": 341, "size": "M", "quantity": 5}'

Ошибки

КодОтвет сервераКогда возникаетЧто делать
400{"error":"product_id обязателен"}Не указан товар.
400{"error":"Онлайн-склад бренда не настроен"}Некуда приходовать: у бренда не назначен склад.
403{"error":"Позиция не принадлежит этой производственной площадке"}Товар относится к другому бренду или закреплён за другой площадкой.
404{"error":"Товар не найден"}Товара или размера нет.
500{"error":"Internal error"}Сбой на стороне платформы.Прежде чем повторять, проверьте остаток: возможно, приход уже применился.