Залишки
Залишки однією сумою або по кожному складу, склади вітрини або склади ключа, товари без обліку залишку та під замовлення.
На цій сторінці
Залишки показують, скільки товару можна продати просто зараз. Їх можна отримати двома способами:
- блоком
stockу кожного артикула в/products,/products/{id}і/skus, якщо ключ має правоinventory:read; - окремим списком
/inventory. Йому потрібне лише правоinventory:read, право на каталог не потрібне.
Що налаштовує власник
У формі ключа є блок «Залишки». Він з’являється, коли позначено право «Бачити залишки». Як видати ключ, описано на сторінці «Ключі доступу та права».
«Як віддавати залишки».
- «Однією сумою» (типово). Ви отримуєте лише загальне число за всіма складами
ключа, поля
warehousesу відповіді немає. - «По кожному складу». У відповіді є ще масив
warehouses. У блоціstockу кожного складу вказано, скільки можна продати, а в/inventoryще й скільки лежить і скільки відкладено під замовлення.
«З яких складів».
- Порожньо (типово). Залишки рахуються за складами, з яких продає вітрина відповіді. Це ввімкнені справжні склади, у налаштуваннях яких не вибрано жодної вітрини або вибрано цю. У розбивці за складами приходять лише ті склади, де артикул лежить.
- Вибрано склади. Залишки рахуються лише за ними, навіть якщо вітрина з них не продає. Так дропшиперу показують окремий склад, який завели для нього. У розбивці завжди приходять усі вибрані склади в порядку пріоритету, навіть якщо артикула на складі немає. У такого складу приходить нуль.
Якщо власник вимкне вибраний склад, цей склад залишається у відповіді, але з нулем, бо продати з нього не можна. Залишки інших складів вітрини магазин замість нього не підставляє.
Якщо вибраний склад видалять або зроблять об’єднаним, він зникне з розбивки й
нічого не додасть до available. У налаштуваннях ключа такий склад
залишається, доки власник не прибере його сам, і на склади вітрини ключ не
перемикається. Якщо так зникли всі вибрані склади, available приходить
"0.000", а розбивка порожня.
Якщо власник перейменує, переставить, увімкне, вимкне чи видалить вибраний
склад або зробить його об’єднаним, зміненими вважаються всі артикули
магазину, і ви дізнаєтеся про це через updated_since.
Зміна налаштувань «Як віддавати залишки» і «З яких складів» артикули
зміненими не робить, навіть якщо власник прибрав склад із налаштувань ключа.
Про таку зміну ви дізнаєтеся з поля settings_changed_at у відповіді
GET /api/v1/me. Якщо цей час
став пізнішим за вашу минулу звірку, заберіть залишки повністю.
Правила підрахунку
- На складі доступне те, що лежить, мінус відкладене під замовлення. Якщо замовлень набрали більше, ніж лежить, склад дає нуль, а не мінус.
- Підсумок
available— сума доступного за складами. Перепроданий склад не зменшує залишок інших складів. - Залишок не ведеться. Якщо в артикула не задано залишок, товар продається
без обмеження. Тоді
availableдорівнюєnull, аin_stockдорівнюєtrue, якщо артикул продається. - Залишок задано, але не розкладено за складами. Так буває, коли склади в магазині ще не завели. За складами вітрини тоді приходить залишок артикула як є (не менше за нуль), а розбивка порожня. У ключа з власними складами такого залишку немає на жодному з них, і приходять нулі.
- Знято з продажу. Якщо
is_availableв артикулаfalse, тоin_stockіpreorderдорівнюютьfalse, скільки б товару ні лежало. - Під замовлення.
preorderдорівнюєtrue, коли артикул продається, товару немає, але в налаштуваннях складів магазину ввімкнено «Дозволити замовлення, коли товару немає». - Кількості приходять рядком із трьома знаками після крапки:
"2.250". Товари бувають дробовими, їх продають метрами й кілограмами.
Блок stock в артикула
| Поле | Тип | Що означає |
|---|---|---|
available |
рядок або null |
скільки можна продати за складами ключа, три знаки після крапки. null — залишок не ведеться, товар продається без обмеження |
in_stock |
логічне | артикул можна купити просто зараз. Це означає, що він продається, а залишок більший за нуль або не ведеться |
preorder |
логічне | товару немає, але магазин приймає замовлення під поставку |
warehouses |
масив | лише за налаштування «По кожному складу». Порожній, якщо залишок не ведеться або не розкладений за складами |
warehouses[].id |
ціле | номер складу з /warehouses |
warehouses[].name |
рядок | назва складу |
warehouses[].available |
рядок | скільки можна продати з цього складу |
"stock": {
"available": "14.500",
"in_stock": true,
"preorder": false,
"warehouses": [
{ "id": 1, "name": "Основний", "available": "12.000" },
{ "id": 3, "name": "Склад у Львові", "available": "2.500" }
]
}
GET /api/v1/inventory
Залишки артикулів опублікованих товарів. Право: inventory:read. Порядок: за
номером артикула, за зростанням.
| Параметр | Тип | Типово | Що робить |
|---|---|---|---|
sku_ids |
номери через кому | немає | залишки лише цих артикулів, не більше 100 номерів: sku_ids=2108,2109,2110. Сюди зручно передавати номери з повідомлення inventory.changed |
sku |
рядок | немає | артикул із таким кодом, точний збіг |
barcode |
рядок | немає | артикул із таким штрихкодом, точний збіг |
product_id |
ціле | немає | артикули одного товару |
updated_since |
дата й час ISO 8601 | немає | лише артикули, змінені починаючи з цього моменту. Зміною вважається рух залишку (надходження, продаж, резерв, переміщення), правка самого артикула, правка складу, на якому він лежить (назва, порядок, увімкнення, вітрини, видалення), правка складу, вибраного в будь-якого ключа (тоді приходять усі артикули), і перемикання налаштування «Дозволити замовлення, коли товару немає», від якого залежить preorder. Артикул із новою ціною теж потрапить сюди, хоча цін у цій відповіді немає. Правка товару без зміни артикулів, наприклад його характеристик чи фото, сюди не потрапляє |
limit |
ціле | 50, а з sku_ids — 100 |
записів на сторінці, від 1 до 200 |
offset |
ціле | 0 | скільки записів пропустити. Разом з after_id не передається |
after_id |
ціле | немає | артикули з номером, більшим за вказаний |
locale, storefront_id |
загальні параметри. Від вітрини залежать склади, якщо ключу не вибрано власних |
Помилки ті самі, що в /skus:
невідомий параметр, product_id не ціле додатне число, sku чи barcode
списком, неправильні updated_since, after_id, limit, offset чи
storefront_id. Для sku_ids помилки ті самі, що в
/prices: у списку є щось, крім
номерів, список порожній або в ньому понад 100 різних номерів.
Номери в sku_ids, яких немає або які належать неопублікованим товарам,
магазин мовчки пропускає, а повтори рахує один раз. Звіряйте відповідь за
полем sku_id.
curl "https://shop.example.ua/api/v1/inventory?product_id=1045" \
-H "Authorization: Bearer <ключ>"
Ключ у прикладі налаштовано «По кожному складу», склади не вибрано.
{
"data": [
{
"sku_id": 2108,
"product_id": 1045,
"sku": "730601",
"is_available": true,
"available": "14.500",
"in_stock": true,
"preorder": false,
"warehouses": [
{ "id": 1, "name": "Основний", "qty": "15.000", "reserved": "3.000", "available": "12.000" },
{ "id": 3, "name": "Склад у Львові", "qty": "2.500", "reserved": "0.000", "available": "2.500" }
]
},
{
"sku_id": 2109,
"product_id": 1045,
"sku": "730602",
"is_available": true,
"available": "0.000",
"in_stock": false,
"preorder": false,
"warehouses": [
{ "id": 1, "name": "Основний", "qty": "1.000", "reserved": "3.000", "available": "0.000" }
]
},
{
"sku_id": 2110,
"product_id": 1045,
"sku": "730603",
"is_available": true,
"available": null,
"in_stock": true,
"preorder": false,
"warehouses": []
}
],
"meta": { "total": 3, "limit": 50, "offset": 0 },
"links": { "next": null, "prev": null }
}
| Поле | Тип | Що означає |
|---|---|---|
sku_id |
ціле | номер артикула |
product_id |
ціле | номер товару |
sku |
рядок | код артикула |
is_available |
логічне | артикул продається. false — власник зняв його з продажу |
available |
рядок або null |
скільки можна продати за складами ключа. null — залишок не ведеться |
in_stock |
логічне | артикул можна купити просто зараз |
preorder |
логічне | товару немає, але магазин приймає замовлення під поставку |
warehouses |
масив | лише за налаштування «По кожному складу» |
warehouses[].id |
ціле | номер складу |
warehouses[].name |
рядок | назва складу |
warehouses[].qty |
рядок | скільки товару лежить на складі |
warehouses[].reserved |
рядок | скільки відкладено під замовлення покупців |
warehouses[].available |
рядок | скільки можна продати: qty мінус reserved, не менше за нуль. У вимкненого складу завжди "0.000" |
У другому артикулі прикладу під замовлення відкладено більше, ніж лежить, тому склад дає нуль. У третьому артикулі залишок не ведеться.
Щоб тримати наявність свіжою, раз на кілька хвилин запитуйте
/inventory?updated_since=…&after_id=0 із часом минулої звірки мінус
невеликий запас. Як обрати запас, описано в розділі
«Зміни: updated_since».
Якщо власник увімкнув вам повідомлення «Змінилися залишки», магазин сам
повідомить номери артикулів, у яких змінилися залишки на складах вашого
ключа. Ці номери передайте в sku_ids, а повну звірку можна робити рідше. Як
приймати таке повідомлення, описано на сторінці
«Повідомлення партнерові (вебхуки)».