Номенклатура
API номенклатуры — список товаров с фильтрами, создание и изменение, удаление, загрузка и удаление изображений.
Ключ, формат запросов и ответов — в статье Общие правила API.
Список номенклатуры
GET /api/products
| Параметр | Значение |
|---|---|
page | Номер страницы, по 60 товаров |
id | ИД товара |
category_id | ИД категории; add_subcat=1 — включая подкатегории |
brand_id[] | ИД брендов (массив) |
unit_id | ИД единицы измерения |
ppr | Признак предмета расчёта |
code_like | Артикул содержит строку |
title | Название; relevant_false=1 — искать точное совпадение |
barcode | Штрихкод |
supplier_id[] | ИД поставщиков (массив) |
store_id | ИД склада: в ответ добавляются цена, остаток и закупочная цена на этом складе |
value, value_type | Отбор по остатку на складе: value_type 1 — не меньше value, -1 — не больше, 0 — любой |
other | Прочие отборы: img-0 / img-1 — без фото / с фото; online-1 / online-0 — показывать / не показывать в интернет-магазине; yamarket-1 / yamarket-0 — выгружать / не выгружать в Яндекс.Маркет; buy-1 / buy-0 — можно / нельзя заказать при отсутствии; fast-1 — в быстрых товарах на кассе; print_group-kitchen, print_group-bar, print_group-not — группа печати; tech_card-y / tech_card-n — есть / нет техкарты |
order | Сортировка: id (по умолчанию), title, category_id, brand_id, country_title, price, unit_title, code, cat_title, brand_title, date_update; stock и buy_price — только вместе с store_id. Обратный порядок — с DESC |
Пример: GET /api/products?category_id=7&add_subcat=1&store_id=1&value_type=1&value=1&order=title&page=1
Ответ: data — массив товаров, products_all — сколько товаров подходит под фильтр (на всех страницах), total_sum и total_buy_sum — их стоимость по цене продажи и по закупочной цене.
Поля товара
| Поле | Значение |
|---|---|
id | ИД товара в Агорте |
out_id | ИД товара во внешней системе |
title, short_title | Название и название для чека |
unit_id, unit_title, okei | Единица измерения: ИД, обозначение, код ОКЕИ |
quantity | Стандартное количество для продажи; multiple_sale — 1, если продаётся только кратно ему |
code | Артикул |
price, product_price | Цена продажи без НДС |
vat_type, vat, vat_price | Тип НДС, ставка, сумма НДС |
max_discount | Максимальная скидка, % |
category_id, cat_title, cat_color | Категория |
brand_id, brand_title | Бренд |
country_id, country_title, country_code | Страна происхождения |
gtd | Номер ГТД |
ppr | Признак предмета расчёта |
sno | Система налогообложения товара |
marking | 1 — маркированный товар |
chz_group, chz_code | Товарная группа Честного знака: номер и код (lp, shoes, tobacco, milk, beer, draftbeer …) |
marking_group | Устаревшая группа маркировки (используйте chz_code) |
egais, alcocode | Учёт в ЕГАИС и алкокод |
parent_id, characteristic, main, parent | Модификации: ИД родительского товара, характеристики, признак главного товара, данные родителя |
img | Изображения: JSON со списком имён файлов |
description | Описание |
online, yamarket, buy | Интернет-магазин, Яндекс.Маркет, заказ при отсутствии (1 — да) |
label_new, label_hit, label_discount | Метки «Новинка», «Хит», «Распродажа» в интернет-магазине |
video, videos | Ссылки на видео |
fast | 1 — в быстрых товарах на кассе |
print_group, print_group_id | Группа печати на кассе: kitchen или bar и номер группы |
compound, kkal, proteins, fats, carbohydrates | Состав и пищевая ценность |
massa, width, length, height | Масса (г) и габариты (см) |
add_bonus | Начисляет ли товар баллы покупателю |
combo_data | Состав комбинации (для ppr = 9) |
ttk | Техкарта |
partner_id | ИД комитента (для комиссионного товара) |
kassa_no_show, kassa_no_show_stores | Склады, на кассах которых товар скрыт |
ozon_product_id, ozon_price, ozoncategory_id, ozontype_id, ozonattributes | Данные для OZON |
store_price, stock, buy_price | Цена, остаток и закупочная цена на складе (при фильтре store_id) |
date_update, date_delete | Время изменения и признак удаления |
Создание и изменение товара
POST /api/products — создать, POST /api/products/<ИД> — изменить. Тело — JSON.
Поля со звёздочкой заполняйте при создании: без них товар сохранится, но не будет нормально работать на кассе. Сервер требует только title — и при создании, и при изменении. При изменении достаточно передать title и поля, которые меняются; остальные остаются прежними.
| Поле | Значение |
|---|---|
title* | Название |
short_title* | Название для чека |
ppr* | Признак предмета расчёта |
category_id* | ИД категории |
brand_id* | ИД бренда |
unit_id* | ИД единицы измерения |
quantity* | Стандартное количество для продажи; multiple_sale — 1, если продавать только кратно ему |
price* | Цена продажи без НДС |
vat_type*, vat* | Тип и ставка НДС |
sno* | Система налогообложения (0 — как у организации) |
parent_id | ИД родительского товара — чтобы создать модификацию |
code | Артикул |
barcode | Массив штрихкодов |
stores, store_price | Особые цены на складах: массив ИД складов и массив цен в том же порядке. Если stores не передан, особые цены не меняются; пустой массив stores удаляет все особые цены |
kassa_no_show | Массив ИД складов, на кассах которых товар скрыт |
max_discount | Максимальная скидка, % |
add_bonus | Начислять баллы покупателю при продаже |
chz_code | Товарная группа Честного знака (lp, shoes, tobacco, milk, beer, draftbeer …). Устаревшее поле marking_group учитывается, только если chz_code не передан |
egais, alccode | Учёт в ЕГАИС и массив алкокодов |
compound, kkal, proteins, fats, carbohydrates | Состав и пищевая ценность |
fast, print_group, print_group_id | Быстрые товары и группа печати на кассе |
partner_id | ИД комитента |
description, video | Описание и массив ссылок на видео |
online, yamarket, buy, label_new, label_hit, label_discount | Интернет-магазин и Яндекс.Маркет |
massa, width, length, height | Масса (г) и габариты (см) |
country_id, gtd | Страна происхождения и номер ГТД |
Ответ: id — ИД товара. Если не заполнено обязательное поле, придёт success: false и его имя в key.
{
"title": "Сок яблочный 1 л",
"short_title": "Сок яблочный 1 л",
"ppr": "1",
"category_id": "1",
"brand_id": "1",
"unit_id": "2",
"quantity": "1",
"price": "150.00",
"vat_type": "0",
"vat": "0",
"sno": "0",
"code": "A-100",
"barcode": ["4600000000001"],
"stores": ["1", "2"],
"store_price": ["145.00", "155.00"],
"online": "1"
}
Удаление товара
DELETE /api/products/<ИД> — товар помечается удалённым (как кнопка Удалить в карточке).
Изображения товара
Загрузка: POST /api/products/imgs, форма multipart/form-data: id — ИД товара, img[] — один или несколько файлов.
Удаление: DELETE /api/products/imgs, тело JSON: {"id": 1, "img": "<имя файла>"}. Имя файла берётся из поля img в списке товаров.