Склады
Склад хранит остаток товара. Валюта склада — валюта, в которой этот остаток учитывается. Остаток одного склада у варианта — в товарах.
Склады
GET /admin/warehouses.json отдаёт склады. У исходного склада магазина array_index равен 0, status равен ready. Число N в поле остатка quantity_at_warehouseN — это array_index. Один склад и совпадение quantity с quantity_at_warehouse0 разобраны в остатке варианта.
POST /admin/warehouses.json отвечает 200 и объектом склада. status сразу после создания — creating, array_index назначается следующим свободным. В запросе принимаются title и position. Пока статус creating, в JSON варианта нет поля quantity_at_warehouseN этого склада.
Когда статус становится ready, поле появляется. quantity варианта при нескольких готовых складах — сумма остатков. Остаток каждого склада в ответе — строка.
| Параметр | Описание |
|---|---|
warehouse[title] обязательныйстрока |
Название склада. |
warehouse[position] необязательныйчисло |
Позиция в списке. |
POST /admin/warehouses.json
Authorization: Basic API_KEY:API_PASSWORD
Accept: application/json
Content-Type: application/json
{
"warehouse": {
"title": "docs-api Склад",
"position": 2
}
}
Ответ · 200
{
"id": 4,
"title": "docs-api Склад",
"position": 2,
"array_index": 1,
"created_at": "2026-10-21T22:14:43.104+03:00",
"updated_at": "2026-10-21T22:14:43.104+03:00",
"status": "creating"
}
После status: "ready" остатки пишутся в вариант.
| Параметр | Описание |
|---|---|
product_id обязательныйчисло |
id товара. |
id обязательныйчисло |
id варианта. |
variant[quantity_at_warehouse0] необязательныйчисло |
Остаток склада с array_index 0. |
variant[quantity_at_warehouse1] необязательныйчисло |
Остаток склада с array_index 1. |
PUT /admin/products/673/variants/2176487181.json
Authorization: Basic API_KEY:API_PASSWORD
Accept: application/json
Content-Type: application/json
{
"variant": {
"quantity_at_warehouse0": 4,
"quantity_at_warehouse1": 9
}
}
Ответ · 200
{
"id": 2176487181,
"quantity": 13,
"quantity_at_warehouse0": "4.0",
"quantity_at_warehouse1": "9.0"
}
PUT /admin/warehouses/:id.json меняет title и position и отвечает объектом склада. DELETE /admin/warehouses/:id.json отвечает 202 с пустым телом. Следующий GET показывает status равным deleting.
Валюты склада
Валюты склада можно читать и менять, если у приложения есть право на настройки магазина.
GET /admin/stock_currencies.json — массив валют склада. GET /admin/stock_currency.json — валюта по умолчанию, в ней дополнительно есть rate (курс валюты к базе курсов). У рубля по умолчанию rate и exchange_rate равны 1.0.
Страна продажи и валюта склада между собой не связаны. GET /admin/account_countries.json отдаёт страны магазина, например {"id":1,"code":"RU","title":"Россия"}. В валюте склада нет поля страны: соответствие задаётся у себя.
Валюта создаётся по code из справочника валют платформы: USD, EUR, RUR и другие. Неизвестный код — 422, тело {"currency_code":["имеет неверное значение"],"currency":["Не заполнены обязательные поля"]}. Повтор кода — 422, тело {"currency_id":["уже существует"]}.
exchange_rate_use_cb: false требует exchange_rate_manual. Без него — 422, тело {"exchange_rate_manual":["Не заполнены обязательные поля"]}. Курс к валюте сайта равен ручному курсу, умноженному на 1 + exchange_rate_percent / 100. Ручной курс 90.5 и процент 2 дают exchange_rate "92.31". cb_rate при этом остаётся курсом ЦБ этой валюты и в расчёт магазина не входит. exchange_rate_round в ответе есть и остаётся true, если передать false.
is_default: true делает валюту валютой склада по умолчанию и снимает признак с прежней. Снять признак с текущей валюты по умолчанию, не назначив другую, отвечает 422, тело {"is_default":["Установите другую валюту по умолчанию"]}. DELETE /admin/stock_currencies/:id.json отвечает 404 и HTML-страницей: удаления валюты склада в API нет.
| Параметр | Описание |
|---|---|
stock_currency[code] обязательныйстрока |
Код валюты платформы, например USD. |
stock_currency[exchange_rate_use_cb] необязательныйлогический |
Брать курс ЦБ. false требует ручной курс. |
stock_currency[exchange_rate_manual] необязательныйчисло |
Ручной курс к валюте сайта. От 0.0001. |
stock_currency[exchange_rate_percent] необязательныйчисло |
Наценка к курсу, в процентах. Больше -100 и меньше 1000. |
stock_currency[is_default] необязательныйлогический |
Сделать валютой склада по умолчанию. |
POST /admin/stock_currencies.json
Authorization: Basic API_KEY:API_PASSWORD
Accept: application/json
Content-Type: application/json
{
"stock_currency": {
"code": "USD",
"exchange_rate_use_cb": false,
"exchange_rate_manual": "90.5",
"exchange_rate_percent": "2.0"
}
}
Ответ · 201
{
"id": 42461,
"is_default": false,
"code": "USD",
"title": "Доллар США",
"unit": "$",
"exchange_rate_use_cb": false,
"exchange_rate_manual": "90.5",
"exchange_rate_percent": "2.0",
"exchange_rate_round": true,
"cb_rate": "75.3448",
"exchange_rate": "92.31"
}
PUT /admin/stock_currencies/42461.json меняет те же поля и возвращает объект. После is_default: true одиночный GET /admin/stock_currency.json отдаёт уже эту валюту, вместе с полем rate.