Перейти к содержанию

Склады

В этой статье описаны склады магазина, остатки по складам и валюты складского учёта. Остаток хранится у варианта товара: работа с ним описана в разделе «Остаток».

Склады

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 содержит сумму остатков. Остаток каждого склада возвращается строкой.

POST/admin/warehouses.json
Параметр Описание
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", прежде чем записывать остатки нового склада в вариант.

PUT/admin/products/673/variants/2176487181.json
Параметр Описание
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-страницей.

POST/admin/stock_currencies.json
Параметр Описание
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 меняет те же поля и возвращает объект.