# Товары

# Комментарии по синхронизации товаров и остатков

<span style="font-family: Roboto, sans-serif;"><span style="font-size: small;">Для создания новых товаров и обновления существующих, следует использовать метод</span></span>

[POST /api/lite/products](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproducts "/api/lite/products")

<span style="font-family: Roboto, sans-serif;"><span style="font-size: small;">Каждый продукт обязательно должен содержать хотя бы один вариант. Поэтому, при создании нового продукта, автоматически создается к нему один вариант.</span></span>

<span style="font-family: Roboto, sans-serif;"><span style="font-size: small;">Варианты - это реальные SKU, у них есть вес, размеры, штрихкоды и т.д. Продукт же содержит только общие параметры.</span></span>

<span style="font-family: Roboto, sans-serif;"><span style="font-size: small;">Момент к обсуждению - при синхронизации товаров с Cactus, надо ли выгружать иерархию с вариантами, либо “развернуть” варианты в плоский список в Кактусе (один вариант = один продукт Кактус). </span></span>

<span style="font-family: Roboto, sans-serif;"><span style="font-size: small;">Вариантами можно управлять как из метода products, так и напрямую, методом products/variants.</span></span>

<span style="font-family: Roboto, sans-serif;"><span style="font-size: small;">Кактус имеет систему резервирования. При оформлении заказа, Кактус пытается взять резерв. Это необходимое условие для допуска заказа к отгрузке.</span></span>

# /api/lite/products

### Запрос списка продуктов (GET /api/lite/products)

/api/lite/products

Метод возвращает перечень всех продуктов / товарных предложений (активных и неактивных).

Продукт всегда содержит хотя бы один вариант.

Правильно рассматривать Продукт - как виртуальную сущность (группу), а вариант - как физический товар. В рамках одного Продукта может быть несколько Вариантов (например, различные цвета и размеры).

Каждый Вариант имеет набор Опций, характеризующих именно этот вариант (например Цвет=blue, Размер=XL). Не может существовать более одного Варианта с одинаковым набором Опций.

####  

#### **Фильтрация по полям товара**

Можно задавать фильтр параметром ?query=test - для фильтрации по полям article, humanId, shortName, fullName, description

Дополнительно можно фильтровать по конкректному продукту параметром ?id=1000

Имеется поддержка фильтрации и по другим полям:

- по Id варианта - ?variantId=1001
- по ШК (штрихкоду товара) - ?barcode=0000000000001

#### **Фильтрация по фильтрам, атрибутам, вариантам товара**

Фронтенд при выборе покупателем значений тех или иных фильтров должен составить поисковый GET запрос и передать его в метод:

/pub/products

в виде суммы параметров:

`?filters=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4 ` для всех фильтров в блоке OTHER

`?attributes=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке ATTRIBUTES

`?features=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке FEATURES

где field\_name - это значение поля filters.fields.name, field\_value - это значение поля filters.fields.stringValues для filters.fields.type: "string" или decimalValues для filters.fields.type: "decimal" или true/false для filters.fields.type: "boolean".

Для filters.fields.type: "decimal" также можно передавать диапазон, указывая начальное и конечное значение через дефис: `field_name2:field_value3-field_value4`

#### **Коллекции**

Можно задавать фильтр по коллекциям параметром ?collections=1007,1008 - для фильтрации по id коллекций (можно передавать списком)

#### **Архивные карточки**

Можно дополнительно выводить архивные карточки товаров параметром deleted=true

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - продуктов на странице, page - номер страницы.

Пример: `/api/lite/products?page=0&size=200`

Если параметры не переданы, то дефолтные значения page=0&amp;size=100

<p class="callout info">Максимальное количество продуктов - 100. Даже если указано значение более 100</p>

Также, для отображение пейджинации следует анализировать параметр recordsTotal, возвращающий общее количество записей (с учетом примененной фильтрации, если она есть).

#### **Сортировка**

Для сортировки задается параметр order, принимающий код поля для сортировки и направление сортировки (asc, desc), отделенное символом плюса.

Пример сортировки по имени (**возрастание**): `/api/lite/products?order=shortname+<strong>asc</strong>`

Пример сортировки по имени (**убывание**): `/api/lite/products?order=shortname+<strong>desc</strong>`

Доступные коды сортировки:

- shortname
- article
- price
- amount
- <div>stockUpdateFrom</div>

Пример вызова с одновременной фильтрацией, пейджинацией и сортировкой:

`/api/lite/products?query=Поло&order=shortname+asc&page=0&size=200`

<span style="color: #ffffff;">**Структура ответа:**</span>

<table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF" role="grid" style="width: 100%; height: 3061px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 29px;"><td style="height: 29px;">**Поле**</td><td style="height: 29px;">**Тип / формат**</td><td style="height: 29px;">**Описание**</td></tr><tr role="row" style="height: 61px;"><td class="confluenceTd" style="height: 61px;">recordsTotal</td><td class="confluenceTd" style="height: 61px;">num</td><td class="confluenceTd" style="height: 61px;">Общее количество записей в рамках заданной фильтрации. Используется для пейджинации.</td></tr><tr role="row" style="height: 35px;"><td class="confluenceTd" style="height: 35px;">products

</td><td class="confluenceTd" style="height: 35px;">array</td><td class="confluenceTd" style="height: 35px;">Перечень товарных предложений</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="height: 29px;">id</td><td class="confluenceTd" style="height: 29px;">string</td><td class="confluenceTd" style="height: 29px;">Идентификатор продукта</td></tr><tr role="row" style="height: 45px;"><td class="confluenceTd" style="height: 45px;">extId</td><td class="confluenceTd" style="height: 45px;">string</td><td class="confluenceTd" style="height: 45px;">Дополнительный идентификатор продукта</td></tr><tr style="height: 46px;"><td style="height: 46px;">extId2</td><td style="height: 46px;">string</td><td style="height: 46px;">Дополнительный идентификатор продукта</td></tr><tr style="height: 46px;"><td style="height: 46px;">extId3</td><td style="height: 46px;">string</td><td style="height: 46px;">Дополнительный идентификатор продукта</td></tr><tr style="height: 46px;"><td style="height: 46px;">extId4</td><td style="height: 46px;">string</td><td style="height: 46px;">Дополнительный идентификатор продукта</td></tr><tr style="height: 46px;"><td style="height: 46px;">extId5</td><td style="height: 46px;">string</td><td style="height: 46px;">Дополнительный идентификатор продукта</td></tr><tr role="row" style="height: 35px;"><td class="confluenceTd" style="height: 35px;">shortName

</td><td class="confluenceTd" style="height: 35px;">string</td><td class="confluenceTd" style="height: 35px;">Наименование продукта</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="height: 29px;">description</td><td class="confluenceTd" style="height: 29px;">string</td><td class="confluenceTd" style="height: 29px;">Описание (может содержать html)</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="height: 29px;">tnvedCode</td><td class="confluenceTd" style="height: 29px;">string</td><td class="confluenceTd" style="height: 29px;">Код ТНВЭД</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="height: 29px;">internationalDescription</td><td class="confluenceTd" style="height: 29px;">string</td><td class="confluenceTd" style="height: 29px;">Описание на анлийском</td></tr><tr style="height: 45px;"><td style="height: 45px;">additionalDescriptions</td><td style="height: 45px;">array</td><td style="height: 45px;">Блоки с дополнительным текстовым описанием</td></tr><tr role="row" style="height: 45px;"><td class="confluenceTd" style="height: 45px;">available</td><td class="confluenceTd" style="height: 45px;">boolean</td><td class="confluenceTd" style="height: 45px;">Отображение для продажи в онлайн-магазине</td></tr><tr style="height: 46px;"><td style="height: 46px;">boxNeeded</td><td style="height: 46px;">boolean</td><td style="height: 46px;">Требуется обрешётка (при отгрузке товара)</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="height: 29px;">deleted</td><td class="confluenceTd" style="height: 29px;">boolean</td><td class="confluenceTd" style="height: 29px;">Архивная карточка</td></tr><tr role="row" style="height: 45px;"><td class="confluenceTd" style="height: 45px;">type</td><td class="confluenceTd" style="height: 45px;">enum</td><td class="confluenceTd" style="height: 45px;">Тип продукта.   
SKU - Товар  
PHYSICAL\_SET - физический комплект  
SERVICE- услуга  
<div>BUNDLE - виртуальный набор  
<div>PACKING_MATERIAL_BOXES - упаковочные материалы клиента - короба  
<div>PACKING_MATERIAL_ATTACHMENT - упаковочные материалы клиента - вложения</div><div>PACKING_MATERIAL_OTHER - упаковочные материалы клиента - другие материалы</div><div>COMMON_PACKING_MATERIAL - упаковочные материалы фулфилмент</div></div></div></td></tr><tr role="row" style="height: 45px;"><td class="confluenceTd" style="height: 45px;">vat</td><td class="confluenceTd" style="height: 45px;">enum</td><td class="confluenceTd" style="height: 45px;">НДС товара. NO\_VAT/VAT\_0/VAT\_10/VAT\_20</td></tr><tr style="height: 29px;"><td style="height: 29px;">reviewScore</td><td style="height: 29px;">decimal</td><td style="height: 29px;">Оценка товара</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">variants</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">array</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">Массив вариантов</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">id</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">Уникальный идентификатор варианта.</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">article</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">Артикул (sku) товара</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">price</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">decimal</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">Цена продажи</td></tr><tr role="row" style="height: 45px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">oldPrice</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">decimal</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">"Старая" цена. Для визуализации скидки. </td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>isFfSynchronised</div></div></td><td style="height: 29px;">boolean</td><td style="height: 29px;">Статус выгрузки товара на ФФ</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>ffSyncError</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Ошибка выгрузки товара на ФФ</td></tr><tr style="height: 46px;"><td style="height: 46px;"><div><div>isPhysicalSet</div></div></td><td style="height: 46px;">boolean</td><td style="height: 46px;">Является ли товар физическим набором</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>isFfPhysicalSetSynchronized</div></div></td><td style="height: 29px;">boolean</td><td style="height: 29px;">Статус выгрузки набора на ФФ</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>ffPhysicalSetSyncError</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Ошибка выгрузки набора на ФФ</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div><div><div>discountPercent</div></div></div></div></td><td style="height: 29px;">decimal</td><td style="height: 29px;">Скидка, в процентах</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div><div><div>discountFix</div></div></div></div></td><td style="height: 29px;">decimal</td><td style="height: 29px;">Скидка, фикс</td></tr><tr style="height: 46px;"><td style="height: 46px;"><div><div><div><div>bundleOptionalCount</div></div></div></div></td><td style="height: 46px;">num</td><td style="height: 46px;">Размер опциональной части набора для выбора</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div><div><div><div><div>autoPriceCalculation</div></div></div></div></div></div></td><td style="height: 29px;">boolean</td><td style="height: 29px;">Авторасчет цены набора</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div><div><div><div><div>autoDimensionsCalculation</div></div></div></div></div></div></td><td style="height: 29px;">boolean</td><td style="height: 29px;">Авторасчет габаритов набора</td></tr><tr style="height: 29px;"><td style="height: 29px;">prices</td><td style="height: 29px;">object</td><td style="height: 29px;">Список всех присвоенных цен</td></tr><tr role="row" style="height: 45px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">stock</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">array</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">Массив данных об остатках (если остатки на складах имеются)</td></tr><tr style="height: 46px;"><td style="height: 46px;"><div><div>taggedProductsStock</div></div></td><td style="height: 46px;">array</td><td style="height: 46px;">Массив данных об остатках по тегам (если остатки на складах имеются)</td></tr><tr role="row" style="height: 29px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">warehouseCode</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">Код склада</td></tr><tr role="row" style="height: 45px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">stockTotal</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">decimal</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый"><span style="color: #333333;">Текущее количество на складе </span>*хранения*</td></tr><tr role="row" style="height: 61px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 61px;" title="Цвет фона: Зеленый">stockAvailable</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 61px;" title="Цвет фона: Зеленый">decimal</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 61px;" title="Цвет фона: Зеленый"><span style="color: #333333;">Количество товара, доступного к продаже (stockTotal за минусом резерва)</span></td></tr><tr role="row" style="height: 45px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">stockReserved</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">decimal</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">Количество товара, зарезервированного под заказы.</td></tr><tr role="row" style="height: 45px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">pos</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">num</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">Порядковый номер варианта, относительно </td></tr><tr role="row" style="height: 61px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 61px;" title="Цвет фона: Желтый">optionsUsed</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 61px;" title="Цвет фона: Желтый">array</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 61px;" title="Цвет фона: Желтый">Массив, указывающий соответствие опции и её значения для конкретного продукта. </td></tr><tr role="row" style="height: 61px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 61px;" title="Цвет фона: Желтый">defaultImage</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 61px;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 61px;" title="Цвет фона: Желтый">Ссылка на изображение из общего массива изображений. Может быть не задан.</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">weight</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">decimal</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">Вес товара</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">dimensions</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">object</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">Содержит информацию о размерах</td></tr><tr style="height: 29px;"><td style="height: 29px;">weightFact</td><td style="height: 29px;">decimal</td><td style="height: 29px;">Вес товара (по данным склада)</td></tr><tr style="height: 46px;"><td style="height: 46px;"><div><div>dimensionsFact</div></div></td><td style="height: 46px;">object</td><td style="height: 46px;">Содержит информацию о размерах (по данным склада)</td></tr><tr style="height: 46px;"><td style="height: 46px;"><div><div>canBeRotated</div></div></td><td style="height: 46px;">boolean</td><td style="height: 46px;">Определяет можно ли товар укладывать на бок при перевозке</td></tr><tr role="row" style="height: 29px;"><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">barcodes</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">object</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">Список штрихкодов товара</td></tr><tr role="row" style="height: 29px;"><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">isDefault</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">boolean</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">ШК является по умолчанию</td></tr><tr role="row" style="height: 29px;"><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">value</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">string</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="height: 29px;" title="Цвет фона: Красный">Значение ШК</td></tr><tr role="row" style="height: 61px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 61px;" title="Цвет фона: Зеленый">images</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 61px;" title="Цвет фона: Зеленый">array</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 61px;" title="Цвет фона: Зеленый">Массив изображений продукта. Первое изображение считается основным.</td></tr><tr role="row" style="height: 29px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">id</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">Идентификатор изображения</td></tr><tr role="row" style="height: 29px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">url</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 29px;" title="Цвет фона: Зеленый">URL изображения</td></tr><tr role="row" style="height: 45px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">pos</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">decimal</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 45px;" title="Цвет фона: Зеленый">Позиция изображения в рамках продукта</td></tr><tr role="row" style="height: 45px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">collections</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">array</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 45px;" title="Цвет фона: Желтый">Массив коллекций, в которые входит продукт</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">id</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px;" title="Цвет фона: Желтый">Идентификатор коллекции</td></tr><tr role="row" style="height: 29px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">attributes</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">array</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">Массив значений атрибутов продукта</td></tr><tr role="row" style="height: 29px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">code</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">Код атрибута</td></tr><tr role="row" style="height: 29px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">type</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">enum</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">Тип атрибута (см. описание атрибутов)</td></tr><tr role="row" style="height: 29px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">stringValue</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">Значение атрибута (строка)</td></tr><tr role="row" style="height: 29px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">decimalValue</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">decimal</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">Значение атрибута (число)</td></tr><tr role="row" style="height: 29px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">ordering</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">decimal</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="height: 29px;" title="Цвет фона: Синий">Cортировка</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>accountingAttributes</div></div></td><td style="height: 29px;">array</td><td style="height: 29px;">Массив значений атрибутов учета</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>code</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Код атрибута</td></tr><tr style="height: 29px;"><td style="height: 29px;">title</td><td style="height: 29px;">string</td><td style="height: 29px;">Название атрибута</td></tr><tr style="height: 29px;"><td style="height: 29px;">stringValue</td><td style="height: 29px;">string</td><td style="height: 29px;">Значение атрибута</td></tr><tr style="height: 45px;"><td style="height: 45px;">subscriptionInfo</td><td style="height: 45px;">object</td><td style="height: 45px;">Описание подписок (Не отображается, если пустой)</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>eshopSettings</div></div></td><td style="height: 29px;">array</td><td style="height: 29px;">Массив внешних кодов для интеграций</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>eshopId</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">ID интеграции</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>eshopType</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Тип интеграции</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>eshopName</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Название интеграции</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>enabled</div></div></td><td style="height: 29px;">boolean</td><td style="height: 29px;">Включает товар для интеграции</td></tr><tr style="height: 46px;"><td style="height: 46px;">zeroStock</td><td style="height: 46px;">boolean</td><td style="height: 46px;">Включает выгрузку нулевых остатков по товару</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>extId</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Внешний код товара для интеграции</td></tr><tr style="height: 29px;"><td style="height: 29px;">useBatchAccounting</td><td style="height: 29px;">boolean</td><td style="height: 29px;">Флаг использования партионного учета

<span style="color: #999999;">Для ведения учёта сроков годности в партиях необходимо также передать значение USE\_EXPIRATION в поле expirationMode и указать срок годности товара в поле expirationMonthsLimit</span>

</td></tr><tr style="height: 29px;"><td style="height: 29px;">expirationMode</td><td style="height: 29px;">enum</td><td style="height: 29px;">NO\_EXPIRATION, USE\_EXPIRATION - использование сроков годности в партиях</td></tr><tr style="height: 29px;"><td style="height: 29px;">expirationMonthsLimit</td><td style="height: 29px;">integer</td><td style="height: 29px;">Срок годности в мес</td></tr><tr style="height: 29px;"><td style="height: 29px;">manufacturedBy</td><td style="height: 29px;">string</td><td style="height: 29px;">Производитель</td></tr><tr style="height: 29px;"><td style="height: 29px;">composition</td><td style="height: 29px;">string</td><td style="height: 29px;">Состав продукта</td></tr><tr style="height: 29px;"><td style="height: 29px;">warranty</td><td style="height: 29px;">integer</td><td style="height: 29px;">Срок гарантии в мес</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>warehouseCategoryCode</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Код категории товара (из WMS)</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>warehouseCategoryTitle</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Наименование категории товара (из WMS)</td></tr><tr style="height: 29px;"><td style="height: 29px;"><div><div>tag</div></div></td><td style="height: 29px;">string</td><td style="height: 29px;">Тег, присвоенный товару</td></tr></tbody></table>

#### **Пример результата запроса**:

```JSON
{
    "success": true,
    "recordsTotal": 1,
    "products": [
        {
            "id": "1000",
            "extId": null,
          	"extId2": null,
            "extId3": null,
            "extId4": null,
            "extId5": null,
            "shortName": "Кактус Эуфобия Триангуларис",
            "description": "Кактус Эуфобия Триангуларис",
            "tnvedCode": "123",
            "internationalDescription": "abc",
            "additionalDescriptions":[{"title":"some title", "description":"some description"}],
            "available": true,
            "deleted": false,
            "brandName": null,
            "countryOfOrigin": null,
            "isBestseller": null,
            "isNovelty": null,
            "type": "SKU",
            "vat": "VAT_20",
            "reviewScore": 4.0,
            "options": null,
            "images": null,
          	"useBatchAccounting": true,
            "expirationMode": "USE_EXPIRATION",
            "expirationMonthsLimit": 6,
          	"warranty": 12,
            "warehouseCategoryCode": "000000001",
            "warehouseCategoryTitle": "Парфюмерия"
          	"manufacturedBy": "Название производителя",
            "composition": "Состав",            
            "variants": [
                {
                    "id": "1000",
                    "extId": null,
                  	"extId2": null,
                    "extId3": null,
                    "extId4": null,
                    "extId5": null,
                    "article": null,
                    "price": 2190,
                    "oldPrice": 1590,
                    "isFfSynchronised": true,
                    "ffSyncError": null,
                    "isPhysicalSet": false,
                    "isFfPhysicalSetSynchronized": false,
                    "ffPhysicalSetSyncError": null,
                  	"discountPercent": 0,
                    "discountFix": 0,
                    "bundleOptionalCount": 0,
                    "autoPriceCalculation": false,
                    "autoDimensionsCalculation": false,
                  	"prices":[
                        {
                           "priceCode":"Розничная цена",
                           "priceName":"Розничная цена",
                           "value":2190
                        },
                      	{
                           "priceCode":"Цена до скидки",
                           "priceName":"Цена до скидки",
                           "value":1590
                        }
                     ],
                    "stock": [
                        {
                            "warehouseCode": "9a84e96f-3e8c-8f74-3b7a-50a1d3c2a130",
                            "stockTotal": 111,
                            "stockAvailable": 111,
                            "stockReserved": 0
                        }
                    ],
                    "taggedProductsStock": [
                        {
                            "outOfStock": 0,
                            "stockAvailable": 10,
                            "stockDefective": 0,
                            "stockDefectiveReserved": 0,
                            "stockReserved": 0,
                            "stockTotal": 10,
                            "tag": "ROZNECHNIE_SETY",
                            "warehouseCode": "9a84e96f-3e8c-8f74-3b7a-50a1d3c2a130"
                        }
                     ],
                    "ordering": "123.000000000000000",
                    "defaultImage": null,
                    "weight": 500,
                    "dimensions": {
                        "height": 4,
                        "width": 20,
                        "depth": 4
                    },
                    "weightFact": 500,
                    "dimensionsFact": {
                        "height": 4,
                        "width": 20,
                        "depth": 4
                    },
                    "canBeRotated": true,
                    "barcodes": [
                        {
                            "value": "42353456345345",
                            "isDefault": true,
                            "type": "COMMON"
                        },
                        {
                            "value": "34234232343",
                            "isDefault": false,
                          	"type": "WILDBERRIES"
                        }
                    ],                 
                    "optionsUsed": null,
                  	"eshopSettings": [
                        {
                            "eshopId": "e4a1920d-f154-7284-bad4-a7b9546032fe",
                            "eshopType": "BERU",
                            "eshopName": "Магазин на Беру",
                            "enabled": true,
                          	"zeroStock": false,
                            "extId": "variant-ext-id-for-beru"
                        }
                    ]
                }
            ],
            "collections": [
                "1001"
            ],
            "attributes": null,
            "accountingAttributes": [
                {
                    "code": "chestnyznak",
                    "title": "Честный знак",
                    "stringValue": "11111"
                }
            ],
          	"eshopSettings": [
                {
                  "eshopId": "e4a1920d-f154-7284-bad4-a7b9546032fe",
                  "eshopType": "BERU",
                  "eshopName": "Магазин на Беру",
                  "enabled": true,
                  "extId": "product-ext-id-for-beru"
                }
            ]
          	"subscriptionInfo": {
              "productId": "1002",
              "variantId": "1002",
              "onlinePaymentType": "recurrent",
              "type": "SUBSCRIPTION",
              "useShipmentDelayInterval": true,
              "items": [
                  {
                      "productId": "1002",
                      "variantId": "1006",
                      "count": 1,
                      "subscriptionShipmentNum": 1,
                      "shipmentDelayIntervalDays": 30,
                      "subscriptionStartDate": "2020-09-10",
                      "itemPrice": 120.0
                  },
                  {
                      "productId": "1002",
                      "variantId": "1007",
                      "count": 1,
                      "subscriptionShipmentNum": 1,
                      "shipmentDelayIntervalDays": 30,
                      "subscriptionStartDate": "2020-09-10",
                      "itemPrice": 120.0
                  },
                  {
                      "productId": "1002",
                      "variantId": "1008",
                      "count": 1,
                      "subscriptionShipmentNum": 2,
                      "shipmentDelayIntervalDays": 20,
                      "subscriptionStartDate": "2020-09-30",
                      "itemPrice": 150.0
                  },
                  {
                      "productId": "1002",
                      "variantId": "1009",
                      "count": 1,
                      "subscriptionShipmentNum": 2,
                      "shipmentDelayIntervalDays": 20,
                      "subscriptionStartDate": "2020-09-30",
                      "itemPrice": 150.0
                  },
                  {
                      "productId": "1002",
                      "variantId": "1010",
                      "count": 1,
                      "subscriptionShipmentNum": 3,
                      "shipmentDelayIntervalDays": 20,
                      "subscriptionStartDate": "2020-10-20",
                      "itemPrice": 250.0
                    }
                   ]
                }
          }
        }
    ]
}
```

#### **Выгружать только остатки (специальный режим выгрузки)**

Дополнительно можно передать параметр ?only\_stock=true. Если он присутствует в запросе, то выгружается минимально необходимое кол-во полей.

Пример: `/api/lite/products?only_stock=true`

<p class="callout info">Максимальное количество продуктов в режиме остатков - 1000. Даже если указано значение более 1000</p>

#### **Пример результата запроса(режим остатков)**:

``

```JSON
{
    "success": true,
    "recordsTotal": 1322,
    "products": [
        {
            "id": "1000",
            "extId": null,
            "extId2": null,
            "extId3": null,
            "extId4": null,
            "extId5": null,
            "variants": [
                {
                    "id": "1000",
                    "extId": null,
                    "extId2": null,
                    "extId3": null,
                    "extId4": null,
                    "extId5": null,
                    "stock": [
                        {
                            "warehouseCode": "5a93f7e7-4785-0332-8324-bf3a03ee8211",
                            "stockTotal": 10,
                            "stockAvailable": 8,
                            "stockReserved": 2,
                            "stockDefective": 0,
                            "stockDefectiveReserved": 0
                        }
                    ],
                    "taggedProductsStock": [
                        {
                            "outOfStock": 0,
                            "stockAvailable": 10,
                            "stockDefective": 0,
                            "stockDefectiveReserved": 0,
                            "stockReserved": 0,
                            "stockTotal": 10,
                            "tag": "ROZNECHNIE_SETY",
                            "warehouseCode": "5a93f7e7-4785-0332-8324-bf3a03ee8211"
                        }
                     ]
                }
            ]
        }
    ]
}
```

####  

### Создание/обновление продукта (POST /api/lite/products)

/api/lite/products

Создает или обновляет продукт.

Если id указан - проводится обновление продукта с указанным id, если не указан - создается новый.

Если проводится обновление продукта (или варианта) - то обновляются все поля на те, что переданы. Если какие то поля в продукте были непустые, а в запросе они не переданы - то после обновления поля очищаются.

Опционально можно передавать список вариантов товара для обновления, в поле variantsToUpdate. Обновление продукта выполняется первым, если успешно - то начинается обновление вариантов.

Этот список не означает, что коллекция вариантов данного продукта будет приведена к виду в переданном списке вариантов. Будет выполнено только обновление указанных вариантов, безотносительно остальных вариантов их продукта.

Если передан список вариантов - то в ответе в поле variantsResult будет список результатов обновления по каждому варианту, для сопоставления на вызывающей стороне (по полям productId + variantId)

<table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF-0" role="grid" style="height: 834px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 35px;"><td style="width: 171.163px; height: 35px;">**Поле**</td><td style="width: 125px; height: 35px;">**Тип / формат**</td><td style="width: 511.997px; height: 35px;">**Описание**

</td></tr><tr role="row" style="height: 57px;"><td class="confluenceTd" style="width: 171.163px; height: 57px;">id</td><td class="confluenceTd" style="width: 125px; height: 57px;">string</td><td class="confluenceTd" style="width: 511.997px; height: 57px;">Идентификатор продукта. Если не указан, создается новый продукт. Если указан, обновляется продукт с данным id<span style="color: #999999;"> или создаётся новый продукт с пользовательским id.</span>

</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">extId</td><td class="confluenceTd" style="width: 125px; height: 29px;">string</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Дополнительный идентификатор продукта</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">shortName</td><td class="confluenceTd" style="width: 125px; height: 29px;">string</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Наименование продукта</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">description</td><td class="confluenceTd" style="width: 125px; height: 29px;">string</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Описание (может содержать html)</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">tnvedCode</td><td class="confluenceTd" style="width: 125px; height: 29px;">string</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Код ТНВЭД</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">internationalDescription</td><td class="confluenceTd" style="width: 125px; height: 29px;">string</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Описание на анлийском</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">available</td><td class="confluenceTd" style="width: 125px; height: 29px;">boolean</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Отображение для продажи в онлайн-магазине</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">deleted</td><td class="confluenceTd" style="width: 125px; height: 29px;">boolean</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Архивная карточка</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">type</td><td class="confluenceTd" style="width: 125px; height: 29px;">enum</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Тип продукта. SKU/PHYSICAL\_SET/SERVICE. Товар, набор товаров, услуга</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">vat</td><td class="confluenceTd" style="width: 125px; height: 29px;">enum</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">НДС товара. NO\_VAT/VAT\_0/VAT\_10/VAT\_20</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">collections</td><td class="confluenceTd" style="width: 125px; height: 29px;">array</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Массив идентификаторов коллекций, в который входит данный продукт</td></tr><tr role="row" style="height: 29px;"><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 171.163px; height: 29px;" title="Цвет фона: Красный">attributes</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 125px; height: 29px;" title="Цвет фона: Красный">array</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 511.997px; height: 29px;" title="Цвет фона: Красный">Массив значений атрибутов продукта</td></tr><tr role="row" style="height: 29px;"><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 171.163px; height: 29px;" title="Цвет фона: Красный">code</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 125px; height: 29px;" title="Цвет фона: Красный">string</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 511.997px; height: 29px;" title="Цвет фона: Красный">Код атрибута</td></tr><tr role="row" style="height: 29px;"><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 171.163px; height: 29px;" title="Цвет фона: Красный">stringValue</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 125px; height: 29px;" title="Цвет фона: Красный">string</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 511.997px; height: 29px;" title="Цвет фона: Красный">Значение атрибута (строка)</td></tr><tr role="row" style="height: 29px;"><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 171.163px; height: 29px;" title="Цвет фона: Красный">decimalValue</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 125px; height: 29px;" title="Цвет фона: Красный">decimal</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 511.997px; height: 29px;" title="Цвет фона: Красный">Значение атрибута (число)</td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;">accountingAttributes</td><td style="width: 125px; height: 29px;">array</td><td style="width: 511.997px; height: 29px;">Массив значений атрибутов учета</td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;">code</td><td style="width: 125px; height: 29px;">string</td><td style="width: 511.997px; height: 29px;">Код атрибута</td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;">stringValue</td><td style="width: 125px; height: 29px;">string</td><td style="width: 511.997px; height: 29px;">Значение атрибута</td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;"><div><div>eshopSettings</div></div></td><td style="width: 125px; height: 29px;">array</td><td style="width: 511.997px; height: 29px;">Массив внешних кодов для интеграций</td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;"><div><div>eshopId</div></div></td><td style="width: 125px; height: 29px;">string</td><td style="width: 511.997px; height: 29px;">ID интеграции</td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;">enabled</td><td style="width: 125px; height: 29px;">boolean</td><td style="width: 511.997px; height: 29px;">Включает товар для интеграции</td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;"><div><div>extId</div></div></td><td style="width: 125px; height: 29px;">string</td><td style="width: 511.997px; height: 29px;">Внешний код продукта для интеграции</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.163px; height: 29px;">variantsToUpdate</td><td class="confluenceTd" style="width: 125px; height: 29px;">объект</td><td class="confluenceTd" style="width: 511.997px; height: 29px;">Объект варианта товара (см. [POST /api/lite/products/variants](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproductsvariants))</td></tr><tr style="height: 46px;"><td style="width: 171.163px; height: 46px;">warehouseCategoryCode</td><td style="width: 125px; height: 46px;">string</td><td style="width: 511.997px; height: 46px;">Код категории товара (из WMS)</td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;"><span class="name" title="parentPackageId">parentPackageId</span></td><td style="width: 125px; height: 29px;">string</td><td style="width: 511.997px; height: 29px;">Родительский вариант для монокороба</td></tr><tr><td style="width: 171.163px;"><div><div>countryOfOrigin</div></div></td><td style="width: 125px;">string</td><td style="width: 511.997px;"><div><div>Страна изготовления, указывается код страны RU</div></div></td></tr><tr><td style="width: 171.163px;"><div><div>brandName</div></div></td><td style="width: 125px;">string</td><td style="width: 511.997px;"><div><div>Наименование бренда</div></div></td></tr><tr style="height: 29px;"><td style="width: 171.163px; height: 29px;"><span class="name" title="multiplicity">multiplicity</span></td><td style="width: 125px; height: 29px;">string</td><td style="width: 511.997px; height: 29px;">Кратность монокороба</td></tr></tbody></table>

####  

#### **Пример вызова:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0-%E2%84%961.">Пример запроса №1.</div>```JSON
{
      "id": "1015",
      "extId": "FAQ-D-000112",
      "extId2": null,
      "extId3": null,
      "extId4": null,
      "extId5": null,
      "shortName": "Limited Edition Паста (помада) для укладки волос Bro Cosmetics // средняя фиксация, матовый эффект",
      "description": "Limited Edition Паста (помада) для укладки волос Bro Cosmetics // средняя фиксация, матовый эффект",
  	  "additionalDescriptions":[{"title":"some title", "description":"some description"}],
      "available": true,
      "deleted": false,
      "brandName": null,
      "countryOfOrigin": null,
      "tnvedCode": "123",
      "internationalDescription": "abc",
      "isBestseller": null,
      "isNovelty": null,
      "type": "SKU",
      "vat": "NO_VAT",
      "warehouseCategoryCode": "000000001",
    "collections": [
        "1029",
        "1031"
    ], 
    "attributes": [
        {
            "code": "material",        
            "stringValue": "Хлопок 97%, эластан 3%"        
        }
    ],
    "accountingAttributes": [
        {
          "code": "chestnyznak",
          "stringValue": "11111"
        }
    ],
  	"eshopSettings": [
        {
          "eshopId": "e4a1920d-f154-7284-bad4-a7b9546032fe",
          "enabled": true,
          "extId": "product-ext-id-for-beru"
        }
    ],
    "variantsToUpdate": [
            {
                    "productId":"1002",
                    "variantId": "1007",
              		"extId": null,
                    "extId2": null,
                    "extId3": null,
                    "extId4": null,
                    "extId5": null,
                    "article": "well done",
                    "price": 6000, //deprecated
                    "oldPrice": 6500, //deprecated
              		"prices":[
                        {
                           "priceCode":"Розничная цена",
                           "value":6000
                        },
                      	{
                           "priceCode":"Цена до скидки",
                           "value":6500
                        }
                     ],
                    "stock": [
                        {
                           "warehouseCode": "9a84e96f-3e8c-8f74-3b7a-50a1d3c2a130",                         
                           "stockTotal": 111                          
                        }
                    ],
                    "updateStockTotal": true,                  
                    "ordering": "300.000000000000000",
                    "defaultImage": null,
                    "weight": 500,
                    "dimensions": {
                        "height": 30,
                        "width": 31,
                        "depth": 32
                    },
                    "canBeRotated": true,
                    "optionsUsed": [
                        {
                            "code": "color",
                            "stringValue": "синий",
                            "decimalValue": null,
                            "name": "Цвет"
                        }
                    ],
                    "eshopSettings": [
                        {
                          "eshopId": "e4a1920d-f154-7284-bad4-a7b9546032fe",
                          "enabled": true,
                          "extId": "variant-ext-id-for-beru"
                        }
                    ],
              		"discountType": "PERCENT", // FIX
              		"discountValue": 50
                }
        ]
}
```

Пример запроса №2. Минимальный набор данных для создания карточки товара.

```JSON
{
      "id": "1065", // id продукта      
      "shortName": "Limited Edition Паста (помада) для укладки волос Bro Cosmetics ", //Наименование продукта
      "description": "Limited Edition Паста (помада) для укладки волос Bro Cosmetics ",  //Описание (может содержать html)    
      "available": true, //Отображение для продажи в онлайн-магазине
      "deleted": false, //Архивная карточка
      "brandName": null,//Наименование бренда
      "countryOfOrigin": null, //Страна изготовления, указывается код страны RU
      "tnvedCode": "1234567890", //Код ТНВЭД
      "internationalDescription": "abc",    
      "type": "SKU", //Тип продукта. SKU/PHYSICAL_SET/SERVICE.    Товар, набор товаров, услуга
      "vat": "VAT_20", //НДС товара. NO_VAT/VAT_0/VAT_10/VAT_20 
        "variantsToUpdate": [
            {
                    "productId":"1065", // id продукта 
                    "variantId": "1066",  // id варианта              
                    "article": "well done", //Артикул (sku) товара
                    "price": 6000, //Цена продажи
                    "oldPrice": 6500,//"Старая" цена. Для визуализации скидки.         
                    "weight": 500, //Вес
                    "dimensions": {
                        "height": 30, //Высота
                        "width": 31, //Ширина
                        "depth": 32 //Глубина
                    }                  
                  
                }
        ]
}
```

####  **Пример положительного ответа:**

<div id="bkmrk-%D0%92-%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8-%D0%BE%D1%82-%D1%81%D0%BE%D1%81">В зависимости от состояния конфига needApiProductsReturnDetails в настройках аккаунта([http://app.kak2c.ru/#!settings/lite](http://app.kak2c.ru/#!settings/lite)) есть два варианта ответа: развернутый и сокращенный. Время выполнения сокращенного ответа значительно меньше, что позволяет загружать товары большими массивами. По умолчанию новые аккаунты создаются с сокращенным вариантом ответа.</div><div id="bkmrk--0"></div><div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%81%D0%BE%D0%BA%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-">Пример сокращенного ответа:</div>```JSON
{
    "success": true,
    "id": "1002"
}
```

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%80%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D0%BE%D0%B3%D0%BE-">Пример развернутого ответа:</div>```JSON
{
    "success": true,
    "id": "1002",
    "product": {
        "id": "1002",
        "extId": "FAQ-D-000112",
        "extId2": null,
        "extId3": null,
        "extId4": null,
        "extId5": null,
        "shortName": "Limited Edition Паста (помада) для укладки волос Bro Cosmetics // средняя фиксация, матовый эффект",
        "description": "Limited Edition Паста (помада) для укладки волос Bro Cosmetics // средняя фиксация, матовый эффект",
      	"additionalDescriptions":[{"title":"some title", "description":"some description"}],
        "available": true,
        "deleted": false,
        "brandName": null,
        "countryOfOrigin": null,
        "tnvedCode": "123",
        "internationalDescription": "abc",
        "isBestseller": null,
        "isNovelty": null,
        "type": "SKU",
        "vat": "NO_VAT",
        "reviewScore": null,
        "options": null,
        "images": null,
        "variants": [
            {
                "productId":"1002",
                "variantId": "1007",
              	"extId": null,
                "extId2": null,
                "extId3": null,
                "extId4": null,
                "extId5": null,
                "article": "well done",
                "price": 6000,
                "oldPrice": 6500,
              	"prices":[
                        {
                           "priceCode":"Розничная цена",
                           "priceName":"Розничная цена",
                           "value":6000
                        },
                      	{
                           "priceCode":"Цена до скидки",
                           "priceName":"Цена до скидки",
                           "value":6500
                        }
                     ],
                "stock": [
                        {
                            "warehouseCode": "9a84e96f-3e8c-8f74-3b7a-50a1d3c2a130",
                            "stockTotal": 111,
                            "stockAvailable": 111,
                            "stockReserved": 0
                        }
                    ],
                "ordering": "300.000000000000000",
                "defaultImage": null,
                "weight": 500,
                "dimensions": {
                    "height": 30,
                    "width": 31,
                    "depth": 32
                },
                "barcodes": null,
                "vat": "NO_VAT",
                "type": "SKU",
                "optionsUsed": [
                    {
                        "code": "color",
                        "stringValue": "синий",
                        "decimalValue": null,
                        "name": "Цвет"
                    }
                ]
            }
        ],
        "collections": [
            "1029",
            "1031"
        ], 
        "attributes": [
            {
                "code": "material",        
                "stringValue": "Хлопок 97%, эластан 3%"        
            }
        ],
        "accountingAttributes": [
            {
              "code": "chestnyznak",
              "title": "Честный знак",
              "stringValue": "11111"
            }
        ],
    },
    "variantsResult": [
        {
            "success": true,
            "productId": "1002",
            "variantId": "1003"
        }
    ]
}
```

####  

#### **Пример положительного ответа с ошибкой сохранения по указанному варианту:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0">Пример ответа</div>```JSON
{
    "success": true,
    "id": "1002",
    "variantsResult": [
        {
            "success": false,
            "errors": [
                {
                    "code": 0,
                    "message": "Вариант с указанным id не найден"
                }
            ],
            "productId": "1002",
            "variantId": "100343"
        }
    ],
    "product": {
        "id": "1002",
        "extId": "FAQ-D-000112",
      	"extId2": null,
        "extId3": null,
        "extId4": null,
        "extId5": null,
        "shortName": "Limited Edition Паста (помада) для укладки волос Bro Cosmetics // средняя фиксация, матовый эффект",
        "description": "Limited Edition Паста (помада) для укладки волос Bro Cosmetics // средняя фиксация, матовый эффект",
        "available": true,
        "deleted": false,
        "brandName": null,
        "countryOfOrigin": null,
        "tnvedCode": "123",
        "internationalDescription": "abc",
        "isBestseller": null,
        "isNovelty": null,
        "type": "SKU",
        "vat": "NO_VAT",
        "reviewScore": null,
        "options": null,
        "images": null,
        "variants": [
            {
                "productId":"1002",
                "variantId": "1007",
               	"extId": null,
                "extId2": null,
                "extId3": null,
                "extId4": null,
                "extId5": null,
                "article": "well done",
                "price": 6000,
                "oldPrice": 6500,
                "stock": [
                        {
                            "warehouseCode": "9a84e96f-3e8c-8f74-3b7a-50a1d3c2a130",
                            "stockTotal": 111,
                            "stockAvailable": 111,
                            "stockReserved": 0
                        }
                    ],
                "ordering": "300.000000000000000",
                "defaultImage": null,
                "weight": 500,
                "dimensions": {
                    "height": 30,
                    "width": 31,
                    "depth": 32
                },
                "barcodes": null,
                "vat": "NO_VAT",
                "type": "SKU",
                "optionsUsed": [
                    {
                        "code": "color",
                        "stringValue": "синий",
                        "decimalValue": null,
                        "name": "Цвет"
                    }
                ]
            }
        ],
        "collections": [
            "1029",
            "1031"
        ], 
        "attributes": [
            {
                "code": "material",        
                "stringValue": "Хлопок 97%, эластан 3%"        
            }
        ],
        "accountingAttributes": [
            {
              "code": "chestnyznak",
              "title": "Честный знак",
              "stringValue": "11111"
            }
        ],
    }
}
```

#### **Пример вызова c изменением карточки монокороба:**

**Пример запроса**

```
{
    "dimensions": {
        "width": "11",
        "height": "11",
        "depth": "5"
    },
    "id": "566335465",
    "isFfPhysicalSetSynchronized": false,
    "isFfSynchronised": true,
    "isPhysicalSet": false,
    "marginParams": {
        "marketplaceCosts": []
    },
    "multiplicity": 5,
    "parentPackageId": "566335464",
    "shortName": "test (Короб 5 шт, test monokorob)",
    "stock": [
        {
            "outOfStock": 0,
            "stockAvailable": 0,
            "stockDefective": 0,
            "stockDefectiveReserved": 0,
            "stockExpired": 0,
            "stockReserved": 0,
            "stockTotal": 0,
            "warehouseCode": "21ad85be-09a9-c4f8-72e1-4976f9d5bda6"
        },
        {
            "outOfStock": 0,
            "stockAvailable": 0,
            "stockDefective": 0,
            "stockDefectiveReserved": 0,
            "stockExpired": 0,
            "stockReserved": 0,
            "stockTotal": 0,
            "warehouseCode": "6a50a3fe-29b6-42d7-2be0-a19a01d1f288"
        },
        {
            "outOfStock": 0,
            "stockAvailable": 0,
            "stockDefective": 0,
            "stockDefectiveReserved": 0,
            "stockExpired": 0,
            "stockReserved": 0,
            "stockTotal": 0,
            "warehouseCode": "9c639eca-7c7d-9231-5c1c-fbc3a84ac7f9"
        },
        {
            "outOfStock": 0,
            "stockAvailable": 0,
            "stockDefective": 0,
            "stockDefectiveReserved": 0,
            "stockExpired": 0,
            "stockReserved": 0,
            "stockTotal": 0,
            "warehouseCode": "a25965c4-06bd-9691-d468-1221371f1e71"
        }
    ],
    "type": "SKU",
    "vat": "VAT_0",
    "prices": [
        {
            "priceCode": "Розничная цена",
            "priceName": "Розничная цена",
            "value": 0
        },
        {
            "priceCode": "Цена до скидки",
            "priceName": "Цена до скидки",
            "value": 0
        }
    ],
    "weight": 1000,
    "weightType": "kg",
    "barcodes": [],
    "updateStockTotal": false,
    "eshopSettings": [],
    "productId": "1256635834",
    "isArchived": false,
    "variantId": "566335465"
}
```

### Обновление отдельных полей продукта (PATCH /api/lite/products)

/api/lite/products

Обновляет одно или несколько полей продукта, значения отсутствующих в запросе полей при этом не изменяются.

Тело запроса аналогично [POST /api/lite/products](http://wiki.kak2c.ru/link/62#bkmrk-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%2F%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-)

id - необходимо указывать обязательно

#### **Пример вызова:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0">Пример запроса</div>```JSON
{
      "id": "1015",
      "shortName": "Limited Edition Паста (помада) для укладки волос",
  	  "internationalDescription": "abc"
}
```

ответ аналогичен [POST /api/lite/products](http://wiki.kak2c.ru/link/62#bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE%D0%BB%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3)

### Копирование продукта

/api/lite/products/copy

id - код существующего продукта для копирования

#### **Запрос**

```JSON
{
     "id": "1234"            
}
```

####  

#### **Пример успешного ответа**

```JSON
{
    "success": true,
    "id": "1234-copy"
}
```

<div id="bkmrk--1"></div>#### **В случае ошибки:**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]  
}
```

# /api/lite/products/attributes

Атрибуты – дополнительные характеристики для описания номенклатуры. Используются для более полного отображения информации и продукте - в карточке продукта, а также для возможности фильтрации в каталоге товаров. Не являются обязательными к заполнению.

Справочник атрибутов является общим для аккаунта.

Атрибуты бывают строковыми и числовыми (в том числе могут быть дробными).

Значения атрибутов задаются в информации о продуктах.

### Запрос справочника атрибутов

/api/lite/products/attributes

Метод возвращает список всех доступных атрибутов.

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 85.5341%;"><colgroup><col style="width: 17.7165%;"></col><col style="width: 15.9449%;"></col><col style="width: 66.273%;"></col></colgroup><thead></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 91.4581%;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 33.3333%;">**Поле**</td><td style="width: 33.3333%;">**Тип / формат**</td><td style="width: 40.2597%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">id</td><td class="confluenceTd" style="width: 33.3333%;">string</td><td class="confluenceTd" style="width: 40.2597%;">Идентификатор атрибута. </td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">code</td><td class="confluenceTd" style="width: 33.3333%;">string</td><td class="confluenceTd" style="width: 40.2597%;">Код атрибута - латиницей</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">title</td><td class="confluenceTd" style="width: 33.3333%;">string</td><td class="confluenceTd" style="width: 40.2597%;">Наименование атрибута</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">type</td><td class="confluenceTd" style="width: 33.3333%;">enum</td><td class="confluenceTd" style="width: 40.2597%;">Тип **значения** атрибута:

- string
- decimal

</td></tr></tbody></table>

</div>####  

#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "attributes": [
        {
            "id": "12345679",
            "code": "roasting",
            "title": "Степень обжарки",
            "type": "string",
            "ordering": 12,
             "values": [
                        {
                            "stringValue": "XXL",
                            "ordering": 4
                        },
                        {
                            "stringValue": "XL",
                            "ordering": 3
                        }                      
                    ]
        },
        {
            "id": "12345",
            "code": "coffee_strength",
            "title": "Крепость кофе",
            "type": "decimal",
            "ordering": 1211,
            "values": [
                        {
                            "decimalValue": 1.3,
                            "ordering": 100
                        },
                        {
                            "decimalValue": 2.5,
                            "ordering": 200
                        }                      
                    ]
        }
    ]
}
```

###  

### Создание/обновление атрибута

/api/lite/products/attributes

Создает или обновляет атрибут.

ID атрибута при создании/обновлении - обязательное поле, он задается **явно для каждого** атрибута.

####  

#### **Пример создания/обновления атрибута:**

```JSON
{
    "code": "roasting",
    "title": "Степень обжарки",
    "type": "string",
    "ordering": 1211,
    "values": [
                        {
                            "stringValue": "XXL",
                            "ordering": 4
                        },
                        {
                            "stringValue": "XL",
                            "ordering": 3
                        }                     
                    ]
}
```

<div id="bkmrk--0"></div>

# /api/lite/products/features

По продуктам можно задавать варианты, и есть справочник опций и их значений на каждого клиента, по которым можно для продуктов устанавливать варианты.

Создать/обновить вариант со значением опции, не указанными в таком справочнике - можно, новое значение опции не попадет в общий справочник

### Запрос списка опций

/api/lite/products/features

Метод возвращает справочник всех опций и их значений для клиента

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="padding: 0px; height: 17px;" width="692"><colgroup><col style="width: 123.0px;"></col><col style="width: 110.0px;"></col><col style="width: 458.0px;"></col></colgroup><thead class="tableFloatingHeaderOriginal" style="position: fixed; margin-top: 0px; left: 325px; z-index: 3; width: 691px; top: 40px;"></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="padding: 0px;"><tbody aria-live="polite" aria-relevant="all"><tr><td>**Поле**</td><td>**Тип / формат**</td><td>**Описание**</td></tr><tr role="row"><td class="confluenceTd">id</td><td class="confluenceTd">string</td><td class="confluenceTd">Идентификатор опции</td></tr><tr role="row"><td class="confluenceTd">code</td><td class="confluenceTd">string</td><td class="confluenceTd">Читаемый код опции</td></tr><tr role="row"><td class="confluenceTd">title</td><td class="confluenceTd">string</td><td class="confluenceTd">Читаемое наименование опции</td></tr><tr role="row"><td class="confluenceTd">type</td><td class="confluenceTd">string</td><td class="confluenceTd">Тип опции (string/decimal)</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">values</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">array</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">Список значений опции</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">stringValue</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">Значение опции (строка)</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">decimalValue</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">decimal</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">Значение опции (число)</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">ordering</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">decimal</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" title="Цвет фона: Желтый">сортировка</td></tr></tbody></table>

</div><div id="bkmrk--0"></div>####  

#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "features": [
                {
                    "id": "a2ebf183-f30d-417b-af89-e3ff86d2cca7",
                    "code": "size",
                    "title": "Размер",                  
                    "type": "string",
                    "values": [
                        {
                            "stringValue": "XXL",
                            "ordering": 4
                        },
                        {
                            "stringValue": "XL",
                            "ordering": 3
                        }                      
                    ]
                },
                {
                    "id": "a2ebf183-f30d-417b-af89-e3ff86d2cca8",
                    "code": "coef",
                    "title": "Тестовый коэффициент",                  
                    "type": "decimal",
                    "values": [
                        {
                            "decimalValue": 1.3,
                            "ordering": 100
                        },
                        {
                            "decimalValue": 2.5,
                            "ordering": 200
                        }                      
                    ]
                }
            ]
}
```

###  

### Создание/обновление опции

/api/lite/products/features

Создает или обновляет опцию.

Поле code опции при создании/обновлении - обязательное поле, он задается **явно для каждой** опции.

Список значений опции при создании - необязателен

####  

#### **Пример создания/обновления атрибута:**

```JSON
{
    "id": "a2ebf183-f30d-417b-af89-e3ff86d2cca7",
    "code": "size",
    "title": "Размер",                 
    "type": "string",
    "values": [
                        {
                            "stringValue": "XXL",
                            "ordering": 4
                        },
                        {
                            "stringValue": "XL",
                            "ordering": 3
                        }                      
                    ]
}
```

<div id="bkmrk--1"></div>

# /api/lite/products/filters

### Получение блоков фильтров

/api/lite/products/filters

Возвращает для заданной коллекции перечень блоков и фильтров в них для поиска товаров.

Блоки бывают трех типов - Для атрибутов, для опций, и другие. Атрибуты и опции выделены в отдельные блоки ввиду потенциально большого количества справочников и значений в них.

Блоки можно запрашивать в режиме для покупателя и для владельца магазина.

В режиме для покупателя - загрузится список вручную сформированных блоков фильтров и выбранных значений фильтров, которые нужно отобразить покупателю.

В режиме для продавца - загрузятся автоматически сформированные блоки со всеми фильтрами и со всеми значениями фильтров и справочников в них - это будет использовать продавец для ручного поиска товаров для формирования заказов или других сценариях использования поиска товаров.

Значения в атрибутах, опциях и пр. - автозаполняются по факту их использования в том или ином товаре. Это будет делаться асинхронно по регламенту, а не при исполнении запроса поиска, т.к. операция дорогая по времени.

Обязательный параметр запроса - ?collectionId=123

Опциональный параметр - режим запроса - под покупателем или под продавцом. По умолчанию - под покупателем

?mode=client или ?mode=customer

Фронтенд при выборе покупателем значений тех или иных фильтров должен составить поисковый GET запрос и передать его в метод:

/pub/products

в виде суммы параметров:

`?filters=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке OTHER

`?attributes=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке ATTRIBUTES

`?features=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке FEATURES

где field\_name - это значение поля filters.fields.name, field\_value - это значение поля filters.fields.stringValues для filters.fields.type: "string" или decimalValues для filters.fields.type: "decimal" или true/false для filters.fields.type: "boolean".

Для для filters.fields.type: "decimal" также можно передавать диапазон указывая начальное и конечное значение через дефис: field\_name2:field\_value3-field\_value4

####   
**Поля возвращаемого значения:**

<table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0" role="grid" style="width: 100.002%;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 23.2099%;">**Параметр**</td><td style="width: 23.2098%;">**Тип / формат**</td><td style="width: 74.1526%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 23.2099%;">filterBlocks</td><td class="confluenceTd" style="width: 23.2098%;">array</td><td class="confluenceTd" style="width: 74.1526%;">Массив блоков</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2099%;" title="Цвет фона: Зеленый">id</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2098%;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 74.1526%;" title="Цвет фона: Зеленый">Идентификатор блока</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2099%;" title="Цвет фона: Зеленый">type</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2098%;" title="Цвет фона: Зеленый">enum</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 74.1526%;" title="Цвет фона: Зеленый">Тип блока. ATTRIBUTES (только атрибуты товаров), FEATURES (только опции товаров), OTHER (остальные поля товаров)</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2099%;" title="Цвет фона: Зеленый">mode</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2098%;" title="Цвет фона: Зеленый">enum</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 74.1526%;" title="Цвет фона: Зеленый">Режим работы блока. CUSTOMER (покупатель, отображены выбранные продавцом фильтры в блоке), CLIENT (продавец - отображены все возможные поля и блоки)

</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2099%;" title="Цвет фона: Зеленый">ordering</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2098%;" title="Цвет фона: Зеленый">integer</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 74.1526%;" title="Цвет фона: Зеленый">Сортировка</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2099%;" title="Цвет фона: Зеленый">collectionId</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 23.2098%;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 74.1526%;" title="Цвет фона: Зеленый">Идентификатор коллекции к которой относится данный блок фильтров</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 23.2099%;" title="Цвет фона: Желтый">filters</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 23.2098%;" title="Цвет фона: Желтый">Массив</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 74.1526%;" title="Цвет фона: Желтый">Перечень фильтров в блоке</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 23.2099%;" title="Цвет фона: Желтый">enabled</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 23.2098%;" title="Цвет фона: Желтый">boolean</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 74.1526%;" title="Цвет фона: Желтый">Виден на витрине</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 23.2099%;" title="Цвет фона: Желтый">type</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 23.2098%;" title="Цвет фона: Желтый">enum</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 74.1526%;" title="Цвет фона: Желтый">Тип фильтра. PRICE, STOCK\_AVAILABLE, SIZE\_WIDTH, SIZE\_DEPTH, SIZE\_HEIGHT, WEIGHT, COUNTRY\_OF\_ORIGIN, ATTRIBUTES, FEATURES, DISCOUNT\_AVAILABLE, IS\_NOVELTY, BRAND, IS\_BESTSELLER, </td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 23.2099%;" title="Цвет фона: Желтый">ordering</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 23.2098%;" title="Цвет фона: Желтый">integer</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 74.1526%;" title="Цвет фона: Желтый">Сортировка</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2099%;" title="Цвет фона: Синий">fields</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2098%;" title="Цвет фона: Синий">Массив</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 74.1526%;" title="Цвет фона: Синий">Поля фильтра</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2099%;" title="Цвет фона: Синий">name</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2098%;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 74.1526%;" title="Цвет фона: Синий">Наименование поля</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2099%;" title="Background colour : Blue">nameReadable</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2098%;" title="Background colour : Blue">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 74.1526%;" title="Background colour : Blue">Наименование поля для пользователя</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2099%;" title="Цвет фона: Синий">type</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2098%;" title="Цвет фона: Синий">enum</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 74.1526%;" title="Цвет фона: Синий">Тип поля. string, decimal, boolean </td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2099%;" title="Цвет фона: Синий">ordering</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2098%;" title="Цвет фона: Синий">integer</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 74.1526%;" title="Цвет фона: Синий">Сортировка</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2099%;" title="Цвет фона: Синий">stringValues</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2098%;" title="Цвет фона: Синий">Массив</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 74.1526%;" title="Цвет фона: Синий">Массив строковых значений поля</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2099%;" title="Цвет фона: Синий">decimalValues</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 23.2098%;" title="Цвет фона: Синий">Массив</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 74.1526%;" title="Цвет фона: Синий">Массив числовых значений поля</td></tr></tbody></table>

####  

#### **Пример ответа:**

```JSON
{
    "success": true,
    "filterBlocks": [
        {
            "id": "1029",
            "type": "OTHER", // ATTRIBUTES, FEATURES
            "mode": "CUSTOMER", //CLIENT
            "ordering": 10,
            "collectionId": "123456"
            "filters":[
                {
                    "type":"PRICE",  // STOCK_AVAILABLE, SIZE_WIDTH, SIZE_DEPTH, SIZE_HEIGHT, WEIGHT, COUNTRY_OF_ORIGIN, ATTRIBUTES, FEATURES, DISCOUNT_AVAILABLE, IS_NOVELTY, BRAND,   IS_BESTSELLER
                    "enabled": true,
                    "ordering": 10,
                    "fields":[
                        {
                            "name" : "field1",
                            "nameReadable": "Поле 1",
                            "type": "string", // decimal, boolean
                            "ordering": 10,
                            "stringValues": [
                                "value1", "value2"
                            ]
                        },
                        {
                            "name" : "field2",
                            "nameReadable": "Поле 2",
                            "type": "decimal",
                            "ordering": 11,
                            "decimalValues": [
                                15.2, 16.8
                            ]
                        },
                        {
                            "name" : "field3",
                            "nameReadable": "Поле 3",
                            "type": "boolean",
                            "ordering": 12                             
                        }
                    ]
                }
            ]
        }
    ]
}
```

###  

### Создание/обновление блока фильтров

/api/lite/products/filters

Создает или обновляет блок фильтров для покупателя.

Фильтры для продавца создаются и заполняются автоматом.

Если id указан - проводится обновление блока фильтров с указанным id, если не указан - создается новый блок.

Есть проверка - фильтры с типом ATTRIBUTES или FEATURES - можно добавлять только в отдельные блоки с аналогичными типами, в которых нет других фильтров

Поля в блоках фильтров (кроме типов **<span style="color: #008200;">ATTRIBUTES, FEATURES</span>**) отдельно не задаются, их бэкенд добавит автоматически по типу фильтра.

####  

#### **Пример обновления блока:**

```JSON
{
            "id": "1029",
            "type": "OTHER", // ATTRIBUTES, FEATURES           
            "ordering": 10,
            "collectionId": "123456"
            "filters":[
                {
                    "type":"PRICE",  // STOCK_AVAILABLE, SIZE_WIDTH, SIZE_DEPTH, SIZE_HEIGHT, WEIGHT, COUNTRY_OF_ORIGIN, ATTRIBUTES, FEATURES, DISCOUNT_AVAILABLE, IS_NOVELTY, BRAND,       IS_BESTSELLER
                    "enabled": true,
                    "fields":[   // только для ATTRIBUTES, FEATURES
                        {
                            "name" : "field1",
                            "nameReadable": "Поле 1",
                            "type": "string", // decimal, boolean
                            "ordering": 10,
                            "stringValues": [
                                "value1", "value2"
                            ]                          
                        },
                        {
                            "name" : "field2",
                            "nameReadable": "Поле 2",
                            "type": "decimal",
                            "ordering": 11,
                            "decimalValues": [
                                15.2, 16.8
                            ]                          
                        },
                        {
                            "name" : "field3",
                            "nameReadable": "Поле 3",
                            "type": "boolean",
                            "ordering": 12                             
                        }
                    ]                  
                }
            ]
}
```

####  

#### **Пример ответа**:

```JSON
{
    "success": true,
    "id": "1029"       
}
```

###  

### Удаление блока фильтров

/api/lite/products/filters

Для удаления блока фильтров, выполняется следующий DELETE запрос с указанием идентификатора блока в параметре id

В ответ возвращается результат операции и id удаленного блока.

####  

#### **Пример успешного ответа:**

```JSON
{
  "success": true,
  "id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF"
}
```

####  

#### **Пример ошибки:**

```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "Блока фильтров с указанным id не существует"
    }
  ]
}
```

# /api/lite/products/image

### Создание картинки к продукту (/api/lite/products/image)

/api/lite/products/image

Загружает на сервер картинку и привязывает изображение к товару.

Используется заголовок запроса **Content-type: multipart/form-data.**

В качестве параметров запроса передается:

- id - идентификатор продукта
- upfile - картинка

На стороне сервера:

- Сохраняется оригинал картинки (но с ограничением в максимальное количество пикселей) - original

В ответ возвращается информация о загруженной картинке:

####  

#### **Успех**

```JSON
{
    "success": true,
    "url": "https://img.kak2c.ru/i/H/E/Y8x2a2Zj.jpg",
    "id": "42737a4a-8f76-4aa6-a3d1-ae553f2409cb",
    "pos": "10000.000000000000000"
}
```

Параметры:

- url- прямая ссылка на оригинал картинки
- id - идентификатор картинки (для последующего обновления или удаления)
- pos - автоматически присвоенное значение для сортировки

####  

#### **Ошибка:** 

```JSON
{
"success": false,
"errors": [
 {
 "code": 0,
 "message": "Текст ошибки"
 }
]
}
```

###  

### Удаление картинки у товарного предложения (/api/lite/products/image)

/api/lite/products/image

Для удаления метки, выполняется следующий DELETE запрос с указанием идентификатора картинки в параметре id

В ответ возвращается результат операции и id удаленной картинки.

####  

#### **Пример успешного ответа:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%7B-%22success%22%3A-true%2C-%22-0"><div data-hasbody="true" data-macro-name="code">```
<strong><code class="language-JSON">{<br></br>  "success": true,<br></br>  "id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF"<br></br>}</code></strong>
```

<div></div></div></div>#### **В случае ошибки:**

```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "Картинки с указанным id не существует"
    }
  ]
}
```

###  

### Обновление позиции картинки (/api/lite/products/image/pos)

/api/lite/products/image/pos

Обновляет значение позиции для сортировки картинок в списке

####  

#### **Запрос:**

```JSON
{
  "id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
  "pos": 123.456
}
```

####  

#### **Ответ:**

```JSON
{
  "success": true
}
```

####  

#### **В случае ошибки:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%7B-%22success%22%3A-false%2C--1">```JSON
{<br></br>  "success": false,<br></br>  "errors": [<br></br>    {<br></br>      "code": 0,<br></br>      "message": "текст ошибки"<br></br>    }<br></br>  ]<br></br>}
```

</div><div id="bkmrk-"></div>

# /api/lite/products/variants

У каждого продукта есть хотя бы один вариант.

Вариант – реальный товар, имеющий характеристики, вес, размеры.

### Создание/редактирование варианта (POST /api/lite/products/variants)

/api/lite/products/variants

Создает или обновляет вариант к указанному продукту.

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="padding: 0px;"><colgroup><col style="width: 17.799%;"></col><col style="width: 15.9809%;"></col><col style="width: 66.0287%;"></col></colgroup><thead class="tableFloatingHeaderOriginal" style="position: fixed; margin-top: 0px; left: 325px; z-index: 3; width: 894px; top: 40px;"></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF%5C%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF%D0%B8%D1%81"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="padding: 0px; height: 734px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 28px;"><td style="height: 28px; width: 129.965px;">**Поле**</td><td style="height: 28px; width: 100.868px;">**Тип\\формат**</td><td style="height: 28px; width: 578.056px;">**Описание**</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">productId</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">string</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Идентификатор продукта, для которого создаются варианты</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">variantId</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">string</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Идентификатор варианта для обновления. Если не указан, создается новый вариант.</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">extId</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">string</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Дополнительный редактируемый код варианта.</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">article</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">string</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Артикул производителя товара.</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;"><span style="color: #999999;">price</span></td><td class="confluenceTd" style="height: 28px; width: 100.868px;">decimal</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Цена розничной продажи. \[deprecated\]</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;"><span style="color: #999999;">oldPrice</span></td><td class="confluenceTd" style="height: 28px; width: 100.868px;">decimal</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">"Старая цена" - используется для отображения перечеркнутой цены. \[deprecated\]</td></tr><tr style="height: 28px;"><td style="width: 129.965px; height: 28px;">prices</td><td style="width: 100.868px; height: 28px;">object</td><td style="width: 578.056px; height: 28px;">Список цен</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">defaultImage</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">string</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Ссылка на стандартное изображение варианта (из набор изображений продукта).</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">ordering</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">double</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Число для сортировки между вариантами</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 129.965px;" title="Цвет фона: Зеленый">optionsUsed</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 100.868px;" title="Цвет фона: Зеленый">array</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 578.056px;" title="Цвет фона: Зеленый">Массив используемых опций данным вариантом</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 129.965px;" title="Цвет фона: Зеленый">code</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 100.868px;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 578.056px;" title="Цвет фона: Зеленый">Код варианта</td></tr><tr style="height: 28px;"><td style="width: 129.965px; height: 28px;">stringValue</td><td style="width: 100.868px; height: 28px;">string</td><td style="width: 578.056px; height: 28px;">Значение опции варианта (строка)</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 129.965px;" title="Цвет фона: Зеленый">decimalValue</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 100.868px;" title="Цвет фона: Зеленый">decimal</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="height: 28px; width: 578.056px;" title="Цвет фона: Зеленый">Значение опции варианта (число)</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">weight</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">decimal</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Вес товара в граммах</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">dimensions</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">object</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Объект с характеристиками размеров товара. Задается в сантиметрах.</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;">barcodes</td><td class="confluenceTd" style="height: 28px; width: 100.868px;">array</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Список ШК варианта</td></tr><tr style="height: 28px;"><td style="width: 129.965px; height: 28px;">stock</td><td style="width: 100.868px; height: 28px;">object</td><td style="width: 578.056px; height: 28px;">Объект со списком кодов складов и остатков товаров на них</td></tr><tr style="height: 28px;"><td style="width: 129.965px; height: 28px;">warehouseCode</td><td style="width: 100.868px; height: 28px;">string</td><td style="width: 578.056px; height: 28px;">Код склада</td></tr><tr role="row" style="height: 77px;"><td class="confluenceTd" style="height: 77px; width: 129.965px;">stockTotal</td><td class="confluenceTd" style="height: 77px; width: 100.868px;">integer</td><td class="confluenceTd" style="height: 77px; width: 578.056px;">Опционально - установить общее количество товара в штуках на складе по умолчанию, включая количество в резерве. Только в сочетании с флагом updateStockTotal = true

</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="height: 55px; width: 129.965px;">updateStockTotal</td><td class="confluenceTd" style="height: 55px; width: 100.868px;">boolean</td><td class="confluenceTd" style="height: 55px; width: 578.056px;">Флаг активации корректировки общего количества товара из поля stockTotal на складе по умолчанию

</td></tr></tbody></table>

</div>#### **Пример вызова:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0"><div>Пример запроса</div></div>```JSON
{
    "productId": "1002",
    "variantId": "1024",
    "article": "POLO92/L/ЖЕЛ",
    "price": 990, //deprecated
    "oldPrice": 1200, //deprecated
  	"prices":[
      {
        "priceCode":"Розничная цена",
        "value":990
      },
      {
        "priceCode":"Цена до скидки",
        "value":1200
      }
    ],
    "defaultImage": "8b16a469-2b8c-4df4-85f2-c9c9afa1f921",
    "ordering": "123.123"
    "optionsUsed": [
        {
            "code": "size",
            "stringValue": "L"
        },
        {
            "code": "color",
            "stringValue": "желтый"
        }
    ],
    "weight": 500,
    "dimensions": {
        "height": 5,
        "width": 5,
        "depth": 10
    },
    "barcodes": [
                        {
                            "value": "42353456345345",
                            "isDefault": true,
                            "type": "COMMON"
                        },
                        {
                            "value": "34234232343",
                            "isDefault": false,
                          	"type": "WILDBERRIES"
                        }
     ],                 
     "stock": [
                        {
                            "warehouseCode": "9a84e96f-3e8c-8f74-3b7a-50a1d3c2a130",
                            "stockTotal": 111                          
                        }
                    ],
     "updateStockTotal":false
}
```

### Создание кванта(POST /api/lite/products/variants)

Тело запроса аналогично [POST /api/lite/products/variants](http://wiki.kak2c.ru/link/67#bkmrk-page-title)

Дополнительные поля для создания кванта, обязательны для заполнения

<table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF%5C%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF%D0%B8%D1%81-0" role="grid" style="padding: 0px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 28px;"><td style="height: 28px; width: 129.965px;">**Поле**</td><td style="height: 28px; width: 100.868px;">**Тип\\формат**</td><td style="height: 28px; width: 578.056px;">**Описание**</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;"><span class="name" title="multiplicity">multiplicity</span></td><td class="confluenceTd" style="height: 28px; width: 100.868px;">string</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Кратность кванта</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="height: 28px; width: 129.965px;"><span class="name" title="parentPackageId">parentPackageId</span></td><td class="confluenceTd" style="height: 28px; width: 100.868px;">string</td><td class="confluenceTd" style="height: 28px; width: 578.056px;">Идентификатор варианта, для которого создается квант (обязательный параметр для создания короба)</td></tr><tr><td style="width: 129.965px;"><span class="name" title="parentPackageId">shortName</span></td><td style="width: 100.868px;">string</td><td style="width: 578.056px;">Наименование кванта</td></tr></tbody></table>

#### **Пример вызова:**

**Пример запроса**

```
{
  "parentPackageId": "566335464",
  "multiplicity": "5",
  "shortName": "test monokorob",
  "productId": "1256635834",
  "isArchived": false,
  "barcodes": []
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div></div></div>### Обновление отдельных полей варианта(PATCH /api/lite/products/variants)

/api/lite/products/variants

Обновляет одно или несколько полей варианта, значения отсутствующих в запросе полей при этом не изменяются.

Тело запроса аналогично [POST /api/lite/products/variants](http://wiki.kak2c.ru/link/67#bkmrk-page-title)

productId и variantId - необходимо указывать обязательно

#### **Пример вызова:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0-1">Пример запроса</div>```JSON
{
	"productId":"1002",
	"variantId":"1024",
	"barcodes":[
		{
			"value":"42353456345345",
			"isDefault":true,
			"type":"COMMON"
		}
	]
}
```

ответ аналогичен POST /api/lite/products/variants

### Удаление варианта (DELETE /api/lite/products/variants)

/api/lite/products/variants

Удаляет вариант продукта.

Невозможно удалить единственный вариант продукта. Также, невозможно удалить вариант, у которого есть складские остатки.

Параметры запроса: productId - код продукта, variantId - код варианта

### Упорядочить значения опций продукта (POST /api/lite/product/options/reorder)

/api/lite/product/options/reorder

Упорядочивает значения опций для указанного продукта.

Если данной опции не существует - значение пропускается.

<div id="bkmrk--1"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="padding: 0px;"><colgroup><col style="width: 17.799%;"></col><col style="width: 15.9809%;"></col><col style="width: 66.0287%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF%5C%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF%D0%B8%D1%81-1"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="padding: 0px; width: 605px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 80px;">**Поле**</td><td style="width: 106px;">**Тип\\формат**</td><td style="width: 419px;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 80px;">productId</td><td class="confluenceTd" style="width: 106px;">string</td><td class="confluenceTd" style="width: 419px;">Идентификатор продукта, для которого создаются варианты</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 80px;">options</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 106px;">array</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 419px;">Массив опций</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 80px;">code</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 106px;">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 419px;">Код опции

</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 80px;">values</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 106px;">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 419px;">Массив значений для данной опции **в требуемом порядке**.</td></tr></tbody></table>

</div>#### **Пример вызова:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0-%7B-%22pr"><div>Пример запроса</div>```JSON
{<br></br>    "productId": "1002",<br></br>    "options": [<br></br>        {<br></br>            "code": "size",<br></br>            "values": [<br></br>                "S",<br></br>                "M",<br></br>                "L",<br></br>                "XL"<br></br>            ]<br></br>        },<br></br>        {<br></br>            "code": "color",<br></br>            "values": [<br></br>                "желтый",<br></br>                "красный",<br></br>                "синий",<br></br>                "бело-синий"<br></br>            ]<br></br>        }<br></br>    ]<br></br>}
```

</div><div id="bkmrk--2"></div>

# /api/lite/file/image

### Закачка картинки в облако

<span style="color: #172b4d;">/api/lite/file/image</span>

Закачка картинки в облако и получение url

Одновременно выполняет ресайз картинки в несколько разрешений, аналогично методу POST /api/lite/products/image

Принимает файл в виде multipart запроса в параметре upfile.

Хедер - только Authorization

####  

#### **Пример из Postman:**

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://docs.kak2c.ru/download/attachments/23560454/image2020-2-7_15-56-12.png?version=1&modificationDate=1584359469471&api=v2)</span>

####  

#### **<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">Пример ответа:</span>**

<div id="bkmrk-%7B-%22success%22%3A-true%2C-%22">```
<strong><code class="language-JSON">{<br></br>    "success": true,<br></br>    "url": "https://storage.yandexcloud.net/images-k2c/66ac26ec-08b2-4d4a-ae22-44c182847984.jpg",<br></br>    "id": "66ac26ec-08b2-4d4a-ae22-44c182847984.jpg"<br></br>}</code></strong>
```

<div></div></div>

# /api/lite/pub/products

### Запрос указанного продукта (публичный)

/api/lite/pub/products

Метод возвращает продукты с вариантами.

Продукт всегда содержит хотя бы один вариант.

#### **Фильтрация по полям товара:**

Можно задавать фильтр параметром ?query=test - для фильтрации по полям article , humanId, shortName

Дополнительно можно фильтровать по конкректному продукту параметром ?id=1000

Также можно запрашивать конкретный вариант продукта полями variantId и variantExtId

Параметр **available** позволяет фильтровать скрытые товары. Если флаг не передан, скрытые товары не филтьруются(отображаются активные + скрытые)

#### **Фильтрация по фильтрам, атрибутам, вариантам товара:**

Фронтенд при выборе покупателем значений тех или иных фильтров должен составить поисковый GET запрос и передать его в метод GET /pub/products

в виде суммы параметров:

`?filters=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке OTHER

`?attributes=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке ATTRIBUTES

`?features=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке FEATURES

где field\_name - это значение поля filters.fields.name, field\_value - это значение поля filters.fields.stringValues для filters.fields.type: "string" или decimalValues для filters.fields.type: "decimal" или true/false для filters.fields.type: "boolean".

Для для filters.fields.type: "decimal" также можно передавать диапазон указывая начальное и конечное значение через дефис: `field_name2:field_value3-field_value4`

####  

#### **Коллекции**

Можно задавать фильтр по коллекциям параметром ?collections=1007,1008 - для фильтрации по id коллекций (можно передавать списком)

####  

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - заказов на странице, page - номер страницы.

Пример: `/api/lite/products?page=0&size=200`

Если параметры не переданы, то дефолтные значения page=0&amp;size=100

Также, для отображение пейджинации следует анализировать параметр recordsTotal, возвращающий общее количество записей (с учетом примененной фильтрации, если она есть).

#### **Сортировка**

Для сортировки задается параметр order, принимающий код поля для сортировки и направление сортировки (asc, desc), отделенное символом плюса.

Пример сортировки по имени (**возрастание**): `/api/lite/products?order=shortname+<strong>asc</strong>`

Пример сортировки по имени (**убывание**): `/api/lite/products?order=shortname+<strong>desc</strong>`

Доступные коды сортировки:

- shortname
- article
- price
- amount
- discount

Пример вызова с одновременной фильтрацией, пейджинацией и сортировкой:

`/api/lite/products?query=Поло&order=shortname+asc&page=0&size=200`

#### **Последовательность применения поисковых критериев:**

1. Если задан id продукта - поиск идет только по нему. Выход из поиска
2. Если задан variantId конкретного варианта товара - поиск идет по нему (по внутреннему или внешнему коду варианта, согласно настройке аккаунта). Выход из поиска
3. Если заданы параметры filters, attributes, features - будет поиск по ним (включая совместно по их комбинациям). Если одновременно задан параметр collections - он будет учтен. Выход из поиска
4. Если заданы параметры query или collections - будет поиск по ним (включая совместно по обоим). Выход из поиска
5. Иначе выводятся все продукты с учетом запрошенного флага deleted

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid"><colgroup><col style="width: 123.0px;"></col><col style="width: 110.0px;"></col><col style="width: 458.0px;"></col></colgroup><thead></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF%5C%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF%D0%B8%D1%81"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="height: 1233px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 28px;"><td style="width: 143.636px; height: 28px;">**Поле**</td><td style="width: 111.818px; height: 28px;">**Тип\\формат**</td><td style="width: 553.636px; height: 28px;">**Описание**</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 143.636px; height: 44px;">recordsTotal</td><td class="confluenceTd" style="width: 111.818px; height: 44px;">num</td><td class="confluenceTd" style="width: 553.636px; height: 44px;">Общее количество записей в рамках заданной фильтрации. Используется для пейджинации.</td></tr><tr role="row" style="height: 33px;"><td class="confluenceTd" style="width: 143.636px; height: 33px;">products

</td><td class="confluenceTd" style="width: 111.818px; height: 33px;">array</td><td class="confluenceTd" style="width: 553.636px; height: 33px;">Перечень товарных предложений</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 143.636px; height: 28px;">id</td><td class="confluenceTd" style="width: 111.818px; height: 28px;">string</td><td class="confluenceTd" style="width: 553.636px; height: 28px;">Идентификатор продукта</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 143.636px; height: 28px;">extId</td><td class="confluenceTd" style="width: 111.818px; height: 28px;">string</td><td class="confluenceTd" style="width: 553.636px; height: 28px;">Внешний код продукта</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 143.636px; height: 28px;">shortName</td><td class="confluenceTd" style="width: 111.818px; height: 28px;">string</td><td class="confluenceTd" style="width: 553.636px; height: 28px;">Наименование продукта</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 143.636px; height: 28px;">description</td><td class="confluenceTd" style="width: 111.818px; height: 28px;">string</td><td class="confluenceTd" style="width: 553.636px; height: 28px;">Описание (может содержать html)</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 143.636px; height: 28px;">available</td><td class="confluenceTd" style="width: 111.818px; height: 28px;">boolean</td><td class="confluenceTd" style="width: 553.636px; height: 28px;">Отображение для продажи в онлайн-магазине</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 143.636px; height: 28px;">deleted</td><td class="confluenceTd" style="width: 111.818px; height: 28px;">boolean</td><td class="confluenceTd" style="width: 553.636px; height: 28px;">Архивная карточка</td></tr><tr style="height: 28px;"><td style="width: 143.636px; height: 28px;">reviewScore</td><td style="width: 111.818px; height: 28px;">decimal</td><td style="width: 553.636px; height: 28px;">Оценка товара</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">variants</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">array</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Массив вариантов</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">id</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Уникальный идентификатор варианта.</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 143.636px; height: 28px;">extId</td><td class="confluenceTd" style="width: 111.818px; height: 28px;">string</td><td class="confluenceTd" style="width: 553.636px; height: 28px;">Внешний код варианта</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">article</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Артикул (sku) товара</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">price</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">decimal</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Цена продажи</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">oldPrice</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">decimal</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">"Старая" цена. Для визуализации скидки. </td></tr><tr role="row" style="height: 44px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 44px;" title="Цвет фона: Желтый">stock</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 44px;" title="Цвет фона: Желтый">object</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 44px;" title="Цвет фона: Желтый">Остатки товара на всех складах</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый"> </td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый"> </td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый"> </td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">pos</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">num</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Порядковый номер варианта, относительно </td></tr><tr role="row" style="height: 60px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 60px;" title="Цвет фона: Желтый">optionsUsed</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 60px;" title="Цвет фона: Желтый">array</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 60px;" title="Цвет фона: Желтый">Массив, указывающий соответствие опции и её значения для конкретного продукта. Значения указываются как ссылки на значение из общего словаря опций.</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">defaultImage</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Ссылка на изображение из общего массива изображений. Может быть не задан.</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">weight</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">decimal</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Вес товара</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">dimensions</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">object</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Содержит информацию о размерах</td></tr><tr role="row" style="height: 44px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 44px;" title="Цвет фона: Синий">options</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 44px;" title="Цвет фона: Синий">array</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 44px;" title="Цвет фона: Синий">Словарь возможных опций для продукта, и также значений опций. Каждое значение опции имеет собственный идентификатор.</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">id</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Идентификатор опции</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">name</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Наименование</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">name\_plural</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Наименование во множественном числе</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">values</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">array</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Массив значений данной опции</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 143.636px; height: 28px;" title="Цвет фона: Зеленый">images</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 111.818px; height: 28px;" title="Цвет фона: Зеленый">array</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 553.636px; height: 28px;" title="Цвет фона: Зеленый">Массив изображений продукта. Первое изображение считается основным.</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 143.636px; height: 28px;" title="Цвет фона: Зеленый">id</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 111.818px; height: 28px;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 553.636px; height: 28px;" title="Цвет фона: Зеленый">Идентификатор изображения</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 143.636px; height: 28px;" title="Цвет фона: Зеленый">url</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 111.818px; height: 28px;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 553.636px; height: 28px;" title="Цвет фона: Зеленый">URL изображения</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 143.636px; height: 28px;" title="Цвет фона: Зеленый">pos</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 111.818px; height: 28px;" title="Цвет фона: Зеленый">decimal</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 553.636px; height: 28px;" title="Цвет фона: Зеленый">Позиция изображения в рамках продукта</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">collections</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">array</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Массив коллекций, в которые входит продукт</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 143.636px; height: 28px;" title="Цвет фона: Желтый">id</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 111.818px; height: 28px;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 553.636px; height: 28px;" title="Цвет фона: Желтый">Идентификатор коллекции</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">attributes</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">array</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Массив значений атрибутов продукта</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">id</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Идентификатор атрибута</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">type</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">enum</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Тип атрибута (см. описание атрибутов)</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">stringValue</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Значение атрибута (строка)</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">decimalValue</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">decimal</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Значение атрибута (число)</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 143.636px; height: 28px;" title="Цвет фона: Синий">ordering</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 111.818px; height: 28px;" title="Цвет фона: Синий">decimal</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 553.636px; height: 28px;" title="Цвет фона: Синий">Cортировка</td></tr><tr style="height: 28px;"><td style="width: 143.636px; height: 28px;">anyPublicCollections</td><td style="width: 111.818px; height: 28px;">boolean</td><td style="width: 553.636px; height: 28px;">Есть хотя бы одна коллекция в каталоге с этим товаром</td></tr></tbody></table>

</div>#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "recordsTotal": 2,
    "products": [
        {
            "id": "1002",
            "extId": "",
            "shortName": "Футболка",
            "description": "<p><h1><strong>Лучшие</strong> футболки</h1><br></p>",
            "available": true,
            "deleted": false,
            "reviewScore": 4.0,
          	"anyPublicCollections": true,
            "variants": [
                {
                    "id": "1005",
                    "extId": null,
                    "article": "",
                    "price": 990,
                    "oldPrice": 1200,
                    "stock": [
                      {
                        "warehouseCode": "a8064680-6f8c-830c-1ea1-0ab8a032e244",
                        "stockTotal": 40,
                        "stockAvailable": 38,
                        "stockReserved": 2
                      }
                    ],
                    "ordering": 1,
                    "optionsUsed": [
                        {
                            "id": "size",
                            "value": "L"
                        }
                    ],
                    "defaultImage": "8b16a469-2b8c-4df4-85f2-c9c9afa1f921",
                    "weight": 500,
                    "dimensions": {
                        "height": 5,
                        "width": 5,
                        "depth": 10
                    }
                },
                {
                    "id": "1006",
                    "extId": null,
                    "article": "",
                    "price": 990,
                    "oldPrice": 1200,
                     "stock": [
                      {
                        "warehouseCode": "a8064680-6f8c-830c-1ea1-0ab8a032e244",
                        "stockTotal": 40,
                        "stockAvailable": 38,
                        "stockReserved": 2
                      }
                    ],
                    "ordering": 2,
                    "optionsUsed": [
                        {
                            "id": "size",
                            "value": "M"
                        }
                    ],
                    "defaultImage": null,
                    "weight": 500,
                    "dimensions": {
                        "height": 5,
                        "width": 5,
                        "depth": 10
                    }
                }
            ],         
            "images": [
                {
                    "id": "8b16a469-2b8c-4df4-85f2-c9c9afa1f921",
                    "url": "https://img.kak2c.ru/i/f/g/IA33pVkwd.jpg?1564511037",                                      
                    "pos": "10000.000000000000000"                 
                },
                {
                    "id": "8b16a469-2b8c-4df4-85f2-c9c9afa1b323",
                    "url": "https://img.kak2c.ru/i/f/g/IA33pVkw.jpg?1564511037",                   
                    "pos": "5000.00000"                
                }
            ],
            "collections": [
                "1029", "1031"
            ],
            "attributes": [
                {
                    "id": "material",
                    "type": "string",
                    "stringValue": "Хлопок 97%, эластан 3%",
                    "ordering": 1
                }
            ]
        }
    ]
}
```

###  

### Запрос списка брендов по всем продуктам (публичный)

/api/lite/pub/products/brands

<div id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%C2%A0-%D0%A2%D0%B8%D0%BF%5C%D1%84%D0%BE%D1%80%D0%BC%D0%B0"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid"><tbody aria-live="polite" aria-relevant="all"><tr><td>**Параметр**</td><td>**Тип\\формат**</td><td>**Описание**</td></tr><tr role="row"><td class="confluenceTd">searchString

</td><td class="confluenceTd">string</td><td class="confluenceTd">(необязательный)</td></tr></tbody></table>

</div>Запрос возвращает список всех существующих брендов магазина. Если задан параметр 'searchString' - возвращает только те бренды, в которых есть вхождение этой строки(в любом месте). Регистр не важен

Пример ответа `(<span style="color: #505050;">/api/lite/pub/products/brands?searchString=кактус</span>)`:

#### **Пример запроса:**

```JSON
{
    "brands": [
        "Кактус Дейли",
        "Кактус ПРО"
    ]
}
```

<div id="bkmrk--0"></div>

# /api/lite/pub/products/filters

### Получение блоков фильтров

/api/lite/pub/products/filters

Возвращает для заданной коллекции перечень блоков и фильтров в них для поиска товаров.

Блоки бывают трех типов - Для атрибутов, для опций, и другие. Атрибуты и опции выделены в отдельные блоки ввиду потенциально большого количества справочников и значений в них.

Блоки возвращаются в режиме для покупателя <span style="letter-spacing: 0.0px;"> - загрузится список вручную сформированных блоков фильтров и выбранных значений фильтров, которые нужно отобразить покупателю.</span>

Значения в атрибутах, опциях и пр. - автозаполняются по факту их использования в том или ином товаре. Это будет делаться асинхронно по регламенту, а не при исполнении запроса поиска, т.к. операция дорогая по времени.

Обязательный параметр запроса - ?collectionId=123

Фронтенд при выборе покупателем значений тех или иных фильтров должен составить поисковый GET запрос и передать его в метод GET /pub/products

в виде суммы параметров:

`?filters=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке OTHER

`?attributes=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке ATTRIBUTES

`?features=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4` для всех фильтров в блоке FEATURES

где field\_name - это значение поля filters.fields.name, field\_value - это значение поля filters.fields.stringValues для filters.fields.type: "string" или decimalValues для filters.fields.type: "decimal" или true/false для filters.fields.type: "boolean".

Для для filters.fields.type: "decimal" так же можно передавать диапазон указывая начальное и конечное значение через дефис: `field_name2:field_value3-field_value4`

####  

#### **Поля возвращаемого значения:**

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid"><colgroup><col></col><col></col><col></col></colgroup><thead></thead></table>

</div><div id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%A2%D0%B8%D0%BF%5C%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 853px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 112px;">**Параметр**</td><td style="width: 112px;">**Тип\\формат**</td><td style="width: 629px;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 112px;">filterBlocks</td><td class="confluenceTd" style="width: 112px;">array</td><td class="confluenceTd" style="width: 629px;">Массив блоков</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">id</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 629px;" title="Цвет фона: Зеленый">Идентификатор блока</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">type</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">enum</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 629px;" title="Цвет фона: Зеленый">Тип блока. ATTRIBUTES (только атрибуты товаров), FEATURES (только опции товаров), OTHER (остальные поля товаров)</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">mode</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">enum</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 629px;" title="Цвет фона: Зеленый">Режим работы блока. CUSTOMER (покупатель, отображены выбранные продавцом фильтры в блоке), CLIENT (продавец - отображены все возможные поля и блоки)

</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">ordering</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">integer</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 629px;" title="Цвет фона: Зеленый">Сортировка</td></tr><tr role="row"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">collectionId</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 112px;" title="Цвет фона: Зеленый">string</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 629px;" title="Цвет фона: Зеленый">Идентификатор коллекции к которой относится данный блок фильтров</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 112px;" title="Цвет фона: Желтый">filters</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 112px;" title="Цвет фона: Желтый">Массив</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 629px;" title="Цвет фона: Желтый">Перечень фильтров в блоке</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 112px;" title="Цвет фона: Желтый">type</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 112px;" title="Цвет фона: Желтый">enum</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 629px;" title="Цвет фона: Желтый">Тип фильтра. PRICE, STOCK\_AVAILABLE, SIZE, WEIGHT, COUNTRY\_OF\_ORIGIN, ATTRIBUTES, FEATURES, DISCOUNT\_AVAILABLE, IS\_NOVELTY, BRAND, IS\_BESTSELLER</td></tr><tr role="row"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 112px;" title="Цвет фона: Желтый">ordering</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 112px;" title="Цвет фона: Желтый">integer</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 629px;" title="Цвет фона: Желтый">Сортировка</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">fields</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">Массив</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 629px;" title="Цвет фона: Синий">Поля фильтра</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">name</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 629px;" title="Цвет фона: Синий">Наименование поля</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Background colour : Blue">nameReadable</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Background colour : Blue">string</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 629px;" title="Background colour : Blue">Наименование поля, выводимое покупателю</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">type</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">enum</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 629px;" title="Цвет фона: Синий">Тип поля. string, decimal, boolean </td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">ordering</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">integer</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 629px;" title="Цвет фона: Синий">Сортировка</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">stringValues</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">Массив</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 629px;" title="Цвет фона: Синий">Массив строковых значений поля</td></tr><tr role="row"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">decimalValues</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 112px;" title="Цвет фона: Синий">Массив</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 629px;" title="Цвет фона: Синий">Массив числовых значений поля</td></tr></tbody></table>

</div>#### **Пример ответа:**

```JSON
{
    "success": true,
    "filterBlocks": [
        {
            "id": "1029",
            "type": "OTHER", // ATTRIBUTES, FEATURES
            "mode": "CUSTOMER", //CLIENT
            "ordering": 10,
            "collectionId": "123456"
            "filters":[
                {
                    "type":"PRICE",  // STOCK_AVAILABLE, SIZE, WEIGHT, PRICE, ATTRIBUTES, FEATURES, DISCOUNT_AVAILABLE, IS_NOVELTY, BRAND,      IS_BESTSELLER
                    "ordering": 10,
                    "fields":[
                        {
                            "name" : "field1",
                            "nameReadable": "Поле 1",
                            "type": "string", // decimal, boolean
                            "ordering": 10,
                            "stringValues": [
                                "value1", "value2"
                            ]
                        },
                        {
                            "name" : "field2",
                            "nameReadable": "Поле 2",
                            "type": "decimal",
                            "ordering": 11,
                            "decimalValues": [
                                15.2, 16.8
                            ]
                        },
                        {
                            "name" : "field3",
                            "nameReadable": "Поле 3",
                            "type": "boolean",
                            "ordering": 12                             
                        }
                    ]
                }
            ]
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div></div></div>

# /api/lite/products/templates/items

### Получение шаблона импорта номенклатуры

/api/lite/products/templates/items

В ответ возвращается в бинарном виде с типом <span style="color: #808080;">application/octet-stream </span>xls файл для выгрузки в браузер пользователю

Можно задавать ему название "ItemTemplate.xls"

#### **Успех:**

<span style="color: #808080;">application/octet-stream</span>

#### **Ошибка:** 

status 500

```JSON
{
"timestamp": "2020-04-03T10:38:46.343+0000",
"status": 500,
"error": "Internal Server Error",
"message": "12345",
"path": "/api/lite/settings/templates/items"
}
```

/api/lite/products/templates/items

Загружает на сервер xls файл (**не xlsx**) и производит анализ и формирование списка позиций для потенциального заказа.

Используется заголовок запроса **Content-type: multipart/form-data.** (аналогично методу POST /api/lite/products/image)

В качестве параметр запроса передается:

- upfile - xls файл
- searchColumn - поле поиска номенклатуры HUMANID | EXTID | ARTICLE | BARCODE

Xls файл для анализа должен быть исправленным файлом метода:

/api/lite/products/templates/items

(удалены ненужные строки, проставлены значения в колонки Цена, Количество, НДС).

Возвращаемые данные клиентское приложение может использовать для формирования списка позиций заказа/заказа поставщика

На сервере никакой документ не изменяется при этом.

В ответ возвращается информация о распознанных товарах в списке items и перечень предупреждений по строкам xls файла, елис такие возникли.

Успешные позиции в items можно использовать для формирования заказа, предупреждения можно отображать для пользователя.

#### **Успех**

```JSON
{
   
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Найдены следующие ошибки в строке 10 : не указано количество; - Артикул , Серые"
        },
        {
            "code": 0,
            "message": "Найдены следующие ошибки в строке 12 : не найден товар по полю Код в kak2c и значению 12345 - Артикул 456, Голубые"
        }
    ],
    "items": [
        {
            "num": 1,
            "variantId": "1021",
            "productId": "1021",
            "variantExtId":"EXT0029",
            "name": "Розовые",
            "article": "",
            "quantity": 2,
            "vatRate": "VAT_20",
            "price": 0,
          	"barcode": "600000000212"
        },
        {
            "num": 2,
            "variantId": "1024",
            "productId": "1024",
            "name": "Красные",
            "article": "",
            "quantity": 3,
            "vatRate": "VAT_20",
            "price": 0
        },
        {
            "num": 3,
            "variantId": "1025",
            "productId": "1025",
            "name": "Фиолетовые",
            "article": "",
            "quantity": 4,
            "vatRate": "VAT_20",
            "price": 0
        },
        {
            "num": 4,
            "variantId": "1023",
            "productId": "1023",
            "name": "Оранжевые",
            "article": "",
            "quantity": 5,
            "vatRate": "VAT_20",
            "price": 0
        },
        {
            "num": 5,
            "variantId": "1027",
            "productId": "1027",
            "name": "Белые",
            "article": "",
            "quantity": 6,
            "vatRate": "VAT_20",
            "price": 0
        },
        {
            "num": 6,
            "variantId": "1019",
            "productId": "1019",
            "name": "Флуоресцентно зеленые",
            "article": "",
            "quantity": 1,
            "vatRate": "VAT_20",
            "price": 0
        },
        {
            "num": 7,
            "variantId": "1018",
            "productId": "1018",
            "name": "Синие",
            "article": "",
            "quantity": 2,
            "vatRate": "VAT_20",
            "price": 0
        },
        {
            "num": 8,
            "variantId": "1017",
            "productId": "1017",
            "name": "Черные",
            "article": "",
            "quantity": 3,
            "vatRate": "VAT_20",
            "price": 0
        },
        {
            "num": 9,
            "variantId": "1022",
            "productId": "1022",
            "name": "Флуоресцентно желтые",
            "article": "",
            "quantity": 5,
            "vatRate": "VAT_20",
            "price": 0
        }
    ]
}
```

#### **Ошибка**

```JSON
{
"success": false,
"errors": [
 {
 "code": 0,
 "message": "Текст ошибки"
 }
]
}
```

# /api/lite/products/additional_descriptions

Дополнительные описания – текстовые характеристики для описания номенклатуры. Используются для отображения дополнительной информации в карточке продукта. Не являются обязательными к заполнению.

Справочник заголовков описаний является общим для аккаунта и заполняется при добавлении описаний с новыми уникальными заголовками.

### Запрос справочника заголовков

/api/lite/products/additional\_descriptions/titles

Метод возвращает список всех когда-либо добавленных заголовков.

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 85.5341%;"><colgroup><col style="width: 17.7165%;"></col><col style="width: 15.9449%;"></col><col style="width: 66.273%;"></col></colgroup><thead></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 91.4581%;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 33.3333%;">**Поле**</td><td style="width: 33.3333%;">**Тип / формат**</td><td style="width: 20.1299%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">title</td><td class="confluenceTd" style="width: 33.3333%;">string</td><td class="confluenceTd" style="width: 20.1299%;">Заголовок</td></tr><tr><td style="width: 33.3333%;">pos</td><td style="width: 33.3333%;">double</td><td style="width: 20.1299%;">Число для сортировки</td></tr></tbody></table>

</div>####  

#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "titles": [
        {
            "title": "Применение",
            "pos": "1915616.000000000000000"
        },
        {
            "title": "Ингридиенты",
            "pos": "1915655.000000000000000"
        }
    ]
}
```

# /api/lite/products/reviews

### Получение отзывов

/api/lite/products/reviews

Возвращает отзывы на товары. Отзывы отсортированы по дате создания, начиная с новых.

#### **Фильтрация**

`?productId=1030` - для фильтрации по идентификатору товара

`?status=NEW` - для фильтрации по статусу отзыва

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - отзывов на странице, page - номер страницы.

Пример: `/api/lite/products/reviews?page=0&size=200`

Если параметры не переданы, то дефолтные значения page=0&amp;size=100

Также, для отображение пейджинации следует анализировать параметр recordsTotal, возвращающий общее количество записей (с учетом примененной фильтрации, если она есть).

<div id="bkmrk-"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 91.4581%;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 33.3333%;">**Поле**</td><td style="width: 33.3333%;">**Тип / формат**</td><td style="width: 40.2597%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">id</td><td class="confluenceTd" style="width: 33.3333%;">string</td><td class="confluenceTd" style="width: 40.2597%;">Идентификатор отзыва. </td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 33.3333%; height: 29px;">**product**</td><td class="confluenceTd" style="width: 33.3333%; height: 29px;">**object**</td><td class="confluenceTd" style="width: 40.2597%; height: 29px;">**Информация о товаре**</td></tr><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;"> id</td><td style="width: 33.3333%; height: 29px;">string</td><td style="width: 40.2597%; height: 29px;">Идентификатор товара</td></tr><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;"> shortName</td><td style="width: 33.3333%; height: 29px;">string</td><td style="width: 40.2597%; height: 29px;">Название товара</td></tr><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;"> **images**</td><td style="width: 33.3333%; height: 29px;">**array**</td><td style="width: 40.2597%; height: 29px;">**Изображения товара**</td></tr><tr><td style="width: 33.3333%;"> url</td><td style="width: 33.3333%;">string</td><td style="width: 40.2597%;">Ссылка на изображение</td></tr><tr><td style="width: 33.3333%;"> id</td><td style="width: 33.3333%;">string</td><td style="width: 40.2597%;">Имя файла</td></tr><tr><td style="width: 33.3333%;"> pos</td><td style="width: 33.3333%;">double</td><td style="width: 40.2597%;">Позиция</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">createTs</td><td class="confluenceTd" style="width: 33.3333%;">datetime</td><td class="confluenceTd" style="width: 40.2597%;">Время создания отзыва</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">customerName</td><td class="confluenceTd" style="width: 33.3333%;">string</td><td class="confluenceTd" style="width: 40.2597%;">Имя автора отзыва

</td></tr><tr><td style="width: 33.3333%;">content</td><td style="width: 33.3333%;">string</td><td style="width: 40.2597%;">Текст отзыва

</td></tr><tr><td style="width: 33.3333%;">score</td><td style="width: 33.3333%;">decimal</td><td style="width: 40.2597%;">Оценка (от 1 до 5)

</td></tr><tr><td style="width: 33.3333%;">status</td><td style="width: 33.3333%;">enum</td><td style="width: 40.2597%;">Статус отзыва

- NEW
- CONFIRMED
- DELETED

</td></tr></tbody></table>

</div>#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "recordsTotal": 1,
    "reviews": [
        {
            "id": "e7951e18-8ee3-61b2-b616-018331a8fb06",
            "product": {
                "id": "1030",
                "shortName": "Масло для бороды Бунтарь - Дамаск",
                "images": [
                    {
                        "url": "https://storage.yandexcloud.net/images-k2c/aff3c7f1-8b7c-47ea-a3a9-e9a52e476c12.jpg",
                        "id": "aff3c7f1-8b7c-47ea-a3a9-e9a52e476c12.jpg",
                        "pos": "10000.000000000000000"
                    }
                ]
            },
            "createTs": "2020-08-07 19:35:36",
            "customerName": "Петя",
            "content": "текст отзыва",
            "score": 5,
            "status": "NEW"
        }
    ]
}
```

### Редактирование отзывов

/api/lite/products/reviews

Редактирует отзыв.

#### **Пример запроса**

```JSON
{
    "id": "6c62461f-fcf4-c388-c3b4-e09971590d6b",
	"customerName": "Петя",
	"content": "текст отзыва",
	"status": "CONFIRMED"
}
```

В ответ возвращается

#### **Успех:**

```JSON
{
    "success": true,
    "review": {
        "id": "6c62461f-fcf4-c388-c3b4-e09971590d6b",
        "product": {
          	"id": "1030",
          	"shortName": "Масло для бороды Бунтарь - Дамаск",
          	"images": [
                {
                  "url": "https://storage.yandexcloud.net/images-k2c/aff3c7f1-8b7c-47ea-a3a9-e9a52e476c12.jpg",
                  "id": "aff3c7f1-8b7c-47ea-a3a9-e9a52e476c12.jpg",
                  "pos": "10000.000000000000000"
                }
          	]
        },
        "createTs": "2020-08-07 18:53:46",
        "customerName": "Петя",
        "content": "текст отзыва",
        "score": 5,
        "status": "CONFIRMED"
    }
}
```

#### **Ошибка:**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]
}
```

# /api/lite/pub/products/reviews

### Получение отзывов

/api/lite/pub/products/reviews

Возвращает подтвержденные отзывы на товары. Отзывы отсортированы по дате создания, начиная с новых.

`?productId=1030` - обязательный параметр для фильтрации по идентификатору товара

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - отзывов на странице, page - номер страницы.

Пример: `/api/lite/pub/products/reviews?page=0&size=200`

Если параметры не переданы, то дефолтные значения page=0&amp;size=100

Также, для отображение пейджинации следует анализировать параметр recordsTotal, возвращающий общее количество записей (с учетом примененной фильтрации, если она есть).

<div id="bkmrk-"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 91.4581%; height: 382px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;">**Поле**</td><td style="width: 33.3333%; height: 29px;">**Тип / формат**</td><td style="width: 40.2597%; height: 29px;">**Описание**</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 33.3333%; height: 29px;">id</td><td class="confluenceTd" style="width: 33.3333%; height: 29px;">string</td><td class="confluenceTd" style="width: 40.2597%; height: 29px;">Идентификатор отзыва. </td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 33.3333%; height: 29px;">**product**</td><td class="confluenceTd" style="width: 33.3333%; height: 29px;">**object**</td><td class="confluenceTd" style="width: 40.2597%; height: 29px;">**Информация о товаре**</td></tr><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;"> id</td><td style="width: 33.3333%; height: 29px;">string</td><td style="width: 40.2597%; height: 29px;">Идентификатор товара</td></tr><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;"> shortName</td><td style="width: 33.3333%; height: 29px;">string</td><td style="width: 40.2597%; height: 29px;">Название товара</td></tr><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;"> **images**</td><td style="width: 33.3333%; height: 29px;">**array**</td><td style="width: 40.2597%; height: 29px;">**Изображения товара**</td></tr><tr><td style="width: 33.3333%;"> url</td><td style="width: 33.3333%;">string</td><td style="width: 40.2597%;">Ссылка на изображение</td></tr><tr><td style="width: 33.3333%;"> id</td><td style="width: 33.3333%;">string</td><td style="width: 40.2597%;">Имя файла</td></tr><tr><td style="width: 33.3333%;"> pos</td><td style="width: 33.3333%;">double</td><td style="width: 40.2597%;">Позиция</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 33.3333%; height: 29px;">createTs</td><td class="confluenceTd" style="width: 33.3333%; height: 29px;">datetime</td><td class="confluenceTd" style="width: 40.2597%; height: 29px;">Время создания отзыва</td></tr><tr role="row" style="height: 35px;"><td class="confluenceTd" style="width: 33.3333%; height: 35px;">customerName</td><td class="confluenceTd" style="width: 33.3333%; height: 35px;">string</td><td class="confluenceTd" style="width: 40.2597%; height: 35px;">Имя автора отзыва

</td></tr><tr style="height: 35px;"><td style="width: 33.3333%; height: 35px;">content</td><td style="width: 33.3333%; height: 35px;">string</td><td style="width: 40.2597%; height: 35px;">Текст отзыва

</td></tr><tr style="height: 35px;"><td style="width: 33.3333%; height: 35px;">score</td><td style="width: 33.3333%; height: 35px;">decimal</td><td style="width: 40.2597%; height: 35px;">Оценка (от 1 до 5)

</td></tr><tr style="height: 74px;"><td style="width: 33.3333%; height: 74px;">status</td><td style="width: 33.3333%; height: 74px;">enum</td><td style="width: 40.2597%; height: 74px;">Статус отзыва

- CONFIRMED

</td></tr></tbody></table>

</div>#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "recordsTotal": 1,
    "reviews": [
        {
            "id": "e7951e18-8ee3-61b2-b616-018331a8fb06",
            "product": {
                "id": "1030",
                "shortName": "Масло для бороды Бунтарь - Дамаск",
                "images": [
                    {
                        "url": "https://storage.yandexcloud.net/images-k2c/aff3c7f1-8b7c-47ea-a3a9-e9a52e476c12.jpg",
                        "id": "aff3c7f1-8b7c-47ea-a3a9-e9a52e476c12.jpg",
                        "pos": "10000.000000000000000"
                    }
                ]
            },
            "createTs": "2020-08-07 19:35:36",
            "customerName": "Петя",
            "content": "текст отзыва",
            "score": 5,
            "status": "CONFIRMED"
        }
    ]
}
```

### Создание отзывов

/api/lite/pub/products/reviews

Добавляет новый отзыв.

#### **Пример запроса**

```JSON
{
    "productId": "1030",
	"customerName": "Петя",
	"content": "текст отзыва",
	"score": 5
}
```

В ответ возвращается

#### **Успех:**

```JSON
{
    "success": true,
    "review": {
        "id": "6c62461f-fcf4-c388-c3b4-e09971590d6b",
        "product": {
            "id": "1030",
          	"shortName": "Масло для бороды Бунтарь - Дамаск",
          	"images": [
                {
                  "url": "https://storage.yandexcloud.net/images-k2c/aff3c7f1-8b7c-47ea-a3a9-e9a52e476c12.jpg",
                  "id": "aff3c7f1-8b7c-47ea-a3a9-e9a52e476c12.jpg",
                  "pos": "10000.000000000000000"
                }
          ]
        },
        "createTs": "2020-08-07 18:53:46",
        "customerName": "Петя",
        "content": "текст отзыва",
        "score": 5,
        "status": "NEW"
    }
}
```

#### **Ошибка:**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]
}
```

# /api/lite/products/features/appearance

По свойствам продуктов можно задавать дополнительно код цвета и url картинки

### Запрос свойств отображения по продукту

/api/lite/products/features/appearance

Метод возвращает список кодов и url по используемым в данном продукте свойствам

обязательный параметр - id продукта

####  

#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "appearanceFields": [
        {
            "feature": "color",
            "value": "Синие",
            "code": "#252525",
            "imageUrl": ""
        },
        {
            "feature": "color",
            "value": "Черные",
            "code": "#335522",
            "imageUrl": "https://i.mycdn.me/image?id=803347578459&plc=WEB&tkn=*JEEWXMlfdErrCiuXFgcM6G0WGxs&fn=sqr_288"
        }
    ]
}
```

###  

### Создание/обновление свойств отображения

/api/lite/products/features/appearance

Создает или обновляет свойства отображения (code, imageUrl) для указанного продукта + опции + значения опции.

####  

#### **Пример создания/обновления атрибута:**

```JSON
{
  "productId": "1003",
  "feature": "color",
  "value": "Черные",
  "code": "#335522",
  "imageUrl": "https://i.mycdn.me/image?id=803347578459&plc=WEB&tkn=*JEEWXMlfdErrCiuXFgcM6G0WGxs&fn=sqr_288"
}
```

<div id="bkmrk-"></div>

# /api/lite/pub/products/features/appearance

По свойствам продуктов можно запрашивать дополнительно код цвета и url картинки

### Запрос свойств отображения по продукту

/api/lite/pub/products/features/appearance

Метод возвращает список кодов и url по используемым в данном продукте свойствам

обязательный параметр - id продукта

####  

#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "appearanceFields": [
        {
            "feature": "color",
            "value": "Синие",
            "code": "#252525",
            "imageUrl": ""
        },
        {
            "feature": "color",
            "value": "Черные",
            "code": "#335522",
            "imageUrl": "https://i.mycdn.me/image?id=803347578459&plc=WEB&tkn=*JEEWXMlfdErrCiuXFgcM6G0WGxs&fn=sqr_288"
        }
    ]
}
```

###  

<div id="bkmrk-"></div>

# /api/lite/products/export_ff

### Выгрузка номенклатуры в Темполайн

/api/lite/products/export\_ff

Создает/обновляет указанную номенклатуру в складской системе

#### **Пример вызова:**

```JSON
{
    "warehouseCode": "2970c244-20f4-bab8-4c29-b04504281120",
    "products": ["1042"]
}
```

#### **Пример успешного ответа**

```JSON
{
    "success": true
}
```

#### **В случае ошибки:**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]  
}
```

# /api/lite/products/accounting_attributes

Атрибуты учета – дополнительные характеристики для учета товара при отгрузке. Используются для проверки уникальных номеров товара. Не являются обязательными к заполнению.

Справочник атрибутов является общим для аккаунта.

Значения атрибутов задаются в информации о продуктах.

### Запрос справочника атрибутов

/api/lite/products/accounting\_attributes

Метод возвращает список всех доступных атрибутов.

<table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF" role="grid" style="width: 795px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 153px;">**Поле**</td><td style="width: 165px;">**Тип / формат**</td><td style="width: 485px;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 153px;">id</td><td class="confluenceTd" style="width: 165px;">string</td><td class="confluenceTd" style="width: 485px;">Идентификатор атрибута. </td></tr><tr role="row"><td class="confluenceTd" style="width: 153px;">code</td><td class="confluenceTd" style="width: 165px;">string</td><td class="confluenceTd" style="width: 485px;">Код атрибута - латиницей</td></tr><tr role="row"><td class="confluenceTd" style="width: 153px;">title</td><td class="confluenceTd" style="width: 165px;">string</td><td class="confluenceTd" style="width: 485px;">Наименование атрибута</td></tr><tr><td style="width: 153px;">values</td><td style="width: 165px;">array</td><td style="width: 485px;">Справочник значений атрибута</td></tr><tr><td style="width: 153px;"> stringValue</td><td style="width: 165px;">string</td><td style="width: 485px;">Значение</td></tr></tbody></table>

####  

#### **Пример результата запроса:**

```JSON
{
    "success": true,
    "attributes": [
        {
            "id": "a629bb7c-331e-ef94-ebac-5955731bf142",
            "code": "chestnyznak",
            "title": "Честный знак",
            "values": [
                {
                    "stringValue": "1111"
                },
                {
                    "stringValue": "2222"
                }
            ]
        }
    ]
}
```

### Создание/обновление атрибута

/api/lite/products/accounting\_attributes

Создает или обновляет атрибут.

Code атрибута при создании/обновлении - обязательное поле, он задается **явно для каждого** атрибута.

#### **Пример создания/обновления атрибута:**

```JSON
{
    "code": "chestnyznak",
    "title": "Честный знак",
    "values": [
        {
            "stringValue": "1111"
        },
        {
            "stringValue": "2222"
        }
    ]
}
```

# /api/lite/products/stock_revise

### Сверка остатков с Темполайн

/api/lite/products/stock\_revise

Возвращает списки расхождений по товарам

Параметр warehouse\_id - ид склада(необязательный). Если не указан, автоматически ищется склад с типом FULFILLMENT

`/api/lite/products/stock_revise?warehouse_id=e147712f-172c-8c1c-12e6-0feb0e4968c7`

#### **Пример успешного ответа**

```JSON
{
    "success": true,
    "moreItems": [
        {
            "item": {
                "variantId": "demo1027",
                "productId": "demo1009",
                "name": "тест",
                "img": "https://storage.yandexcloud.net/images-k2c/bb514759-b917-45fb-8267-8541ec586451.jpg",
                "barcode": "6412600817669"
            },
            "available": 96,
            "reserved": 0,
            "external": 95,
            "diff": 1,
            "afterCorrection": 95,
            "reviseError": false
        },
        {
            "item": {
                "variantId": "demo1031",
                "productId": "demo1013",
                "name": "Футболка №2 (демо товар)",
                "img": "https://storage.yandexcloud.net/images-k2c/ce86c7c0-2b17-4d84-a914-c00d2d027b88.png",
                "barcode": ""
            },
            "available": 3,
            "reserved": 2,
            "external": 0,
            "diff": 3,
            "afterCorrection": 2,
            "reviseError": false
        }
    ],
    "lessItems": [
        {
            "item": {
                "variantId": "demo1032",
                "variantExtId": "ext12313123",
                "productId": "demo1014",
                "name": "Наушники",
                "article": "121234134",
                "img": "https://storage.yandexcloud.net/images-k2c/3d526d88-dcd8-48e6-8f45-9b09a19026ca.png",
                "barcode": "6412600817222"
            },
            "available": 44,
            "reserved": 32,
            "external": 46,
            "diff": 2,
            "afterCorrection": 46,
            "reviseError": false
        },
        {
            "item": {
                "variantId": "demo1000",
                "productId": "demo1000",
                "name": "Кактус Эуфобия Триангуларис",
                "barcode": ""
            },
            "available": 67,
            "reserved": 21,
            "external": 68,
            "diff": 1,
            "afterCorrection": 68,
            "reviseError": false
        }
    ]
}
```

#### **В случае ошибки:**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]  
}
```

# /api/lite/products/wb_categories

### Запрос категорий товаров Wildberries

/api/lite/products/wb\_categories

Получает список вариантов категорий товаров для Wildberries

#### **Пример результата запроса**:

```JSON
{
    "success": true,
    "categories": [
        {
            "title": "Общая категория",
            "code": "COMMON",
            "wbCode": "1"
        },
        {
            "title": "Косметика, бытовая химия и питание",
            "code": "COSMETICS_AND_HOUSEHOLD_CHEMICALS",
            "wbCode": "2"
        },
        {
            "title": "Верхняя одежда и товары на вешалках",
            "code": "CLOTHES",
            "wbCode": "3"
        },
        {
            "title": "Обувь и товар в коробках",
            "code": "FOOTWEAR",
            "wbCode": "4"
        },
        {
            "title": "Книжная продукция и полиграфия",
            "code": "BOOKS",
            "wbCode": "5"
        },
        {
            "title": "Текстильные товары и аксессуары",
            "code": "TEXTILE_AND_ACCESSORIES",
            "wbCode": "6"
        },
        {
            "title": "Товары из кожи",
            "code": "LEATHER",
            "wbCode": "7"
        },
        {
            "title": "Посуда и кухонные принадлежности",
            "code": "DISHES",
            "wbCode": "8"
        },
        {
            "title": "Очки и оправы",
            "code": "GLASSES",
            "wbCode": "9"
        },
        {
            "title": "Товары для взрослых",
            "code": "PRODUCTS_FOR_ADULTS",
            "wbCode": "10"
        },
        {
            "title": "Грунт",
            "code": "SOIL",
            "wbCode": "11"
        },
        {
            "title": "Ювелирная продукция",
            "code": "JEWELRY",
            "wbCode": "12"
        },
        {
            "title": "Продукты питания и зоотовары",
            "code": "FOOD_AND_PET_SUPPLIES",
            "wbCode": "13"
        }
    ]
}
```

# /api/lite/products/delete_barcodes_ff

### Удаление ШК у номенклатуры в Темполайн

/api/lite/products/delete\_barcodes\_ff

Удаляет ШК у указанной номенклатуры в складской системе

Массив строк "barcodes" является приоритетным в поиске. Если он не пустой, поиск по id продукта не происходит

#### **Пример вызова:**

```JSON
{
    "warehouseCode": "2970c244-20f4-bab8-4c29-b04504281120",
  	"barcodes": ["4607043102393"]
    "products": ["1042"]
}
```

#### **Пример успешного ответа**

```JSON
{
    "success": true
}
```

#### **В случае ошибки:**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]  
}
```

# /api/lite/products/history

### Запрос истории изменения товаров

/api/lite/products/history

Метод возвращает список изменений по товару.

параметры:

productId - идентификатор продукта

page - страница результатов (по умолчанию 0)

size - число записей на странице (по умолчанию, 5)

jsonData - json товара, в формате [/api/lite/products](http://wiki.kak2c.ru/link/62#bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%B0-%D0%B7%D0%B0), если не передан, то jsonData не возвращается

id - идентификатор эвента(например, c9ae018d-2163-069c-b2fa-b46077652a73)

GET api/lite/products/history?productId=new0001

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 85.5341%;"><colgroup><col style="width: 17.7165%;"></col><col style="width: 15.9449%;"></col><col style="width: 66.273%;"></col></colgroup><thead></thead></table>

</div>#### **Пример результата запроса:**

```JSON
{
    "events": [
        {
            "changeSource": "USER",
            "description": "",
            "eventDate": "2022-02-15 15:34:33.444",
            "eventParameters": {
                "from": "POST /products"
            },
            "id": "c9ae018d-2163-069c-b2fa-b46077652a73",
            "level": "INFO",
            "success": true,
            "type": "SKU",
            "userLogin": "z@z.zz"
        },
        {
            "changeSource": "XLS",
            "description": "",
            "eventDate": "2022-02-15 15:32:58.070",
            "eventParameters": {
                "from": "XlsProductControllerService.sendProductMessages"
            },
            "id": "0c654d32-b1e3-d931-43ec-f92c01341806",
            "level": "INFO",
            "success": true,
            "type": "SKU",
            "userLogin": "z@z.zz"
        }
    ],
    "recordsTotal": 2,
    "success": true
}
```

GET api/lite/products/history?id=c9ae018d-2163-069c-b2fa-b46077652a73

#### **Пример результата запроса:**

```JSON
{
    "events": [
        {
            "changeSource": "USER",
            "description": "",
            "eventDate": "2022-02-15 15:34:33.444",
            "eventParameters": {
                "from": "POST /products"
            },
            "id": "c9ae018d-2163-069c-b2fa-b46077652a73",
            "jsonData": "{\"anyPublicCollections\":false,\"available\":true,\"brandName\":\"Levi's\",\"collections\":[\"1001\"],\"deleted\":false,\"description\":\"922\",\"expirationMode\":\"NO_EXPIRATION\",\"id\":\"new0001\",\"internationalDescription\":\"0\",\"isBestseller\":false,\"isNovelty\":false,\"shortName\":\"Джинсы (демо товар)1\",\"type\":\"SKU\",\"useBatchAccounting\":false,\"variants\":[{\"id\":\"100002\",\"isFfPhysicalSetSynchronized\":false,\"isFfSynchronised\":true,\"isPhysicalSet\":false,\"ordering\":\"1971940.000000000000000\",\"stock\":[{\"stockAvailable\":0,\"stockDefective\":0,\"stockDefectiveReserved\":0,\"stockReserved\":0,\"stockTotal\":0,\"warehouseCode\":\"27f650d9-7378-33c1-bae1-6aea66140bbd\"},{\"stockAvailable\":0,\"stockDefective\":0,\"stockDefectiveReserved\":0,\"stockReserved\":0,\"stockTotal\":0,\"warehouseCode\":\"374f35a6-633f-bc9d-917a-ce37cb74bd49\"}],\"type\":\"SKU\",\"vat\":\"NO_VAT\"}],\"vat\":\"NO_VAT\"}",
            "level": "INFO",
            "success": true,
            "type": "SKU",
            "userLogin": "z@z.zz"
        }
    ],
    "recordsTotal": 1,
    "success": true
}
```

# /api/lite/products/history/diff

### Запрос разницы между двумя состояниями истории товара

/api/lite/products/history/diff

Метод возвращает список человекочитаемых изменений товара.

leftId и rightId - идентификаторы записей истории изменений товара, полученных в методе [/api/lite/products/history](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproductshistory)

#### **Пример запроса:**

```json
{
    "items":[
        {
        "leftId":"8df52d29-7f75-c272-6894-d2c00e653c8c",
        "rightId":"a5c42f70-c634-21cf-b25e-f2e585db221e"
        },
        {
        "leftId":"63120d8b-b0b5-145e-ff44-d1bea50a77e7",
        "rightId":"8df52d29-7f75-c272-6894-d2c00e653c8c"
        }
    ]
}
```

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 85.5341%;"><colgroup><col style="width: 17.7165%;"></col><col style="width: 15.9449%;"></col><col style="width: 66.273%;"></col></colgroup><thead></thead></table>

</div>#### **Пример результата запроса:**

```JSON
{
    "items": [
        {
            "diff": "Цена: \"21000.00\" -> \"20000.00\", Розничная цена: \"21000.00\" -> \"20000.00\", Габариты: \"Ш:101 В:60 Г:30\" -> \"Ш:100 В:60 Г:30\"",
            "leftId": "8df52d29-7f75-c272-6894-d2c00e653c8c",
            "rightId": "a5c42f70-c634-21cf-b25e-f2e585db221e"
        },
        {
            "diff": "Название: \"Компьютер (демо товар)2\" -> \"Компьютер (демо товар)1\"",
            "leftId": "63120d8b-b0b5-145e-ff44-d1bea50a77e7",
            "rightId": "8df52d29-7f75-c272-6894-d2c00e653c8c"
        }
    ],
    "success": true
}
```

# /api/lite/products/batch

### Создание/обновление нескольких продуктов (POST /api/lite/products/batch)

/api/lite/products/batch

Создает или обновляет продукты, переданные списком. Ограничение - 1000 продуктов.

Структура продуктов в списке аналогична [методу POST /api/lite/products](http://wiki.kak2c.ru/link/62#bkmrk-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%2F%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-)

####  

#### **Пример вызова:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0">Пример запроса</div>```JSON
{
   "products":[
      {
         "id":"BATCH2500",
         "shortName":"BATCH2500",
         "variantsToUpdate":[
            {
               "variantId":"BATCH2500",
               "productId":"BATCH2500",
               "barcodes":[
                  {
                     "value":"bc9194352",
                     "isDefault":true
                  }
               ]
            }
         ]
      },
      {
         "id":"BATCH2501",
         "shortName":"BATCH2501",
         "variantsToUpdate":[
            {
               "variantId":"BATCH2501",
               "productId":"BATCH2501",
               "barcodes":[
                  {
                     "value":"bc7216735",
                     "isDefault":true
                  }
               ]
            }
         ]
      },
      {
         "id":"BATCH2502",
         "shortName":"BATCH2502",
         "variantsToUpdate":[
            {
               "variantId":"BATCH2502",
               "productId":"BATCH2502",
               "barcodes":[
                  {
                     "value":"bc6271942",
                     "isDefault":true
                  }
               ]
            }
         ]
      }
   ]
}
```

#### **Пример положительного ответа:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0">Пример ответа</div>```JSON
{
    "finishTime": "2022-03-29 19:14:47",
    "products": [
        {
            "id": "BATCH2500",
            "product": {
                "available": true,
                "collections": [
                    "1001"
                ],
                "deleted": false,
                "id": "BATCH2500",
                "shortName": "BATCH2500",
                "type": "SKU",
                "useBatchAccounting": false,
                "variants": [
                    {
                        "barcodes": [
                            {
                                "isDefault": true,
                                "type": "COMMON",
                                "value": "bc9900111"
                            }
                        ],
                        "id": "BATCH2500",
                        "isFfPhysicalSetSynchronized": false,
                        "isFfSynchronised": true,
                        "isPhysicalSet": false,
                        "ordering": "1976406.000000000000000",
                        "stock": [
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "5cb8dd66-836d-6c1a-a84b-e71fcf97104c"
                            },
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "e55cd8ab-09f3-26b7-00df-27e3642f5b79"
                            }
                        ],
                        "type": "SKU",
                        "vat": "NO_VAT"
                    }
                ],
                "vat": "NO_VAT"
            },
            "success": true,
            "variantsResult": [
                {
                    "productId": "BATCH2500",
                    "success": true,
                    "variantId": "BATCH2500"
                }
            ]
        },
        {
            "id": "BATCH2501",
            "product": {
                "available": true,
                "collections": [
                    "1001"
                ],
                "deleted": false,
                "id": "BATCH2501",
                "shortName": "BATCH2501",
                "type": "SKU",
                "useBatchAccounting": false,
                "variants": [
                    {
                        "barcodes": [
                            {
                                "isDefault": true,
                                "type": "COMMON",
                                "value": "bc5524020"
                            }
                        ],
                        "id": "BATCH2501",
                        "isFfPhysicalSetSynchronized": false,
                        "isFfSynchronised": true,
                        "isPhysicalSet": false,
                        "ordering": "1976406.000000000000000",
                        "stock": [
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "5cb8dd66-836d-6c1a-a84b-e71fcf97104c"
                            },
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "e55cd8ab-09f3-26b7-00df-27e3642f5b79"
                            }
                        ],
                        "type": "SKU",
                        "vat": "NO_VAT"
                    }
                ],
                "vat": "NO_VAT"
            },
            "success": true,
            "variantsResult": [
                {
                    "productId": "BATCH2501",
                    "success": true,
                    "variantId": "BATCH2501"
                }
            ]
        },
        {
            "id": "BATCH2502",
            "product": {
                "available": true,
                "collections": [
                    "1001"
                ],
                "deleted": false,
                "id": "BATCH2502",
                "shortName": "BATCH2502",
                "type": "SKU",
                "useBatchAccounting": false,
                "variants": [
                    {
                        "barcodes": [
                            {
                                "isDefault": true,
                                "type": "COMMON",
                                "value": "bc6869740"
                            }
                        ],
                        "id": "BATCH2502",
                        "isFfPhysicalSetSynchronized": false,
                        "isFfSynchronised": true,
                        "isPhysicalSet": false,
                        "ordering": "1976406.000000000000000",
                        "stock": [
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "5cb8dd66-836d-6c1a-a84b-e71fcf97104c"
                            },
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "e55cd8ab-09f3-26b7-00df-27e3642f5b79"
                            }
                        ],
                        "type": "SKU",
                        "vat": "NO_VAT"
                    }
                ],
                "vat": "NO_VAT"
            },
            "success": true,
            "variantsResult": [
                {
                    "productId": "BATCH2502",
                    "success": true,
                    "variantId": "BATCH2502"
                }
            ]
        }
    ],
    "startTime": "2022-03-29 19:14:47",
    "success": true
}
```

#### **Пример положительного ответа с ошибкой сохранения:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0-0">Пример ответа</div>```JSON
{
    "finishTime": "2022-03-29 19:22:30",
    "products": [
        {
            "errors": [
                {
                    "code": 0,
                    "message": "Заданный ID продукта \"№BATCH2500\" не соответствует требованиям: ID должен содержать только цифры, латиницу, тире, подчеркивание, #, или точку "
                }
            ],
            "success": false
        },
        {
            "id": "BATCH2501",
            "product": {
                "available": true,
                "collections": [
                    "1001"
                ],
                "deleted": false,
                "id": "BATCH2501",
                "shortName": "BATCH2501",
                "type": "SKU",
                "useBatchAccounting": false,
                "variants": [
                    {
                        "barcodes": [
                            {
                                "isDefault": true,
                                "type": "COMMON",
                                "value": "bc7216735"
                            }
                        ],
                        "id": "BATCH2501",
                        "isFfPhysicalSetSynchronized": false,
                        "isFfSynchronised": true,
                        "isPhysicalSet": false,
                        "ordering": "1976406.000000000000000",
                        "stock": [
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "5cb8dd66-836d-6c1a-a84b-e71fcf97104c"
                            },
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "e55cd8ab-09f3-26b7-00df-27e3642f5b79"
                            }
                        ],
                        "type": "SKU",
                        "vat": "NO_VAT"
                    }
                ],
                "vat": "NO_VAT"
            },
            "success": true,
            "variantsResult": [
                {
                    "productId": "BATCH2501",
                    "success": true,
                    "variantId": "BATCH2501"
                }
            ]
        },
        {
            "id": "BATCH2502",
            "product": {
                "available": true,
                "collections": [
                    "1001"
                ],
                "deleted": false,
                "id": "BATCH2502",
                "shortName": "BATCH2502",
                "type": "SKU",
                "useBatchAccounting": false,
                "variants": [
                    {
                        "barcodes": [
                            {
                                "isDefault": true,
                                "type": "COMMON",
                                "value": "bc6271942"
                            }
                        ],
                        "id": "BATCH2502",
                        "isFfPhysicalSetSynchronized": false,
                        "isFfSynchronised": true,
                        "isPhysicalSet": false,
                        "ordering": "1976406.000000000000000",
                        "stock": [
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "5cb8dd66-836d-6c1a-a84b-e71fcf97104c"
                            },
                            {
                                "stockAvailable": 0,
                                "stockDefective": 0,
                                "stockDefectiveReserved": 0,
                                "stockReserved": 0,
                                "stockTotal": 0,
                                "warehouseCode": "e55cd8ab-09f3-26b7-00df-27e3642f5b79"
                            }
                        ],
                        "type": "SKU",
                        "vat": "NO_VAT"
                    }
                ],
                "vat": "NO_VAT"
            },
            "success": true,
            "variantsResult": [
                {
                    "errors": [
                        {
                            "code": 0,
                            "message": "Штрихкод bc7216735 уже используются в варианте [BATCH2501] BATCH2501, ШК: bc7216735 "
                        }
                    ],
                    "productId": "BATCH2502",
                    "success": false,
                    "variantId": "BATCH2502"
                }
            ]
        }
    ],
    "startTime": "2022-03-29 19:22:30",
    "success": true
}
```

### Обновление отдельных полей нескольких продуктов (PATCH /api/lite/products/batch)

/api/lite/products/batch

Обновляет одно или несколько полей продукта, значения отсутствующих в запросе полей при этом не изменяются.

Тело запроса аналогично [POST /api/lite/products/batch](http://wiki.kak2c.ru/link/749#bkmrk-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%2F%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-)

id - необходимо указывать обязательно

#### **Пример вызова:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0-0">Пример запроса</div>```JSON
{
	"products":[
		{
			"id":"1015",
			"shortName":"Limited Edition Паста (помада) для укладки волос",
			"internationalDescription":"abc"
		},
      	{
			"id":"1016",
			"shortName":"Товар 2"
		}
	]
}
```

ответ аналогичен [POST /api/lite/products/batch](http://wiki.kak2c.ru/link/749#bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE%D0%BB%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3)

# /api/lite/products/batch/accounting/stocks

### Запрос остатков по партиям товаров (GET/api/lite/products/batch/accounting/stocks)

/api/lite/products/batch/accounting/stocks

Запрос остатков по товарам, для которых ведется учет по партиям.

####  

#### **Пример вызова:**

GET/api/lite/products/batch/accounting/stocks?warehouseCode=12345&amp;variantId=1234&amp;format=json

warehouseCode - Код склада, обязательный

variantId - список id вариантов товаров, через запятую, опциональный

format - формат данных - json или xls, опциональный. В случае xls в ответе будет ссылка на файл

#### **Пример положительного ответа:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0">Пример ответа</div>```JSON
{
    "items": [
        {
            "batchAccountingStocks": [
                {
                    "available": 50,
                    "batchAccountingNumber": "2478 01.01.2033 0:00:00",
                    "expirationDays": 0,
                    "expirationDaysLimit": 0,
                  	"productionDate": "2022-11-01",
                  	"expirationDate": "2022-12-01",
                    "manufacturer": "",
                    "manufacturerRequisites": "",
                    "useBatchAccounting": true,
                    "useExpiration": true,
                    "tag": "Тег 1"
                },
                {
                    "available": 8,
                    "batchAccountingNumber": "2478 09.01.2021 0:00:00",
                    "expirationDays": 0,
                    "expirationDaysLimit": 0,
                    "productionDate": "2022-11-01",
                  	"expirationDate": "2022-12-01",
                    "manufacturer": "",
                    "manufacturerRequisites": "",
                    "useBatchAccounting": true,
                    "useExpiration": true
                },
                {
                    "available": 52,
                    "batchAccountingNumber": "2478 09.08.2025 0:00:00",
                    "expirationDays": 0,
                    "expirationDaysLimit": 0,
                  	"productionDate": "2022-11-01",
                  	"expirationDate": "2022-12-01",
                    "manufacturer": "",
                    "manufacturerRequisites": "",
                    "useBatchAccounting": true,
                    "useExpiration": true
                }
            ],
            "variantId": "2478"
        }
    ],
    "success": true
}
```

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0-%D0%B4%D0%BB%D1%8F-fo">Пример ответа для format = xls</div>```JSON
{
    "file": "https://link_to_file.xls",
    "success": true
}
```

# /api/lite/products/variants/batch

<span style="font-size: 2.333em; font-weight: 400;">Обновление отдельных полей нескольких вариантов(PATCH /api/lite/products/variants/batch)</span>

/api/lite/products/variants/batch

Обновляет одно или несколько полей варианта, значения отсутствующих в запросе полей при этом не изменяются.

productId и variantId - необходимо указывать обязательно

#### **Пример вызова:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0">Пример запроса</div>```JSON
{
	"variantsToUpdate":[
		{
			"weight":200000,
			"productId":"demo1012",
			"variantId":"demo1030",
			"extId":"11011"
		},
		{
			"weight":233,
			"productId":"demo1013",
			"variantId":"demo1031",
			"extId":"11012"
		}
	]
}
```

# API загрузки уникальных номеров номенклатуры в Кактус

### Загрузка уникальных номеров через json файл

/api/lite/products/load/unique\_number/json

#### **Пример вызова:**

```JSON
{
  "items" : [
    
	{ 
      "variantId" : "1000",//variant_id номенклатуры
	  "uniqueNumbers" : [
        {
	     "uniqueNumber" : "1232344456777",//уникальный номер
		 "type" : "UIT"// пока только UIT
        }
	  ]
	}
  ]
}
```

#### **Пример успешного ответа**

```JSON
{
    "success": true
}
```

### Загрузка уникальных номеров через excel файл

/api/lite/products/load/unique\_number/excel

Эксель файл должен быть в формате xls, в первой колонке varian\_id номенклатуры, вторая колонка уникальный номер, третья тип уникального номера. Например 1000, njkjnw9i98, UIT.

upFile - файл excel в formData.

Файл эксель:[![imei.png](https://wiki.kak2c.ru/uploads/images/gallery/2023-06/scaled-1680-/imei.png)](https://wiki.kak2c.ru/uploads/images/gallery/2023-06/imei.png)

#### **Пример успешного ответа**

```JSON
{
    "success": true
}
```

### Получить список загруженных уникальных номеров номенклатуры

**<span style="color: #212121; font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', Helvetica, Arial, sans-serif; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: pre-wrap; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">/api/lite/products/unique\_numbers/list?variantId=1000&amp;isUsed=false&amp;page=0&amp;size=10</span>**

####  

variantId - ид варианта номенклатуры

isUsed - использованный/не использованные уникальные номенклатуры

page и size - для пагинации

#### **Пример успешного ответа**

```JSON
{
    "success": true,
    "uniqueNumbers": [
        {
            "disabled": false,
            "isReserved": false,
            "physicalSet": "",
            "purchaseOrder": "",
            "uniqueNumber": "0104064211748539215%HefMSHYlegL9100BE92IlF/M3RjtFd4KI5xnWnri5ZHCNIlndYdSVKLoG2VvWg3BZ3dPM1EnijDoPSuNJmVI63clfwHgXLVy3vDCXKvnw==",
            "type": "UIT"
        },
        {
            "disabled": false,
            "isReserved": false,
            "physicalSet": "",
            "purchaseOrder": "",
            "uniqueNumber": "0104064211296115217>dGPovOMpiDH␝918093␝92gbLYtaYLYnFIUsQilCOiicPOKJZMiuKKUeAIvO3R9wgWoEip5FjubkxPpXsOuCr9N4nMGXuD6VgS8oK/jkfvJw==␝",
            "type": "UIT"
        }
    ]
}
```

### Получить уникальный номер для номенклатуры, поставке или комплектации

/api/lite/products/unique\_number

Данный метод возвращает уникальный номер, и ставит галку что данный уникальный номер зарезервирован.

variant\_id - ид варианта номенклатуры

type\_unique\_number - тип уникального номера

id(необязательный) - номер документа(поставки, комплектации)

doc\_type - тип документа (PURCHASE\_ORDER, PHYSICAL\_SET\_ORDER)

#### **Пример успешного ответа**

```JSON
{
    "success" : true,
    "variantId" : "1000",
    "uniqueNumber" : "mlkmkjnjkmkjnjk"
}
```

### Проставить флаг использования уникальному номеру

/api/lite/products/unique\_number/used

#### **Пример вызова:**

```JSON
{ 
  "variantId" : "1000",	
  "uniqueNumber" : "njkdhbjcs"
}
```

Данный метод ставит флаг что данный уникальный номер использован.

#### **Пример успешного ответа**

```JSON
{
    "success": true
}
```

# /api/lite/products/variants/eshop_settings

### Изменение внешних кодов для интеграций (POST /api/lite/products/variants/eshop\_settings)

/api/lite/products/variants/eshop\_settings

Обновляет настройки для вариантов. Ограничение - 1000 вариантов.

#### **Пример вызова:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0">Пример запроса</div>```JSON
{
    "variants": [
        {
            "variantId": "1000",
            "eshopSettings": [
                {
                    "enabled": true,
                    "eshopId": "44fce711-e809-59ed-895a-661a32886d7f",
                    "extId": "HTW-LX3",
                    "zeroStock": true
                },
                {
                    "enabled": true,
                    "eshopId": "4f4509b3-3b5b-1474-cabd-dfe8fce1b9ca",
                    "extId": "HTW-LX3"
                }
            ]
        }
    ]
}
```

#### **Пример положительного ответа:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0">Пример ответа</div>```JSON
{
    "success": true,
    "variants": [
        {
            "success": true,
            "variantId": "1000"
        }
    ]
}
```

#### **Пример положительного ответа с ошибкой сохранения:**

<div id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%82%D0%B2%D0%B5%D1%82">Пример ответ</div>```JSON
{
    "success": true,
    "variants": [
        {
            "success": false,
          	"errors": [
              {
                "code": 0,
                "message": "Не найдена интеграция с указанным ID"
              }
            ],
            "variantId": "1000"
        }
    ]
}
```

# /api/lite/products/warehouse/categories

Категории товаров (продуктов) хранятся в таблице oms\_domain\_sku\_category. Кактус еженочно синхронизируется с WMS, получая оттуда актуальные категории.

### Запрос справочника атрибутов

/api/lite/products/warehouse/categories

Метод возвращает список категорий товаров.

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 85.5341%;"><colgroup><col style="width: 17.7165%;"></col><col style="width: 15.9449%;"></col><col style="width: 66.273%;"></col></colgroup><thead></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%2F-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%9E%D0%BF"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 91.4581%;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 33.3333%;">**Поле**</td><td style="width: 33.3333%;">**Тип / формат**</td><td style="width: 40.2597%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">format</td><td class="confluenceTd" style="width: 33.3333%;">string</td><td class="confluenceTd" style="width: 40.2597%;">Формат ответа (json/xls) </td></tr></tbody></table>

</div>####  

#### **Пример результата запроса:**

```JSON
{
    "items": [
        {
            "code": "weak",
            "title": "Хрупкое"
        },
        {
            "code": "strong",
            "title": "Сильное"
        },
        {
            "code": "bubble",
            "title": "Булькающее"
        }
    ],
    "success": true
}
```

# /api/lite/products/stocks

Метод возвращает остатки товарных предложений (с возможностью фильтрации по дате изменения остатков).

### Запрос остатков

/api/lite/products/stocks

Параметры запроса:

**stock\_updated\_from** - дата, с момента которой изменились остатки, формат `yyyy-MM-dd'T'HH:mm:ss[.SSS]`

Пример: `/api/lite/products/stocks?stock_updated_from=2024-05-21T00:00:00.000`

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - заказов на странице, page - номер страницы.

Пример: `/api/lite/products/stocks?page=0&size=200`

Если параметры не переданы, то дефолтные значения page=0&amp;size=1000

<p class="callout info">Максимальное количество записей на одной странице - 100 000. Даже если указано значение более 100 000</p>

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 85.5341%;"><colgroup><col style="width: 17.7165%;"></col><col style="width: 15.9449%;"></col><col style="width: 66.273%;"></col></colgroup><thead></thead></table>

</div><div id="bkmrk--0"></div>#### **Пример результата запроса:**

"id": "215606" - ИД варианта

type - тип продукта, аналогично [https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproducts](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproducts)

<div id="bkmrk-stocktotal---%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9-"><div>stockTotal - полный остаток</div><div><div>stockReserved - резерв</div><div>stockAvailable - свободный остаток (stockAvailable = stockTotal - stockReserved)</div><div><div><div>stockDefective - полный остаток на складе брака</div><div><div><div>stockDefectiveReserved - резерв на складе брака</div><div><div><div>stockExpired - полный остаток на складе просрочки</div></div></div></div></div><div>outOfStock - остаток outOfStock</div></div></div><div></div></div></div>```JSON
{
    "recordsTotal": 2873,
    "success": true,
    "variants": [
        {
            "id": "215606",
            "type": "SKU",   
            "stock": [
                {
                    "stockAvailable": 8,
                    "stockDefective": 0,
                    "stockDefectiveReserved": 0,
                    "stockExpired": 0,
                    "stockReserved": 2,
                    "stockTotal": 10,
                  	"outOfStock": 0,
                    "warehouseCode": "d7a490e3-7dd6-0104-60b6-ca222b03bf18"
                }
            ]
        },
        {
            "id": "213485",
            "type": "SKU",
            "stock": [
                {
                    "stockAvailable": 25,
                    "stockDefective": 0,
                    "stockDefectiveReserved": 0,
                    "stockExpired": 0,
                    "stockReserved": 1,
                    "stockTotal": 26,
                    "outOfStock": 0,
                    "warehouseCode": "d7a490e3-7dd6-0104-60b6-ca222b03bf18"
                }
            ]
        },
        {
            "id": "206949",
            "type": "SKU",
            "stock": [
                {
                    "stockAvailable": 14,
                    "stockDefective": 0,
                    "stockDefectiveReserved": 0,
                    "stockExpired": 0,
                    "stockReserved": 1,
                    "stockTotal": 15,
                    "outOfStock": 0,
                    "warehouseCode": "d7a490e3-7dd6-0104-60b6-ca222b03bf18"
                }
            ]
        }
    ]
}
```

<div id="bkmrk--1"></div>