Остатки и цены
Каталог меняется редко, остатки - постоянно. Поэтому это два разных метода: товар создаётся один раз, а остаток переписывается сколько угодно и стоит дёшево.
Что отправлять
Позиция опознаётся по вашему sku. Если позиции с таким кодом нет, она создаётся; если есть - обновляются только переданные поля. Чтобы снять товар с витрины, отправьте "active": false, а не нулевой остаток: нулевой остаток означает «закончилось и скоро будет», и витрина оставит карточку с кнопкой ожидания.
Пакетная загрузка
До 1000 позиций в одном запросе. Пакет применяется целиком: если хоть одна строка не прошла проверку, не применится ни одна, а в ответе придут номера строк с причинами.
POST /v1/stock/batch
{
"items": [
{ "sku": "TRM-1180", "stock": 14, "price": 129000 },
{ "sku": "TRM-1184", "stock": 0 },
{ "sku": "TRM-2050", "price": 219000, "active": false }
]
}{
"applied": 2,
"rejected": [
{ "line": 3, "sku": "TRM-2050", "code": "price_below_min", "message": "цена ниже минимальной для категории" }
]
}Формат CSV
Утилита cedar stock push принимает CSV с заголовком в первой строке. Разделитель - точка с запятой, кодировка UTF-8. Лишние колонки игнорируются, порядок колонок значения не имеет.
| Колонка | Тип | Что значит |
|---|---|---|
sku | строка | Ваш код позиции, обязателен |
stock | целое | Доступный остаток без учёта резервов |
price | целое | Цена в копейках |
old_price | целое | Цена до скидки, показывается зачёркнутой |
active | 0 или 1 | Показывать позицию на витрине |
Резервы и отрицательные остатки
Оплаченный, но не собранный заказ держит резерв. Присланный вами остаток - это то, что лежит на полке; доступное к заказу считаем мы: available = stock - reserved. Поэтому не вычитайте резервы у себя, иначе они вычтутся дважды и витрина покажет ноль там, где товар есть.
Отрицательный остаток отвергается с кодом stock_negative. Если у вас в учёте минус - это ваша сторона рассинхронилась, и заливать его на витрину нельзя.
Расписание
Разумный цикл - полная выгрузка раз в сутки ночью и частичная каждые 10-15 минут по изменившимся позициям. Чаще смысла нет: витрины кешируют карточку на несколько минут.