Склады
В этой статье описаны склады магазина, остатки по складам и валюты складского учёта. Остаток хранится у варианта товара: работа с ним описана в разделе «Остаток».
Склады
GET /admin/warehouses.json возвращает склады магазина. У исходного склада array_index равен 0, а status — ready. Поле остатка quantity_at_warehouseN использует array_index в качестве N. Работа с одним складом и связь quantity с quantity_at_warehouse0 описаны в разделе «Остаток».
Чтобы создать склад, отправьте POST /admin/warehouses.json с title и position. API вернёт 200 и объект склада со статусом creating. Поле array_index получит следующий свободный индекс. Пока склад создаётся, в JSON варианта нет соответствующего поля quantity_at_warehouseN.
Когда status станет 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 с пустым телом. При следующем чтении склад имеет status: deleting.
Валюты склада
Валюты склада можно читать и менять, если у приложения есть право на настройки магазина.
GET /admin/stock_currencies.json возвращает массив валют склада. У рубля по умолчанию exchange_rate равен 1.0.
Валюта создаётся по code из справочника валют платформы: USD, EUR, RUR и другие. Неизвестный код — 422, тело {"currency_code":["имеет неверное значение"],"currency":["Не заполнены обязательные поля"]}. Повтор кода — 422, тело {"currency_id":["уже существует"]}.
Чтобы использовать ручной курс, передайте exchange_rate_use_cb: false и обязательное в этом режиме поле exchange_rate_manual. Без ручного курса API вернёт 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. У прежней валюты этот признак будет снят. Нельзя снять признак с текущей валюты по умолчанию, не назначив другую: API вернёт 422 и {"is_default":["Установите другую валюту по умолчанию"]}.
Удаление валюты склада через API не поддерживается. Запрос DELETE /admin/stock_currencies/:id.json возвращает 404 с HTML-страницей.
| Параметр | Описание |
|---|---|
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/:id.json меняет те же поля и возвращает объект.