# Кактус: для разработчиков

Адрес API: https://app.kak2c.ru/  
  
Адрес API тестового контура: https://app-test.kak2c.ru/

# Базовая схема интеграции с Кактусом

Ниже представлен план запуска нового клиента

[![Screenshot_5.png](https://wiki.kak2c.ru/uploads/images/gallery/2023-07/scaled-1680-/screenshot-5.png)](https://wiki.kak2c.ru/uploads/images/gallery/2023-07/screenshot-5.png)

[![Screenshot_6.png](https://wiki.kak2c.ru/uploads/images/gallery/2023-07/scaled-1680-/screenshot-6.png)](https://wiki.kak2c.ru/uploads/images/gallery/2023-07/screenshot-6.png)

#####  

##### **Схема движения товара**

[![Screenshot_12.png](https://wiki.kak2c.ru/uploads/images/gallery/2023-07/scaled-1680-/screenshot-12.png)](https://wiki.kak2c.ru/uploads/images/gallery/2023-07/screenshot-12.png)

#####  

##### **Общая схема интеграции**

<div drawio-diagram="4407"><img src="https://wiki.kak2c.ru/uploads/images/drawio/2023-07/drawing-7-1689276444.png" alt="drawing-7-1689276444.png"/></div>

##### **План действий для запуска нового клиента по API**

Ниже описан поэтапный план запуска клиента по руководству для разработчика:

<p class="callout success">**1. Создание аккаунта в Кактусе**  
[https://lk.kak2c.ru/sign\_up](https://lk.kak2c.ru/sign_up)</p>

<p class="callout success">**2. Авторизация в API**  
[Основной раздел "Авторизация"](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/chapter/%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F)  
[Инструкция "/api/lite/auth"](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteauth)</p>

<p class="callout success">**3. Синхронизация номенклатуры**  
[Инструкция "Запрос списка продуктов" (/api/lite/products)](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproducts)</p>

<p class="callout success">**4. Настройка вызова тарификатора и списка ПВЗ**  
[Инструкция "Расчет тарифа" (/api/dlv/tariffs)](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apidlvtariffs)  
[Инструкция "Список постоматов / ПВЗ (/api/dlv/delivery\_points)](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apidlvdelivery_points)</p>

<p class="callout success">**5. Расчет ориентировочных суммарных габаритов для заказа более чем с 1 вложимым**  
[Инструкция "Получение габаритов условного минимального упакованного места"](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apilitepubproductsdimensions)  
или   
[Инструкция "Получение габаритов упаковки товаров по перечню параметров упаковок"](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apilitepubdimensions-by-package)</p>

<p class="callout success">**6. Карта ПВЗ**  
Если требуется вывод ПВЗ на карту на сайте - можно воспользоваться нашим компонентом:  
[Инструкция "Карта ПВЗ"](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/%D0%BA%D0%B0%D1%80%D1%82%D0%B0-%D0%BF%D0%B2%D0%B7)</p>

<p class="callout success">**7. Настройка выгрузки поставок и мониторинг их статусов**  
[Инструкция "Запрос списка поставок на склад (заказов поставщиков)"](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apilitepurchase_orders)  
Мониторинг статусов удобнее делать с использованием метки изменений: **updated\_from** [Инструкция "Подтверждение поставки для ее выгрузки на склад"](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apilitepurchase_ordersconfirm)</p>

<p class="callout success">**8. Настройка выгрузки заказов и мониторинг их статусов**  
[Инструкция "Запрос списка заказов"](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteorders)  
Мониторинг статусов удобнее делать с использованием метки изменений: **updated\_from**</p>

**[![Screenshot_4.png](https://wiki.kak2c.ru/uploads/images/gallery/2023-07/scaled-1680-/screenshot-4.png)](https://wiki.kak2c.ru/uploads/images/gallery/2023-07/screenshot-4.png)**

# Варианты интеграции с сайтом (подключение собственного интернет-магазина)

Варианты расположены по степени сложности - от самого простого до самого сложного (и более гибкого) варианта

<table id="bkmrk-%C2%A0-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%B0%D0%B9%D1%82%D0%B0-%D0%98%D0%BD%D1%82" style="border-collapse:collapse;width:100%;height:451px;"><tbody><tr style="height:46px;"><td style="width:14.2857%;height:46px;"> </td><td style="width:11.0758%;height:46px;">**Создание сайта**</td><td style="width:13.7919%;height:46px;">**Интерфейс каталога товаров**</td><td style="width:13.0511%;height:46px;">**Загрузка товаров в кактус**</td><td style="width:12.0811%;height:46px;">**Корзина**</td><td style="width:14.2857%;height:46px;">**Выгрузка заказов в кактус**</td></tr><tr style="height:63px;"><td style="width:14.2857%;height:63px;">1. Создание сайта используя [витрину "Кактус"](https://wiki.kak2c.ru/books/instruktsiya-kaktusa/page/redaktor-sayta-kaktus "Редактор сайта")</td><td class="align-center" style="width:11.0758%;height:63px;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)

<span style="color:#000000;">Сайт делается на витрине "Кактус" без помощи программиста</span>

</td><td style="width:13.7919%;height:63px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Каталог товаров уже интегрирован с "Кактус"  
</span>

</td><td style="width:13.0511%;height:63px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Товары изначально создаются в "Кактус"  
</span>

</td><td style="width:12.0811%;height:63px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Умная корзина уже интегрирована  
</span>

</td><td style="width:14.2857%;height:63px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Заказы автоматически выгружаются в "Кактус"  
</span>

</td></tr><tr style="height:29px;"><td style="width:14.2857%;height:29px;">2. Создание сайта на CMS (к примеру Wordpress/Bitrix/Tilda) и [вставка каталога "Кактус" через IFrame](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0-%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-iframe "Подключение каталога Кактус через IFrame")</td><td style="width:11.0758%;height:29px;"><span style="color:#993300;">**[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)**</span>

<span style="color:#000000;">Сайт делается программистом на CMS  
</span>

</td><td style="width:13.7919%;height:29px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Каталог товаров уже интегрирован с "Кактус"  
</span>

</td><td style="width:13.0511%;height:29px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Товары изначально создаются в "Кактус"  
</span>

</td><td style="width:12.0811%;height:29px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Умная корзина уже интегрирована  
</span>

</td><td style="width:14.2857%;height:29px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Заказы автоматически выгружаются в "Кактус"  
</span>

</td></tr><tr style="height:29px;"><td style="width:14.2857%;height:29px;">3. Создание сайта на CMS (к примеру Wordpress/Bitrix/Tilda) и [подключение умной корзины "Кактус"](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2-%D0%B2%D0%B8%D0%B4%D0%B6%D0%B5%D1%82%D0%B0-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B)</td><td style="width:11.0758%;height:29px;"><span style="color:#993300;">**[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)**</span>

<span style="color:#000000;">Сайт делается программистом на CMS</span>

</td><td style="width:13.7919%;height:29px;"><span style="color:#993300;">**[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)**</span>

<span style="color:#000000;">Каталог товаров необходимо верстать в CMS  
</span>

</td><td style="width:13.0511%;height:29px;"><span style="color:#993300;">**[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)**</span>

<span style="color:#000000;">Товары необходимо заполнять как в CMS, так и в "Кактус"</span>

</td><td style="width:12.0811%;height:29px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Умная корзина [легко интегрируется в сайт](https://wiki.kak2c.ru/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%B4%D0%BB%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2%20%D0%B2%D0%B8%D0%B4%D0%B6%D0%B5%D1%82%D0%B0%20%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B)  
</span>

</td><td style="width:14.2857%;height:29px;">**<span style="color:#339966;">[![image-1593172124926.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172124926.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172124926.png)</span>**

<span style="color:#000000;">Заказы автоматически выгружаются в "Кактус"</span>

</td></tr><tr style="height:284px;"><td style="width:14.2857%;height:284px;">4. Создание сайта на CMS (к примеру Wordpress/Bitrix) без подключения умной корзины</td><td style="width:11.0758%;height:284px;">[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)

<span style="color:#000000;">Сайт делается программистом на CMS</span>

</td><td style="width:13.7919%;height:284px;">[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)

<span style="color:#000000;">Каталог товаров необходимо верстать в CMS  
</span>

</td><td style="width:13.0511%;height:284px;">[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)

<span style="color:#000000;">Товары необходимо заполнять как в CMS, так и в "Кактус"</span>

</td><td style="width:12.0811%;height:284px;">[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)

<span style="color:#000000;">Необходимо настроить своё оформление заказа, которое затем разработчик должен подключить по [API тарификации](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8-%D0%BA-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2-%D1%82%D0%B0%D1%80%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8 "Комментарии к использованию методов Тарификации")</span>

</td><td style="width:14.2857%;height:284px;">[![image-1593172186291.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593172186291.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593172186291.png)

<span style="color:#000000;">Необходимо [настроить выгрузку заказов в "Кактус"](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8-%D0%BF%D0%BE-%D0%B2%D1%8B%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B5-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%BE%D0%B2-%D0%B2-%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81 "Комментарии по выгрузке заказов в Кактус")  
</span>

**<span style="color:#339966;"> </span>**

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

# Виджет корзины

# Руководство для разработчиков виджета корзины

Инициализация корзины:

```HTML
<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">

<script>
  document.addEventListener("DOMContentLoaded", function (){
	var kak2c_domain = "shopXXXXXX"; //	Укажите здесь Ваш идентификатор магазина
    
    //Необязательные обработчики событий корзины. Могут использоваться например для генерации событий аналитики, вывода сообщений пользователю 
    //типа "товар добавлен в корзину" и т.п.
    document.addEventListener("kaktusEvent", function (e){
		//Здесь можно обработать любые изменения набора товаров в корзине, выбора доставки и т.п. Например вывести количество и сумму покупки в 
      	//свою кастомную иконку корзины и это количество и сумма будут изменяться при любых действиях пользователя с корзиной.
      	var cart = kaktusWidget.getCart();
      	console.log(cart.items); //Получение товаров в корзине
        console.log(cart.promocode); //Получение учтенного в цене заказа валидного промокода
      	//...
      
      	//Для обработки более специфичных событий, например отдельно только добавления товара в корзину, можно анализировать вид события: e.detail.type

		//Добавление товара в корзину. Не важно - добавление нового или же увеличение количество уже существующего
		if (e.detail.type == 'cart_item_add') {
			//В e.detail.content.fromOutsidePopup содержится булево занчение, указывающее что товар был добавлен в корзину не при помощи 
          	//кнопок "+" и "-" внутри попапа корзины. Может быть полезен поскольку сообщение "товар добавлен в корзину" не надо выводить, 
          	//когда корзина уже открыта.
            //Данные добавляемого товара (включая добавленное количество) находятся в e.detail.content.item. 
          	//e.detail.content.item.count - количество, добавленное за данную операцию, а не всего в корзине
		}
  
      	//удаление товара из корзины. Кнопкой удаления или клавишей минус. Не важно, удален ли товар или только уменьшено его количество.
        if (e.detail.type == 'cart_item_removed') {
          //Данные события аналогичны cart_item_add
        }
      
      	//Другие события:
        //init_complete - корзина инициализирована
      
        //item_removed - удаление товара из корзины. Выполнятеся вместе с cart_item_removed, но только в том случае если товар полностью удален, 
      	//а не только уменьшено количество
      
 		//order_created - создан заказ
	});
    
    //Собственно инициализация виджета корзины
    kaktusWidget({
      	domain: kak2c_domain,
      
      	//Если это значение указано, корзина будет работать не с продакшн, а с тестовым сервером Кактус. При создании аккаунта на продакшн,
        //на тестовом одноименный аккаунт автоматически не создается. Это надо учитывать при указании domain совместно с ключем host
      	host: '//app-test.kak2c.ru',
      
      	//Необязательные значения по умолчанию
      	default: {
          city: 'Москва', // выбранный город доставки по умолчанию
          promocode: 'promocodeName' // промокод, который будет применяться по умолчанию
        },
      
      	//Необязательные коллбэки. Назначение похоже на события выше.
      	basketClickCallback: function(){
          //Вызывается при открытии попапа корзины
        },

        newOrderCreatedCallback: function(){
          //Вызывается при создании заказа
        }
    });
    	
  };
</script>
```

Добавление или удаление товар из корзины:

```JavaScript
kaktusWidget.changeCart({
	variantId: 12345, //ID варианта товара. Можно посмотреть в ЛК2. Если у товара не задано несколько вариантов id единственного варианта будет равен id товара.
  	//variantExtId: 'AB123CD', - можно указать вместо variantId. Тогда поиск варианта товара будет выполняться не по id а по полю "Внешинй Id". 
  	//которому в ЛК можно задать любое произвольное значение. Например указать его равным артикулу товара. И таким образом реализовать добавление товара по артикулу.
	count: 1, //Количество добавляемых или удаляемых товаров
	operation: 'ADD' //или 'DELETE' 
});
```

Автоматическое добавление промокода:

```JavaScript
kaktusWidget.setDefaultPromocode('promocodeName'); // 'promocodeName' заменить на имя промокода
```

Примером использования событий и коллбэков корзины может служить [работа с аналитикой](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-google-analytics-%D0%B8-yandex-metrica-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B).

Визуальная настройка иконки корзины описана [здесь](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D1%81%D1%82%D0%B8%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B).

[Полная замена иконки корзины на кастомную](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0-%D0%B8%D0%BA%D0%BE%D0%BD%D0%BA%D0%B8-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B-%D0%BF%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%83%D1%8E). Тоже может служить примером работы с событиями для обновления количества товаров в кастомной корзине, а также вывода сообщения "товар добавлен в корзину".

# Настройка Google Analytics и Yandex Metrica для корзины

Базовая настройка аналитики:

```JavaScript
kaktusWidget({
	domain: kak2c_domain,
            
	basketClickCallback: function(){
    	//События аналитики при открытии корзины
      	yaCounter53862778.reachGoal('checkout_started');
      	gtag('event', 'checkout_started', {
        	'event_category' : 'ecommerce'
      	});
    },
 
    newOrderCreatedCallback: function(){
        //События аналитики при формированиии заказа
        var goalParams = {
          order_price: kaktusWidget.totalSum,
          currency: "RUB"
        }
        yaCounter53862778.reachGoal('checkout_finished', goalParams);
        gtag('event', 'checkout_finished', {
          'event_category' : 'ecommerce'
        });
    },
 });
```

dataLayer для расширенной электронной торговли Google Analytics совместно с Google Tag Manager корзина формирует автоматически. Также использование этого dataLayer можно настроить в Яндекс.Метрике: [https://yandex.ru/support/metrica/data/e-commerce.html](https://yandex.ru/support/metrica/data/e-commerce.html) . Если к Вашей странице не подключена библиотека gtm.js и не настроен данный режим Яндекс.Метрики, это не на что не влияет. Однако если Вы собираетесь формировать эти события вручную, данный автоматический функционал можно отключить. Для этого при инициализации kaktusWidget укажите параметр enableDataLayer: false;

Кроме описанных выше событий открытия корзины и формирования заказа также можно использовать события добавления и удаления товаров в корзину. Для этого перед инициализацией виджета корзины добавьте следующий код:

```JavaScript
document.addEventListener("kaktusEvent", function (e){
  if (e.detail.type == 'cart_item_add') {
    //Добавление товара в корзину. Данные добавляемого товара (включая добавленное количество) находятся в e.detail.content.item
  }
  
  if (e.detail.type == 'cart_item_removed') {
    //Удаление товара из корзины. Данные товара (включая удаляемое количество) находятся в e.detail.content.item
  }
});
```

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

```JavaScript
document.addEventListener("kaktusEvent", function (e){
  //создан заказ
  if (e.detail.type == 'order_created') {
    var content = e.detail.content;
    var cart = kaktusWidget.getCart();

    var items = cart.items.map(function (item) {
      return {
        "id": item.productId,
        "name": item.name,
        "price": item.price,
        "quantity": item.count,
        "brand": item.brandName,
      }
    });

    var tansaction = {
      "transaction_id": content.orderId,
      "value": content.totalOrderSum,
      "currency": "RUB",
      "items": items,
    }
    gtag('event', 'purchase', tansaction);
  }
});
```

# Стилизация корзины

Иконка корзины имеет следующую структуру

```HTML
<div className="basket-round">
	<span className="basket-count">1</span>
    <span className="basket-money">1234 ₽</span>
</div>
```

где

- `.basket-round` - собственно иконка
- `.basket-count` - кружочек с количеством товаров в корзине
- `.basket-money` - общая сумма товаров в корзине. Появляется в момент добавления в корзину товара и гаснет через некоторое время.

Задавая стили для этих классов в файле css Вашего сайта можно изменить внешний вид корзины. Например заменить цвет иконки корзины с черного на зеленый, а кружочек с количеством покупок из нижнего правого угла перенести в верхний левый:

```CSS
.basket-round {
	background-color: green !important;
}

.basket-count {
  top: 0 !important;
  left: 0;
  right: auto !important;
}
```

Также имеется возможность[ полностью заменить иконку корзины на кастомную](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0-%D0%B8%D0%BA%D0%BE%D0%BD%D0%BA%D0%B8-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B-%D0%BF%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%83%D1%8E), например вписанную в заголовок Вашего сайта.

# Замена иконки корзины по умолчанию на собственную

Для заменя иконки корзины по умолчанию на свою собственную, достаточно:

- Скрыть существующую иконку корзину (скрыть класс `.basket-round`)
- Создать свои иконку корзины с любым другим дизайном и указать для неё класс `.custom-shopping-cart`
- Если необходимо, в иконку корзины можно добавить иконку количества. Чтобы количество в ней обновлялось при любых действиях в корзине, нужно при событии `kaktusEvent` получать данные о товарах `kaktusWidget.getCart().items` и обновлять цифру в иконке количества
- Если необходимо, возможно сделать свой собственный попап "Товар добавлен в корзину". Для этого возможно при типе события `cart_item_add` отобразить свой попап.

Пример страницы с кастомной корзиной со всеми вышеперечисленными функциями:

```HTML

<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Кастомная корзина</title>

	<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
	<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">

	<style>
		/*Скрывает иконку корзины по умолчанию. Примечание: используя этот же css-класс корзину можно не скрывать, а изменить ее дизайн. */
	    .basket-round {
	        display: none;
	    }
	</style>

	<script>
	    document.addEventListener("DOMContentLoaded", function (){
	    	var kak2c_domain = "XXXXXX"; //	Укажите здесь Ваш идентификатор магазина

	    	document.addEventListener("kaktusEvent", function (e){
		        //Отображение количества товаров в корзине при любых его изменениях. Если Вашв иконка корзины не предусматривает отображения количества товаров - не обязетельно. ВНИМАНИЕ! 'custom-cart-quantity' заменить на ID элемента Вашей иконки корзины, в которой будет отображаться количество товаров.
		        var quantityEl = document.getElementById('custom-cart-quantity');
		        if (quantityEl) {
		        	var cart = kaktusWidget.getCart().items;
		        	if (cart) {
			        	var count = cart.reduce(function(count, item) {
			        		return count + item.count;
			        	}, 0);	
			        } else {
			        	count = 0;
			        }
		       		quantityEl.innerHTML = count;
		        };

		        //Сообщение "товар добавлен в корзину". Не обязательно.
		        if (e.detail.type == 'cart_item_add' && e.detail.content.fromOutsidePopup) {
		        	alert('Товар добавлен в корзину');
		        }
		    });

	    	kaktusWidget({
		        domain: kak2c_domain
		    });

	    	//ВНИМАНИЕ! 'custom-shopping-cart' замените на атрибут ID Вашей кастомной иконки, при клике на которую Вы хотите открывать попап корзины.
	        document.getElementById('custom-shopping-cart').addEventListener("click", function (){
	       		document.getElementsByClassName('basket-round')[0].click();     
	        });
	    });
	</script>
</head>
<body>
	<!--BODY документа здесь служит исключительно для примера. Вместо него предусмотрите логику добавления товара в корзину в зависисмости от используемой Вами интеграции с сайтом магазина. Также сверстайте свой кастомный элемент корзины. Для примера это просто ссылка с отображением количества товаров. -->
	<h1>Кастомная корзина</h1>	
	<div>
		<a href="javascript: void(0);" id="custom-shopping-cart">Корзина (всего товаров <span id="custom-cart-quantity">0</span>)</a>
	</div>

	<button onclick="kaktusWidget.changeCart({
        variantId: 'BR00T-000132',
        count: 1,
        operation: 'ADD'
    });">Добавить в корзину</button>
</body>
</html>
```

</body></html>

# Интеграция в Ecwid

1\. В настройках внешнего вида сайта Ecwid включите отображение артикула на странице товара. **Это важно для правильной работы виджета корзины Кактус.** Если Вы не хотите чтобы артикул отображался покупателю, его можно скрыть (см. комментарии в коде ниже). Но тем не менее включать в настройках его все равно обязательно.

Войдите в редактирование внешнего вида сайта.

[![image-1591995135914.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1591995135914.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1591995135914.png)

Затем магазин/страница товара

[![image-1591995301181.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1591995301181.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1591995301181.png)

[![image-1591995383089.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1591995383089.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1591995383089.png)

[![image-1591995451446.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1591995451446.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1591995451446.png)

2\. В поле "мета-теги для верификации сайта" после уже имеющегося там кода добавьте код интеграции виджета корзины Кактус. При этом вместо "XXXXX" не забудьте указать свой ID аккауната, который можно посмотреть в настройках ЛК Кактуса.

[![image-1591995599898.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1591995599898.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1591995599898.png)

```HTML
<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">
<style>
	.details-product-purchase__checkout, .float-icons__icon--cart, .ec-footer {
		display: none !important;
	}

	/* Необязательная возможность скрыть поле артикула на страницы товара. При надобности раскомментируйте */
	/*.product-details__product-sku {
		display: none !important;	
	} */
</style>

<script>
	document.addEventListener("DOMContentLoaded", function (){
    	var kak2c_domain = "shopXXXXXX"; //	Укажите здесь Ваш идентификатор магазина

    	kaktusWidget({
	        domain: kak2c_domain
	    });

    	document.body.addEventListener('click', function(e) {
    		if (e.target.closest('.details-product-purchase__add-to-bag, .details-product-purchase__add-more')) {
    			var sku = document.querySelector('.product-details__product-sku').textContent.replace(/артикул/gui, '').trim();
    			kaktusWidget.changeCart({
					variantExtId: sku,
					count: 1, 
					operation: 'ADD' 
				});
    			event.stopPropagation();
            	event.preventDefault();
    		}
    	}, {capture: true});

    });
</script>
```

3\. В ecwid задайте артикулы всем товарам. Если Вы не ведете артикулы, можно задать любое значение, лишь бы оно было уникально для каждого товара. Для товаров с вариантами нужно задать уникальный артикул для каждого варианта. И то же самое значение нужно указать в поле "Внешний ID" товара или варианта в ЛК Кактуса.

[![image-1591996199470.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1591996199470.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1591996199470.png)

[![image-1591996272639.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1591996272639.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1591996272639.png)

# Интеграция в Tilda

**1. Из ЛК Кактус перейдите в редактор интернет-магазина**

[![image-1592447531907.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592447531907.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592447531907.png)

Кликнув по иконке с изображением шестеренки откройте панель настроек витрины

[![image-1592447692555.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592447692555.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592447692555.png)

Выберите вкладку "Интеграции"

[![image-1592447798913.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592447798913.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592447798913.png)

В данной вкладке настройте счетчики Яндекс.Метрики и Google Analytics (не обязательно).

Переключатель "Режим работы по внешнему ID варианта" отвечает за то, какой код товара следует задавать в качестве "Артикула" в Тильде. Если он выключен - указывается ID товара из ЛК Кактуса. Если включен - внешний ID.

[![image-1592448931677.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592448931677.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592448931677.png)

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

> **Примечание**
> 
> При изменении любого значения во вкладке Интеграции, чтобы оно отразилось в Вашем магазине на Тильде надо заново скопировать в Тильду код виджета (см. п. 2)

**2. Скопируйте содержимое поля "Виджет корзины для конструктора Тильда" из вкладки "интеграции" витрины в Html-код для вставки внутрь HEAD в Тильде.**

Войдите в настройки сайта.

[![image-1593725864877.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/image-1593725864877.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/image-1593725864877.png)

Далее "еще", "Html-код для вставки внутрь HEAD"

[![image-1593726077346.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/image-1593726077346.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/image-1593726077346.png)

**После редактирования кода обязательно заново опубликуйте все страницы сайта!**

3\. Для всех товаров в Тильде в поле артикул задайте значение Id или внешнего Id (в зависимости от настроек из п.1) со страницы соответствующего товара ЛК Кактус.

[![image-1592449279579.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592449279579.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592449279579.png)

Для товаров с вариантами надо задать артикул каждого варианта в Тильде равный Id (или внешнему Id) соответствующего варианта в ЛК Кактус.

**4.Для того, чтобы связать товары в кактусе и в тильде по ID следует:**

**А.** Перейти на редактирование страницы сайта.

[![Screenshot_2.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/Screenshot_2.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/Screenshot_2.png)

В разделе где расположены товары нажать на кнопку «Контент».

[![Screenshot_3.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/Screenshot_3.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/Screenshot_3.png)

В карточке товара, который нужно связать следует нажать на «Еще: кнопка, метка, параметры».

[![Screenshot_4.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/Screenshot_4.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/Screenshot_4.png)

Найти поле «Подзаголовок или артикул» и вписать в него ID товара из кактуса.

[![Screenshot_5.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/Screenshot_5.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/Screenshot_5.png)

**Б.** Перейти в раздел товаров.

[![Screenshot_6.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/Screenshot_6.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/Screenshot_6.png)

Выбрать товар который нужный связать и нажать на него.

[![Screenshot_7.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/Screenshot_7.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/Screenshot_7.png)

В разделе товара нажать на кнопку "Контент".

[![Screenshot_8.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/Screenshot_8.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/Screenshot_8.png)

Найти поле «Подзаголовок или артикул» и вписать в него ID товара из кактуса.

[![Screenshot_9.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/Screenshot_9.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/Screenshot_9.png)

# Открытие попапа корзины при каждом добавлении в нее товара

Полное описание интеграции корзины находится [здесь](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2-%D0%B2%D0%B8%D0%B4%D0%B6%D0%B5%D1%82%D0%B0-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B). Нужно добавить следующий фрагмент кода:

```HTML
<script>	
    document.addEventListener("kaktusEvent", function (e){
    	if (e.detail.type == 'cart_item_add' && e.detail.content.fromOutsidePopup) {
           document.getElementsByClassName('basket-round')[0].click();
        }
    });
</script>
```

***Примечание:** Если у Вас уже есть обработчик события kaktusEvent с другой логикой, рекомендуется еще один не создавать, а добавить в конец существующего (если параметр обработчика у Вас называется не "e", не забудьте заменить его имя в коде ниже):*

```JavaScript
if (e.detail.type == 'cart_item_add' && e.detail.content.fromOutsidePopup) {
  document.getElementsByClassName('basket-round')[0].click();
}
```

# Интеграция в LPMotor

### Подключение виджета умной корзины Кактус

Войдите в общие настройки сайта

[![image-1593529592525.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593529592525.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593529592525.png)

[![image-1593529658594.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593529658594.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593529658594.png)

В поле "Вставка в тэг head" добавьте следующий код

[![image-1593529788777.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593529788777.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593529788777.png)

```HTML
<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">

<script>
    var kak2c_domain = "shopXXXXXX";

    document.addEventListener("DOMContentLoaded", function (){
        kaktusWidget({
            domain: kak2c_domain,
        });

        var buttons=document.querySelectorAll('a[href^="#order"]');

        if (buttons.length) {
	        buttons.forEach(function(elem) {
	        	elem.addEventListener('click', function(event) {
		            event.preventDefault();
		            event.stopPropagation();
		            var article = $(this).attr('href').replace(/^#order:?/gi, '').trim();
		            if (article) {
		                kaktusWidget.changeCart({
							variantId: article, 
							count: 1, 
							operation: 'ADD' 
						});
		            }
		        })
	        });
	    }
    });
    
</script>
```

**Внимание! В строке**

**var kak2c\_domain = "shopXXXXXX";**

**XXXXXX заменить на ID аккаунта, который можно посмотреть в настройках ЛК Кактус.**

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

Войдите в редактор страницы IPMotor. Добавьте на Вашу страницу новую кнопку.

[![image-1593530247544.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593530247544.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593530247544.png)

[![image-1593530288683.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593530288683.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593530288683.png)

Кликните на эту кнопку, затем войдите в ее редактирование. Выберите Действие - "Переход по ссылке"

[![image-1593530593983.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593530593983.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593530593983.png)

В качестве ссылки задайте следующую строку (начиная со знака "#", без пробелов)

```
#order:XXXX
```

Вместо XXXX укажите ID товара, который должна добавлять в корзину эта кнопка. ID товара можно посмотреть в личном кабинете Кактуса:

[![image-1593530876179.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1593530876179.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1593530876179.png)

***Примечание:** для товаров с вариантами нужно указывать ID варианта.*

Вместо ID товара или варианта можно использовать артикул, который в этом случае указывается в поле "Внешний ID" ЛК Кактуса. Для этого нужно изменить код из предыдущего раздела: фрагмент

```JavaScript
 kaktusWidget.changeCart({
   variantId: article, 
   count: 1, 
   operation: 'ADD' 
 });
```

Заменить на

```
kaktusWidget.changeCart({
   variantExtId: article, 
   count: 1, 
   operation: 'ADD' 
 });
```

# Интеграция в WordPress

### При наличии WooCommerce (или одной из тем, базирующихся на нем)

1\. Зайти в редактор тем WP и найти там файл, содержащий head всех страниц. Обычно он называется header.php

[![image-1594993490487.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/image-1594993490487.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/image-1594993490487.png)

2\. Добавить в &lt;head&gt; страницы следующий код:

```HTML
  <script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
  <link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css"> 
  <script>
    var kak2c_domain = "shopXXXX";
      document.addEventListener('DOMContentLoaded', function () {
      kaktusWidget({
            domain: kak2c_domain,
		  
        	//Аналитика. Это примерный код. Вместо YYYY подставьте ID вашего счетчика Яндекс. 
        	//Если Вы используете счетчик, отричный от Яндекс.Метрики замените этот код на код Вашей метрики. 
        	//Необязательно. Если аналитика вообще не нужна, удалите франмент до комментария "Конец аналитики"
		  	basketClickCallback: function(){
				//События аналитики при открытии корзины
				yaCounterYYYY.reachGoal('checkout_started');
			},

            newOrderCreatedCallback: function(){
              //События аналитики при формированиии заказа
              var goalParams = {
                order_price: kaktusWidget.totalSum,
                currency: "RUB"
              }
              yaCounterYYYY.reachGoal('checkout_finished', goalParams);
            },
        	//Конец Аналитики
          });
       
      //Лисенер клика по кнопке "купить"
      jQuery('body').on('click', "a[href='#buy']", function(e){
        e.preventDefault();
		var varForm = jQuery(this).closest('.variations_form');
		var article = '';
		if (varForm.length) {
			//Товар с вариантами
			var variations = JSON.parse(varForm.attr('data-product_variations'));
			var variationId = varForm.find('input.variation_id').val();
			if (!variationId) {
				return;
			}
			variations.some(function(variation) {
				if(variation.variation_id == variationId) {
					article = variation.sku;
					return true;
				}
			});
		} else {
			article = jQuery(this).data('itemId');	
		}
		if (article) {
			kaktusWidget.changeCart({
				variantExtId: article, 
				count: 1, 
				operation: 'ADD', 
			});
		}
      });
    }); 
  </script>  
```

**Внимание! Вместо "XXXXX" не забудьте указать свой ID аккауната, который можно посмотреть в настройках ЛК Кактуса.**

**Вместо YYYY - ID Вашего счетчика в Яндекс.Метрике. Или если Вы не используете Яндекс.Метрику - удалите код аналитики (см. комментарии по коду). [Подробное руководство по подключению аналитики.](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-google-analytics-%D0%B8-yandex-metrica-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B)**

3\. Найдите в коде темы все кнопки, при нажатии на которые товар должен добавляться в корзину. Файлы в которых они расположены зависят от темы. Возможно этих файлов вообще нет в теме, тогда их надо создать скопировав из кода плагина Woocommerce (см. документацию WP по созданию тем). И модифицируйте их код наподобие следующего:

&lt;**a href="#buy" data-item-id="&lt;?php echo $product-&gt;sku ?&gt;"** name="add-to-cart" class="single\_add\_to\_cart\_button button alt"&gt;&lt;?php echo esc\_html( $product-&gt;single\_add\_to\_cart\_text() ); ?&gt;&lt;/a&gt;

Выделенный жирным фрагмент (включая, что кнопка должна представлять из себя именно тег &lt;a&gt;) важен для правильной работы кнопки. Остальной код рекомендуется не копировать отсюда а оставить тот который есть в теме, чтобы сохранить внешний вид кнопки. Или кастомизировать на свое усмотрение.

4\. В каталоге товаров WP проставьте для всех товаров Артикул (или любой другой удобный Вам идентификатор лишь бы он был уникален для каждого товара и варианта). Для простого товара:

[![image-1594995617940.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/image-1594995617940.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/image-1594995617940.png)

Для вариантного товара. **Важно!** Это нужно сделать отдельно для каждого варианта:

[![image-1594995883927.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/scaled-1680-/image-1594995883927.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-07/image-1594995883927.png)

5\. Такие же артикулы нужно проставить в полях "Внешинй ID" товаров (или вариантов для товаров с вариантами) в ЛК Кактуса. **Важно!** Сопоставление товаров в ЛК Кактус выполняется именно по полю "Внешний ID", а не Артикул.

### Без WooCommerce (каталог товаров отсутствует, кнопка "Добавить в корзину" добавляется вручную к верстке и вручную привязывается ко внешнему ID товара в Кактусе)

В п.2 добавить следующий код:

```HTML
<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">

<script>
    var kak2c_domain = "shopXXXXXX";

    document.addEventListener("DOMContentLoaded", function (){
        kaktusWidget({
            domain: kak2c_domain,
        });

        var buttons=document.querySelectorAll('a[href^="#buy"]');

        if (buttons.length) {
	        buttons.forEach(function(elem) {
	        	elem.addEventListener('click', function(event) {
		            event.preventDefault();
		            event.stopPropagation();
		            var article = $(this).attr('href').replace(/^#buy:?/gi, '').trim();
		            if (article) {
		                kaktusWidget.changeCart({
							variantExtId: article, 
							count: 1, 
							operation: 'ADD' 
						});
		            }
		        })
	        });
	    }
    });
    
</script>
```

**Внимание! Вместо "XXXXX" не забудьте указать свой ID аккауната, который можно посмотреть в настройках ЛК Кактуса.**

Код приведен без аналитики. Если она нужна, она будет аналогична варианту с Woocommerce, можно скопировать оттуда. [Подробное руководство по подключению аналитики.](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-google-analytics-%D0%B8-yandex-metrica-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B)

3\. В верстку добавить кнопки добавления товара в корзину

&lt;a href="#buy:NNNNNN"&gt;Добавить в корзину&lt;/a&gt;

где вместо NNNNNN указать Внешний ID товара или варианта (для товара с вариантами) из ЛК Кактус. Код приведен в минимально необходимом для работы кнопки виде. Скорее всего к нему следует добавить классы или стили для придания кнопке желаемого вида. А также заменить текст кнопки.

пп.4 не нужен. Но нужно задать всем товарам и вариантам в ЛК Кактус внешний ID, как это описано в п.5.

> **Внимание! Весь код в этом руководстве сильно зависит от используемой темы WP и может потребоваться его модификация.**

# Интеграция с Platforma LP

Для интеграции корзины Кактус необходимо зайти в админку сайта на Platforma LP и открыть настройки необходимой страницы.

[![image-1599743103520.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743103520.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743103520.png)

В разделе Метрика и скрипты нажать кнопку "Добавить плагин".

[![image-1599743214067.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743214067.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743214067.png)

В открывшемся списке выбрать "Произвольный код".

[![image-1599743302089.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743302089.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743302089.png)

Плагину нужно задать имя, и в "Произвольный код HEAD" вставить следующее:

```JavaScript
<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">

<script>
    var kak2c_domain = "shopXXXXXXX";

    document.addEventListener("DOMContentLoaded", function (){
        kaktusWidget({
            domain: kak2c_domain,
        });

    });
  
  function add2cart(item) {
    kaktusWidget.changeCart({
    variantId: item, 
    count: 1, 
    operation: 'ADD' 
    });
  }
    
</script>
```

**<span style="color: #ff0000;">shopXXXXXXX необходимо заменить на ID магазина в формате shop + ID аккаунта в Кактусе (можно найти в настройках).</span>**

[![image-1599743609300.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743609300.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743609300.png)

[![image-1599743366265.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743366265.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743366265.png)

Сохранить плагин и проверить, что он включён.

[![image-1599743677656.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743677656.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743677656.png)

Далее открыть редактор страницы.

[![image-1599743726898.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743726898.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743726898.png)

Для кнопки "Купить" выбрать действие "Выполнить Javascript" и в соответствующее поле вставить:

```JavaScript
add2cart('1040');
```

<span style="color: #ff0000;">1040 -- ID товара в Кактусе, который можно найти в ЛК Кактус в разделе Товары.</span>

[![image-1599743900864.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743900864.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743900864.png)

[![image-1599743766033.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599743766033.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599743766033.png)

# Интеграция с MODX

##### Установка корзины Кактус в CMS MODX

В панели управления MODX перейти в Элементы - Шаблоны. Составляющие вашего магазина на MODX можно кастомизировать по своему усмотрению. В случае, на примере которого описана инструкция, необходимо зайти в шаблон Home.

[![image-1599723877215.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599723877215.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599723877215.png)

В открывшемся поле с кодом шаблона в тег head вставить следующее:

```JavaScript
<!-- умная корзина kak2c -->
	<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
	<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">
	
	<script>
  document.addEventListener("DOMContentLoaded", function (){
	 var kak2c_domain = "shopXXXXXX";
	 kaktusWidget({
      	domain: kak2c_domain,
      
      	//Необязательные коллбэки. Назначение похоже на события выше.
      	basketClickCallback: function(){
          //Вызывается при открытии попапа корзины
        },

        newOrderCreatedCallback: function(){
          //Вызывается при создании заказа
        }
    });
    $(".open-cart").on('click', function(event) {
            event.stopPropagation();
            event.preventDefault();
            var productId = $(this).data('productId');
            console.log('productId: ' + productId);
            kaktusWidget.changeCart({
							variantId: productId,
							count: 1, 
							operation: 'ADD'
						});
						setTimeout(function () {
							$(".basket-round").click();
						}, 1000);	
			
		});
  });
	</script>
	
	<!-- /умная корзина kak2c -->
```

shopXXXXXX необходимо заменить на ID аккаунта, который можно найти в ЛК Кактус в Настройках.

##### Установка кнопки "Купить"

Зайдите в раздел Элементы - Чанки и выберите необходимый чанк, в котором будет размещаться кнопка.

[![image-1599725491274.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599725491274.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599725491274.png)

Код кнопки:

```JavaScript
	<a href="javascript:void(0);" class="shop__btn btn add_item open-cart quick-order__link" data-product-id="[[+productId]]">Купить</a>
```

##### Связка товаров

Для корректной интеграции товаров необходимо поле идентификатора, связывающее товары, заведённые в MODX, с товарами в Кактусе.

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

[![image-1599726178307.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599726178307.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599726178307.png)

Создать новое дополнительное поле tvproductId

> Инструкцию о создании дополнительных полей в MODX можно найти [здесь](https://itchief.ru/lessons/modx-revo/modx-tv).

[![image-1599728980346.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599728980346.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599728980346.png)

После чего данное поле необходимо добавить в существующую форму товара.

[![image-1599728674473.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599728674473.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599728674473.png)

[![image-1599729233460.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599729233460.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599729233460.png)

После этого в разделе с товарами появится искомая колонка.

[![image-1599726178307.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599726178307.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599726178307.png)

ID товара можно найти в Личном кабинете Кактуса в разделе Товары - Все товары в карточке искомого товара.

[![image-1599729503730.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/scaled-1680-/image-1599729503730.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-09/image-1599729503730.png)

# Интеграция с Shop-Script

Для установки умной корзины Кактус в магазин на Shop-Script зайдите в админку магазина, перейдите во вкладку Сайт и откройте Настройки сайта.

В поле "Дополнительный JavaScript-код для вставки перед закрывающим тегом &lt;/head&gt;" вставьте приведённый ниже код.

[![image-1602146343628.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1602146343628.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1602146343628.png)

```JavaScript
<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">

<script>
    var kak2c_domain = "shopXXXXXXX";

    document.addEventListener("DOMContentLoaded", function (){
        kaktusWidget({
            domain: kak2c_domain,
        });
    
    //
    $('.js-submit-button').on('click', function(event) {
      event.stopPropagation();
      event.preventDefault();
      var productExtId = $('input[name ="product_id"]').val();
      console.log("product_id: " + productExtId);
      add2cart(productExtId)
    });

    });
  
  function add2cart(item) {
    kaktusWidget.changeCart({
    variantExtId: item, 
    count: 1, 
    operation: 'ADD' 
    });
  }
    
</script>
```

<span style="color: #ff0000;">**shopXXXXXXX нужно взять в ЛК Кактус в Настройках, где XXXXXXX -- это ID вашего аккаунта.**</span>

[![image-1602146715636.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1602146715636.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1602146715636.png)

После этого в админке Shop-Script перейти во вкладку Магазин, выбрать раздел Товары -- Все товары. ID товара в Shop-Script необходимо скопировать во Внешний ID товара в Кактусе.

[![image-1602147118068.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1602147118068.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1602147118068.png)

[![image-1602147196099.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1602147196099.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1602147196099.png)

# Интеграция с Magento

##### Установка корзины

Зайдите в админку вашего сайта на Magento. На панели управления выберите "Система", и в выпадающем списке выберите "Конфигурация".

[![image-1603772933609.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1603772933609.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1603772933609.png)

В Конфигурации выбрать Дизайн.

[![image-1603772990559.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1603772990559.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1603772990559.png)

В разделе Дизайн выбрать HTML заголовок, после чего выбрать Разнообразные скрипты.

[![image-1603773031936.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1603773031936.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1603773031936.png)

[![image-1603773068066.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1603773068066.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1603773068066.png)

Вставить в поле следующее:

```JavaScript
<!-- Kak2c checkout -->
<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">

<script>
  document.addEventListener("DOMContentLoaded", function (){
	var kak2c_domain = "shop4547084"; //	Укажите здесь Ваш идентификатор магазина
    
    //Собственно инициализация виджета корзины
    kaktusWidget({
      	domain: kak2c_domain,
      
      	//Необязательные коллбэки. Назначение похоже на события выше.
      	basketClickCallback: function(){
          //Вызывается при открытии попапа корзины
        },

        newOrderCreatedCallback: function(){
          //Вызывается при создании заказа
        }
    });
	
	var add2cartButtons = document.getElementsByClassName("addtocart");
	for (var i = 0; i < add2cartButtons.length; i++) {
		//add2cartButtons[i].addEventListener('click', add2cart, false);
		addSomeEvent('click', add2cartButtons[i], add2cart);
	}
	
	var add2cartButtons2 = document.getElementsByClassName("btn-cart");
	for (var i = 0; i < add2cartButtons2.length; i++) {
		//add2cartButtons2[i].addEventListener('click', add2cart2, false);
		addSomeEvent('click', add2cartButtons2[i], add2cart2);
	}
    	
  });
  
function getProductExtId(onClickString) {
	var startIndex = onClickString.indexOf('/product/') + 9;
	var endIndex = onClickString.indexOf('/form_');
	return onClickString.substring(startIndex, endIndex);
}

function addSomeEvent(evnt, elem, func) {
   if (elem.addEventListener)  // W3C DOM
      elem.addEventListener(evnt,func,false);
   else if (elem.attachEvent) { // IE DOM
      elem.attachEvent("on"+evnt, func);
   }
   else { // No much to do
      elem["on"+evnt] = func;
   }
}

var add2cart = function() {
    var attribute = this.getAttribute('onclick');
	var extId = getProductExtId(attribute);
	console.log(extId);
	kaktusWidget.changeCart({
		variantExtId: extId,
		count: 1, 
		operation: 'ADD'
	});
};
var add2cart2 = function() {
	var offerFormAction = document.getElementById("product_addtocart_form").getAttribute('action');
	var qtyVal = parseInt(document.getElementById("qty").value);
	var extId = getProductExtId(offerFormAction);
	console.log(extId);
	kaktusWidget.changeCart({
		variantExtId: extId,
		count: qtyVal, 
		operation: 'ADD'
	});
	
}; 

//# sourceURL=kak2cInit.js
</script>
<!-- /Kak2c checkout -->
```

<span style="color: #ff0000;">**Внимание! В shopXXXXXXX вместо XXXXXXX нужно указать ваш идентификатор магазина в ЛК Кактус в разделе Настройки -- Общие.**</span>

[![image-1603774130751.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1603774130751.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1603774130751.png)

##### Связка товаров

В админке сайта зайти в Каталог и найти товары. Значения ИД из Magento скопировать в поле Внешний ID в ЛК Кактус.

[![image-1603773342352.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1603773342352.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1603773342352.png)

Внешний ID можно найти непосредственно в карточке товара в ЛК Кактус.

[![image-1603773705473.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/scaled-1680-/image-1603773705473.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-10/image-1603773705473.png)

# Интеграция с Insales

##### Установка корзины Кактус в Insales

В админ панели Insales перейти в Настройки &gt; Настройки сайта &gt; Счётчики и коды.

[![image-1629731155571.png](https://wiki.kak2c.ru/uploads/images/gallery/2021-08/scaled-1680-/image-1629731155571.png)](https://wiki.kak2c.ru/uploads/images/gallery/2021-08/image-1629731155571.png)

В поле "JavaScript-код для вывода на всех страницах магазина" вставить следующее:

```JavaScript
<script src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<link rel="stylesheet" href="https://static.kak2c.ru/v2/kak2c.checkout.css">
<script>
   document.addEventListener("DOMContentLoaded", function (){
        kaktusWidget({
            domain: "shopXXXXXXX",            
        });
     	$('.header__cart').hide();
        $('.add-cart-counter__btn').on('click', function(event) {
            event.stopPropagation();
            event.preventDefault();
            var extId = $('.sku-value').text();
            if (extId) {
				console.log('extId: ' + extId)
                kaktusWidget.changeCart({
                    variantExtId: extId,
                    count: 1,
                    operation: 'ADD'
                });
            }
        });
    });
  //# sourceURL=kak2c_cart.js
</script>
```

> Код для вставки выше проверялся на работоспособность только с шаблоном дизайна "Fourth". Работоспособность на других шаблонах не гарантируется.
> 
> В зависимости от используемого вами шаблона вам может понадобиться изменить определённые детали в скрипте для его корректной работы.

В shopXXXXXXX значение XXXXXXX необходимо заменить на ID аккаунта, который можно найти в ЛК Кактус в Настройках.

Для оптимальной работы корзины поле **Внешний ID** в карточке товара в Кактусе должно совпадать с **Артикулом** товара в InSales.

Обратите внимание, что заказы, оформляющиеся через корзину Кактуса, автоматически попадают в ЛК Кактуса, минуя админку InSales.

# Карта ПВЗ

Подключение виджета:

```JavaScript
<link href="https://static.kak2c.ru/kak2c.pvz-map.css" rel="stylesheet">
<script type="text/javascript" src="https://static.kak2c.ru/kak2c.pvz-map-2.js"></script>
 
<script>
     
    //пример функции открытия виджета
    function openKaktusWidget(){
      window.kaktusMap.openWidget({
          city_from: 'Москва',
          city_to: 'Санкт-Петербург',
          dimensions: {
            height: 10, //Размеры, см
            width: 10,
            depth: 10,
          },
          weight: 600, //Вес, гр
          deliveryServices: ['PARTIAL_DELIVERY', 'TRYING'] //примерный формат выбранных сервисов
       });
    }
 
    document.addEventListener('DOMContentLoaded', () => {
      //Инициализация виджета. Должна вызываться после полной отрисовки страницы. 
      kaktusMap({  
        domain: 'shop000000', //здесь нужно указать домен в системе kak2c
        host: '//app.kak2c.ru'
      });
    });
 
    //Пример подписки на события виджета
    document.addEventListener('kaktusEvent', function(event) {
        console.log(event.detail);
    });
 
</script>
```

Пример подключенного виджета можно посмотреть здесь:

[https://static.kak2c.ru/pvz\_map\_test.html](https://static.kak2c.ru/pvz_map_test.html)

2\. Событие (kaktusEvent) при выборе ПВЗ пользователем

```JavaScript
//Пример подписки на события виджета
    document.addEventListener('kaktusEvent', function(event) {
        console.log(event.detail);
    });
 
//содержимое event.detail:
{
   "type":"get_delivery_point",
   "content":{
      "address":{
         "country":"Россия",
         "countryCode":"RU",
         "region":"Москва",
         "area":null,
         "city":"Москва",
         "settlement":null,
         "street":null,
         "house":null,
         "block":null,
         "building":null,
         "flat":null,
         "fullAddress":"117148, Москва г, Брусилова ул, д.39, корпус 1",
         "fullCity":null,
         "rawData":null,
         "zip":null,
         "regionFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
         "areaFias":null,
         "cityFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
         "settlementFias":null
      },
      "code": "17719", //ИД ПВЗ
      "courier": "Boxberry",
      "courierCode": "BOXBERRY",
      "courierPostamatType": "СПВЗ",
      "deliveryServices":[
         "TRYING",
         "CHECK_CONTENT",
         "PARTIAL_DELIVERY"
      ], //доступные доп.опции доставки в данном пвз
      "description": "Остановка -  4-й микрорайон Щербинки.\nПримерное расстояние от остановки до Отделения  -  100 м.\n24-этажный жилой дом.\nРасположение входа в отделение  -  Отдельный вход со стороны улицы (автостоянки).\nЭтаж  -  1.",
      "latitude": "55.501896",
      "longitude": "37.599239",
      "maxSize": "234",
      "maxWeight": 15,
      "metroStation": "Щербинка",
      "paymentMethods":[
         "COD_CASH",
         "COD_CARD"
      ],
      "type": "PVZ",
      "workTime": "Пн  10 00-20 00 Вт  10 00-20 00 Ср  10 00-20 00 Чт  10 00-20 00 Пт  10 00-20 00 Сб  10 00-20 00 Вс  10 00-20 00"
      "downloaded":true,
      "price":120
   }
}
```

# Витрина Кактус

# Подключение каталога Кактус через IFrame

В заголовок или в тело страницы добавьте код:

```HTML
<link href="https://static.kak2c.ru/v2/kak2c.checkout.css" rel="stylesheet">
<script type="text/javascript" src="https://static.kak2c.ru/v2/kak2c.checkout.js"></script>
<script type="text/javascript" src="https://storefront.kak2c.ru/js/iframe-outer.js"></script>
<link href="https://storefront.kak2c.ru/css/iframe-outer.css" rel="stylesheet">
<script>
    document.addEventListener("DOMContentLoaded", function (){
        cactusStorefront({idshop: 'shopXXXXXX'});
    });
</script>
```

Где вместо **shopXXXXXX** указать домен Вашего магазина.

Этот код надо добавлять также на страницы сайта где не будет отображаться каталог товаров, но нужно выводить корзину, строку поиска по каталогу или избранную категорию.

В то место верстки, где должен отображаться каталог товаров добавить код:

```HTML
<iframe id="cactus-container" frameborder=0 scrolling="no" style="width:100%;" data-home-page="/" data-other-page="/catalogue"></iframe>
```

В атрибутах data-home-page и data-other-page необходимо указать URI страниц Вашего сайта на которых будет отображаться соответственно главная страница каталога и все другие страницы. Т.е. Вы на своем сайте можете сверстать 2 разные страницы для каталога. Одну для главной страницы например с большим баннером. Вторую, более компактную — для всех других страниц каталога: страницы коллекции, страницы товара и пр. Если на Вашем сайте главная и все другие страницы каталога будут отображаться в одинаковом окружении – просто укажите обеим этим атрибутам одно и то же значение. В приведенном выше примере главная страница каталога отображается на корневой странице сайта. А все другие страницы – на странице *catalogue.* В верстке обеих указанных в атрибутах data-home-page и data-other-page страниц вашего сайта должен быть вставллен приведенный выше код.

***Примечание 1****: URI — это URL без доменного имени. Т.е. если страница Вашего сайта на которой находится каталог называется [http://www.mysite.ru/mykatalog](http://www.mysite.ru/mykatalog), нужно указать «/mykatalog».*

***Примечание 2**: Для тестового окружения строки*

```HTML
<script type="text/javascript" src="https://storefront.kak2c.ru/js/iframe-outer.js"></script>
<link href="https://storefront.kak2c.ru/css/iframe-outer.css" rel="stylesheet">
```

*Заменить на*

```HTML
<script type="text/javascript" src="https://storefront-test.kak2c.ru/js/iframe-outer.js"></script>
<link href="https://storefront-test.kak2c.ru/css/iframe-outer.css" rel="stylesheet">
```

#### Блок избранной коллекции (не обязательно)

```HTML
<iframe class="cactus-favorite" frameborder=0 scrolling="no" style="width:100%;" data-home-page="/iframe-page" data-other-page="/iframe-page/slave" data-collection-id="XXXX"></iframe>
```

Блоки избранных коллекций можно размещать как на странице с блоком каталога так и без него. На одной странице может быть несколько таких блоков. На странице которая задана как "неглавная" в атрибутах data-other-page всех блоков обязательно должен быть блок каталога.

**Вместо XXXX укажите Id коллекции, которую будет отображать блок.**

Описание атрибутов data-home-page и data-other-page см. выше. **Внимание! эти атрибуты должны быть заданы одинаково у всех имеющихся на сайте блоков каталога и избранных коллекций. Даже если на одной странице имеется несколько таких блоков, эти атрибуты необходимо задать им всем с одинаковыми значениями.**

#### Строка поиска по каталогу (не обязательно)

```HTML
<input type="text" id="cactus-search-input" class="cactus-search-autocomplete">
<button id="cactus-search-button" type="button">Искать</button>
<script>
    document.addEventListener("DOMContentLoaded", function (){
        document.getElementById('cactus-search-button').addEventListener("click", function (){
            var val = document.getElementById('cactus-search-input').value;
            if (val.trim()) {
                window.location.hash = '#/search?query=' + val;
            }
        });
    });
</script>
```

Код примерный. Элемент ввода строки поиска и элемент собственно запускающий поиск необязательно должны быть input и button. ID элементов может быть произвольный. Чтобы запустить поиск достаточно присвоить странице с витриной хэш #/search?query=искомая строка. Но чтобы работал suggestion (т.е. подсказка, появляющаяся по мере ввода пользователем значения) элемент ввода должен быть input type="text" и иметь класс cactus-search-autocomplete.

#### Кастомный значок корзины (не обязательно)

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

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://docs.kak2c.ru/download/thumbnails/26771543/image2020-4-18_0-14-9.png?version=1&modificationDate=1587158180561&api=v2)</span>

Код для примера представляет собой просто надпись «корзина» с количеством товаров. При клике на него откроется штатный попап корзины.

```HTML
<a href="javascript: void(0);" id="cactus-cart" class='cactus-cart_empty'>
    Корзина: <span id="cactus-cart-quantity" class='cactus-cart_empty'>0</span>
</a>
```

id cactus-cart и cactus-cart-quantity должны быть именно такими, как указаны в примере. cactus-cart — элемент при клике на который должен открываться попап корзины.

сactus-cart-quantity – элемент, в который помещается текущее количество товаров в корзине

Класс cactus-cart\_empty добавляется обеим этим элементам когда корзина пуста. Может использоваться для различной стилизации пустой или непустой корзины.

Чтобы скрыть штатную иконку корзины нужно добавить следующий стиль:

```HTML
<style>
    .basket-round {
        display: none;
    }
</style>
```

***Примечание:** описанный здесь способ замены штатного значка корзины будет работать только совместно с витриной Кактус. Если Вы используете виджет корзины отдельно от витрины, воспользуйтесь [этим руководством](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0-%D0%B8%D0%BA%D0%BE%D0%BD%D0%BA%D0%B8-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%8B-%D0%BF%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%83%D1%8E).*

# Редактирование шаблона сайта

Шаблоны позволяют настроить внешний вид витрины путем правки HTML-верстки и CSS-стилей страниц. В отличие от настроек параметров витрины эта возможность предполагает некоторые знания в верстке и Веб-разработке. Но если результат не будет соответствовать ожидаемому, Вы всегда сможете сбросить шаблоны на значение по умолчанию.

Из ЛК Кактус войдите в редактор Интерннт-магазина, откройте админпанель и выберите в ней вкладку "шаблоны".

[![image-1592831349565.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592831349565.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592831349565.png)

[![image-1592831426154.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592831426154.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592831426154.png)

[![image-1592831610273.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592831610273.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592831610273.png)

Слева имеется список шаблонов, каждый из которых отвечает за отображение определенного компонента витрины. Шаблоны бывают двух видов. Стили - это обычный css:

[![image-1592831904009.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592831904009.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592831904009.png)

Для простоты то что возможно рекомендуется делать именно при помощи редактирования стилей. Например чтобы скрыть ненужный элемент проще всего задать ему стиль display: none; Имя CSS-класса соответствующего элемента можно найти в инспекторе браузера, который открывается по F12.

[![image-1592832149214.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592832149214.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592832149214.png)

HTML разметка представляет собой шаблоны популярного фреймворка VueJS. Это по сути html-код, но с добавлением полей (красная рамка) и директив (синяя рамка):

[![image-1592832876559.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592832876559.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592832876559.png)

Синтаксис шаблонов описан в [документации Vue](https://ru.vuejs.org/v2/guide/).

Изменения в шаблоне сохраняются в три этапа. Что позволяет Вам разрабатывать и отлаживать свой код сколько угодно времени. А Ваши покупатели при этом будут видеть предыдущую, стабильную, уже отлаженную версию магазина.

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

Чтобы сохранить шаблон как черновик нажмите кнопку:

[![image-1592836465530.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592836465530.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592836465530.png)

Изменения не пропадут при выходе из браузера. Но будут видны только если Вы вошли из ЛК в витрину в режиме редактора. Покупатели их по-прежнему не увидят.

Чтобы сделать изменения видимыми покупателю нажмите кнопку:

[![image-1592836711746.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592836711746.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592836711746.png)

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

Можно удалить все Ваши изменения шаблона независимо от того опубликованы они или нет и вернуть магазин к версии по умолчанию:

[![image-1592836873239.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592836873239.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592836873239.png)

### Пример. Правка на странице товара.

Заменим надпись "Весь товар сертифицирован" на ссылку на страницу контактов.

[![image-1592838821051.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592838821051.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592838821051.png)

Находим отмеченный красной рамкой шаблон.

[![image-1592839163796.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592839163796.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592839163796.png)

Заменяем текст в синей рамке на следующий:

```HTML
<router-link class="cactus-item__page cactus-color__hover-text"
	to="/contacts"
>
	<i class="fe-phone cactus-item__page-icon"></i>
	<div class="cactus-item__page-title">Контакты</div>
</router-link>
```

Нажимаем кнопку "Сохранить". Смотрим полученный результат:

[![image-1592839520783.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592839520783.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592839520783.png)

Если он нас устраивает, возвращаемся в редактор шаблонов и нажимаем кнопку "Опубликовать", Чтобы результат стал виден покупателям.

# Авторизация

Необходимо во всех вызовах, кроме регистрации указывать имя текущего домена в заголовках запроса (Header) в параметре Domain. Значение Domain - shop + ид аккаунта из общих настроек в ЛК. Например, если ид аккаунта 18236, то значение должно быть: shop18236  
Подробнее про данный вид авторизации - в разделе "Авторизация по домену в публичных методах апи"  
  
Если в вызове нет /pub, /dlv, /prompter - (например /api/lite/products) - то нужно дополнительно указывать токен доступа, полученный в методе регистрации/авторизации (/api/lite/auth)

# /api/lite/auth

### Авторизация

**/api/lite/auth**

Для авторизации необходимо выполнить следующий запрос

```JSON
{
"login":"wow55@mail.ru",
"password":"wow"
}
```

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

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

```JSON
{
  "success": true,
  "access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ3b3c1NkBtYWlsLnJ1IiwiZXhwIjoxNTQ2OTc2NzQ5fQ.4Zdev5PSIk1TmsPFxjxHukYwH1wa_efn19cfLIkT8k2g9xEeVMOnYK4A4pTC6NCpsp2kq8_dvygRxAyyEKNwiQ",
  "token_type": "bearer",
  "login": "wow56@mail.ru",
  "expires_in": 14400,
  "privileges": [
    "ORDERS_READ",
    "ORDERS_WRITE"
  ]
}
```

где access\_token содержит токен для доступа в закрытую часть апи Lite, а

expires\_in - количество секунд действительности выданного токена.

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

```JSON
{
"success": false,
"errors": [
 {
 "code": 401,
 "message": "Unauthorized"
 }
]
}
```

с http кодом 401.

**Для последующих методов,** использовать ключ токена следующим образом:

в запросе должен быть header

с ключем Authorization

и значением вида "Bearer {access\_token}"

например Bearer

`eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ3b3c1NUBtYWlsLnJ1IiwiZXhwIjoxNTQ2ODA3MjU3fQ.1vSO5DXhewQfjKITK76W8JhEZM_Wx2YgyEbdjfg9GDs0ymtRtmRgFuZen_n8fM00H1Uda_i6M2-Y1PbjN4edZA`

После истечения срока действительности токена - апи будет выдавать ошибку

```JSON
{
"success": false,
"errors": [
 {
 "code": 401,
 "message": "Unauthorized"
 }
]
}
```

С http кодом 401

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

# Авторизация для сторонних приложений

Для получения токена авторизации в системе необходимо перенаправить пользователя на адрес

https://lk2.kak2c.ru/third\_party\_sign\_in?redirect\_uri={адрес для редиректа}&amp;state={csrf-токен, опционально}

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

{адрес для редиректа}?access\_token={access\_token полученный при авторизации}&amp;token\_type=bearer&amp;expires\_in={срок жизни токена}&amp;state={state, полученный из GET параметров, если он был указан}

# Авторизация по домену в публичных методах апи

Для авторизации в вызовах, адреса которых содержат /pub, /dlv, /prompter необходимо передавать заголовок Domain

Значение Domain - shop + ид аккаунта из общих настроек в ЛК. Например, если ид аккаунта 18236, то значение должно быть: shop18236

[![image-1688635916873.png](http://wiki.kak2c.ru/uploads/images/gallery/2023-07/scaled-1680-/image-1688635916873.png)](http://wiki.kak2c.ru/uploads/images/gallery/2023-07/image-1688635916873.png)

Пример запроса с авторизацией по хедеру:

`curl --header "Domain: shopXXXXXXX" https://app.kak2c.ru/api/lite/pub/collections`

`curl --header "Domain: shopXXXXXXX" https://app.kak2c.ru/api/prompter/countries`

Вместо XXXXXXX - необходимо подставить ид аккаунта.

Пример для Postman

[![image-1688636026171.png](http://wiki.kak2c.ru/uploads/images/gallery/2023-07/scaled-1680-/image-1688636026171.png)](http://wiki.kak2c.ru/uploads/images/gallery/2023-07/image-1688636026171.png)

# Аккаунт

# /api/lite/pub/register

### <span style="color: #000000;">Создание нового аккаунта Кактус Lite </span>

**/api/lite/pub/register**

Для регистрации необходимо выполнить следующий запрос

```JSON
{
   "account":{
      "email":"test@test.ru",
      "phone":"123456",
	  
      "type":"abc" // опциональный параметр кода учетной записи
   }
}
```

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

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

возвращается jwt токен для доступа в админский api созданного аккаунта, после чего необходимо выполнить запрос инициализации аккаунта (/api/lite/registration\_init)

```JSON
{
"success": true,
"authToken": {
"access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhYmNkNTRAYWJjLnJ1IiwiZXhwIjoxNTQ3MjIyOTYwfQ.3NkyrZshkAYJWpIvanKuVv5I5Lqh7gCAojszBys9tOnqOdIpTDm5tCDzDWIt71YuxLBCgwlmC5OiH1Sombp2Hg",
"token_type": "bearer",
"login": "abcd54@abc.ru",
"expires_in": 14400,

"init_state": "0"
}
}
```

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

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

# /api/lite/pub/email/quote

### Отправка email с заявкой на консультацию через бэкенд

**/api/lite/pub/email/quote**

Отправка письма с заявкой на консультацию.

Защи/api/lite/pub/email/quщено с помощью reCaptcha (пока не реализовано)

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

<div id="bkmrk-%7B-%22customername%22%3A%22%D0%92%D0%B0">```Пример
{<br></br>    "customerName":"Вася",<br></br>    "customerPhone": "123456",<br></br>    "customerEmail":"test@test.ru",<br></br>    "title":"Заявка на консультацию",<br></br>    "message":"Мне ничего не понятно, помогите"<br></br>}
```

</div><div data-hasbody="true" data-macro-name="code" id="bkmrk-"><div><div><div></div></div></div></div>#### **Пример успешного ответа:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%7B-%22success%22%3A-true-%7D">```
<strong><code class="language-Пример ответа">{<br></br>    "success": true  <br></br>}</code></strong>
```

<div><div><div></div></div></div></div>#### **Пример ошибки:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%7B-%22success%22%3A-false%2C-">```
<strong><code class="language-Пример ошибки">{<br></br>    "success": false,<br></br>    "errors": [<br></br>        {<br></br>            "code": 0,<br></br>            "message": "Email не валиден"<br></br>        }<br></br>    ]  <br></br>}</code></strong>
```

<div><div><div></div></div></div></div>

# /api/lite/registration_init

### <span style="color: #000000;">Инициализация нового аккаунта Кактус Lite</span>

/api/lite/<span style="color: #505050;">registration\_init</span>

Для инициализации и заполнения аккаунта начальными данными необходимо выполнить указанный запрос

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

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

```JSON
{

"success": true

}
```

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

```JSON
{
"success": false,
"errors": [
{
"code": 0,
"message": "Данный аккаунт уже инициализирован"
}
]
}
```

# /api/lite/pub/password_reset

### <span style="color: #000000;">Запрос на сброс пароля Кактус Lite</span>

<span style="color: #000000;">/api/lite/pub/password\_reset</span>

<span style="color: #000000;">Для запроса сброса необходимо выполнить следующий запрос:</span>

```JSON
{ 
    "email":"test@test.ru"   
}


```

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

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

```JSON
{

"success": true

}
```

при этом, по указанному email отправляется письмо со ссылкой вида

[http://localhost:33043/password\_reset\_confirm/?t=6aaccd91-1045-4200-b105-b4db79490fee](http://localhost:33043/password_reset_confirm/?t=6aaccd91-1045-4200-b105-b4db79490fee)

Где адрес сервера будет взят из текущего адреса, включая домен 3 уровня.

срок действия токена - 1 час

Данная ссылка будет открыта пользователем в браузере GET запросом.

js код должен обработать открытие подобной ссылки и вывести пользователю запрос на ввод нового пароля и подтверждение пароля.

По нажатию кнопки подтверждения на данном экране создания нового пароля следует выполнить POST запрос на адрес /api/lite/pub/password\_reset\_confirm с передачей токена из ссылки и нового пароля (см следующий метод).

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

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

# /api/lite/pub/password_reset_confirm

### <span style="color: #000000;">Сброс пароля </span>

<span style="color: #000000;">/api/lite/pub/password\_reset\_confirm</span>

<span style="color: #000000;">Для сброса необходимо выполнить запрос с передачей временного токена сброса пароля и нового пароля:</span>

```JSON
{ 
    "token":"6aaccd91-1045-4200-b105-b4db79490fee",

    "password": "abcd"
}
```

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

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

```JSON
{

"success": true

}
```

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

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

# /api/lite/notifications

### <span style="color: #000000;">Перечень уведомлений для пользователя</span>

/api/lite/notifications

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

По умолчанию, возвращается с указанным количеством (last\_count), начиная от самого последнего.

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

<table border="1" 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" style="border-collapse: collapse; width: 100%; height: 58px;"><tbody><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;">**Параметр**</td><td style="width: 33.3333%; height: 29px;">**Тип / формат**</td><td style="width: 33.3333%; height: 29px;">**Описание**</td></tr><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;">last\_count</td><td style="width: 33.3333%; height: 29px;">integer</td><td style="width: 33.3333%; height: 29px;">Количество сообщений</td></tr></tbody></table>

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

```JSON
{
    "last_count":10
}
```

#### **Результат запроса:**

<table border="1" 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-0" style="border-collapse: collapse; width: 100%; height: 58px;"><tbody><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;">**Параметр**</td><td style="width: 33.3333%; height: 29px;">**Тип / формат**</td><td style="width: 33.3333%; height: 29px;">**Описание**</td></tr><tr style="height: 29px;"><td style="width: 33.3333%; height: 29px;">notifications</td><td style="width: 33.3333%; height: 29px;">array</td><td style="width: 33.3333%; height: 29px;">Массив уведомлений</td></tr></tbody></table>

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

```JSON
{
    "success": true,
    "notifications": [
        {
            "date":"2019-01-09T20:00:02",
            "text":"Уведомление 1"
        },
        {
            "date":"2019-01-09T20:00:01",
            "text":"Уведомление 2"
        }
    ]
}
```

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

</div>

# /api/lite/account_info

### <span style="color: #000000;">Запрос данных аккаунта</span>

<span style="color: #000000;">/api/lite/account\_info</span>

<span style="color: #000000;">Метод возвращает информацию о текущем аккаунте.</span>

<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.4%; height: 372px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">**Параметр**</td><td style="width: 18.0247%; height: 29px;">**Тип / формат**</td><td style="width: 62.2222%; height: 29px;">**Описание**</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">login

</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string

</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Логин пользователя

</td></tr><tr role="row" style="height: 122px;"><td class="confluenceTd" style="width: 19.7531%; height: 122px;">domains

</td><td class="confluenceTd" style="width: 18.0247%; height: 122px;">array\[object\]

</td><td class="confluenceTd" style="width: 62.2222%; height: 122px;">Массив доменов, связанных с аккаунтом

- domain - домен 3 уровня
- auto\_generated - флаг, что домен автосоздан при регистрации

</td></tr><tr role="row" style="height: 111px;"><td class="confluenceTd" style="width: 19.7531%; height: 111px;">balance

</td><td class="confluenceTd" style="width: 18.0247%; height: 111px;">object

</td><td class="confluenceTd" style="width: 62.2222%; height: 111px;">Информация о балансе:

- total - общий остаток на счете
- reserved - заблокированная сумма
- available - доступный остаток

</td></tr><tr><td style="width: 19.7531%;"><div><div>billingBalance</div></div></td><td style="width: 18.0247%;">object

</td><td style="width: 62.2222%;">Информация о балансе (биллинг):

- total - общий баланс / задолженность
- <div><div>expired - просроченная задолженность</div></div>

</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">pickupSettings

</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">object

</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Настройки точки сбора (см описание метода /api/lite/settings/pickup)

</td></tr><tr><td style="width: 19.7531%;"><span aria-label="Описание Если в настройках аккаунта в GET /api/lite/account_info
поле b2bFlagAllowed = true  - то в заказе отобразить флаг &quot;B2B заказ&quot;
в разделе Дополнительно

Заполнять из бэка/передавать на бэк в поле b2bFlag в заказе.: Редактирование" class="inline-edit--display-field description -editable" data-field-name="description" role="button" tabindex="0">b2bFlagAllowed</span></td><td style="width: 18.0247%;">boolean

</td><td style="width: 62.2222%;">Настройка для выгрузки B2B заказов -- если true, то в заказе появится галка "B2B заказ"  
\*Настройка для B2B включается по запросу клиента; по умолчанию не используется.</td></tr></tbody></table>

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

```JSON
{
  "success": true,
  "login": "tatiana.bogatel@theroadwear.com",
  "domains": [
    {
      "domain": "shop2151264",
      "auto_generated": true,
      "external_domain": false
    },
    {
      "domain": "theroadwear",
      "auto_generated": false,
      "external_domain": false
    }
  ],
  "balance": {
    "total": 0,
    "reserved": 0,
    "available": 0
  },
  "billingBalance": {
    "total": -79446.00,
    "expired": -2000.00
  },
  "pickupSettings": {
    "person_full_name": "Фарид",
    "person_phone": "+79999999999",
    "address": {
      "country": "Россия",
      "countryCode": "RU",
      "region": "Московская область",
      "area": "Чеховский район",
      "city": "Чехов",
      "settlement": "сельское поселение Баранцевское, в районе деревни Лешино, пром. зона «Лешино»",
      "street": "",
      "house": "владение 1",
      "block": "",
      "building": "СТРОЕНИЕ 1",
      "flat": null,
      "fullAddress": "142326, РФ, Московская область, Чеховский район, сельское поселение Баранцевское, в районе деревни Лешино, промышленная зона «Лешино», владение 1, строение 1",
      "fullCity": null,
      "rawData": null,
      "zip": "142326",
      "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
      "areaFias": null,
      "cityFias": "7eeb876e-7b67-4ed7-91ec-0588712db96c",
      "settlementFias": "5f12f12b-42b3-4f89-b214-d8ab9c10e9f8"
    }
  },
  "shopId": "2151264",
  "shopName": "ООО «Роуд Продакшн»",
  "orderSummary": {
    "DELIVERED": 24,
    "RETURNED": 2,
    "CANCELED": 62
  },
  "autoBlockAccount":true,
  "tempBlockAccount":true,
  "tempBlockAccountReason":"Временно заблокирован"
}
```

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

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

# /api/lite/privileges

### Запрос текущих привилегий

/api/lite/privileges

Метод возвращает список текущих привилегий авторизованного пользователя

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

```JSON
{
    "privileges": [
      "DASHBOARD_DATA_READ", 
      "SETTINGS_READ", 
      "ORDERS_READ"
    ]
}
```

# Товары

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

<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>

# Коллекции

# /api/lite/collections

### Получение списка коллекций

/api/lite/collections

Возвращает список всех коллекций.

Товары группируются по коллекциям для отображения в каталоге товаров в интернет-магазине.

#### **Фильтры:**

/api/lite/collections?**id=1000** – возвращает информацию только по выбранной коллекции с указанным id

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

<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: 835px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 134px;">**Параметр**</td><td style="width: 106px;">**Тип\\формат**</td><td style="width: 595px;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">collections</td><td class="confluenceTd" style="width: 106px;">array</td><td class="confluenceTd" style="width: 595px;">Массив коллекций</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">id</td><td class="confluenceTd" style="width: 106px;">string</td><td class="confluenceTd" style="width: 595px;">Идентификатор коллекции</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">title</td><td class="confluenceTd" style="width: 106px;">string</td><td class="confluenceTd" style="width: 595px;">Заголовок коллекции</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">description</td><td class="confluenceTd" style="width: 106px;">string</td><td class="confluenceTd" style="width: 595px;">Описание коллекции (html)</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">surl</td><td class="confluenceTd" style="width: 106px;">string</td><td class="confluenceTd" style="width: 595px;">Семантическое наименование ссылки (friendly URL) на коллекцию</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">parentId</td><td class="confluenceTd" style="width: 106px;">string</td><td class="confluenceTd" style="width: 595px;">Идентификатор родительской коллекции</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">type</td><td class="confluenceTd" style="width: 106px;">string</td><td class="confluenceTd" style="width: 595px;">Тип коллекции (CATALOG/PRODUCT)</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">isAllProducts

</td><td class="confluenceTd" style="width: 106px;">boolean</td><td class="confluenceTd" style="width: 595px;">Является коллекцией Все продукты</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">fillType</td><td class="confluenceTd" style="width: 106px;">enum</td><td class="confluenceTd" style="width: 595px;">"MANUAL", "AUTO". Тип заполнения коллекции продуктами</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">defaultImage</td><td class="confluenceTd" style="width: 106px;">string</td><td class="confluenceTd" style="width: 595px;">Ссылка на изображение коллекции</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">productCount</td><td class="confluenceTd" style="width: 106px;">integer</td><td class="confluenceTd" style="width: 595px;">Количество продуктов (не удаленных) в коллекции (readonly)</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">includedInCatalog</td><td class="confluenceTd" style="width: 106px;">boolean</td><td class="confluenceTd" style="width: 595px;">Входит в активный каталог-меню сайта (readonly)</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">breadcrumbs</td><td class="confluenceTd" style="width: 106px;">array</td><td class="confluenceTd" style="width: 595px;">Хлебные крошки с путем от корневой коллекции до заданной (только при фильтре по id)</td></tr><tr role="row"><td class="confluenceTd" style="width: 134px;">products</td><td class="confluenceTd" style="width: 106px;">array</td><td class="confluenceTd" style="width: 595px;">Массив продуктов, входящих в коллекцию </td></tr><tr><td style="width: 134px;">filters</td><td style="width: 106px;">array</td><td style="width: 595px;">Массив фильтров коллекции</td></tr></tbody></table>

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

```JSON
{
    "success": true,
    "collections": [
        {
            "id": "1029",
            "title": "Зерновой кофе",
            "description": "<P>Лучший <B>зерновой</B> кофе</P>",
            "surl": "zernovoy_coffee",
            "parentId": "123",
            "type": "PRODUCT",
            "defaultImage":"http://address.ru/123.jpg",
            "breadcrumbs":[
                {"id": "1", "title": "Все товары", "level":0},
                {"id": "1023", "title": "Кофе", "level":1},
                {"id": "1029", "title": "Зерновой кофе", "level":2}
            ],
            "products": [
              {
                "id": "1000",
                "extId": null,
                "shortName": "Кактус Эуфобия Триангуларис",
                "description": null,
                "available": null,
                "deleted": null,
                "brandName": null,
                "countryOfOrigin": null,
                "tnvedCode": null,
                "internationalDescription": null,
                "isBestseller": null,
                "isNovelty": null,
                "type": null,
                "vat": null,
                "options": null,
                "images": null,
                "variants": null,
                "collections": null,
                "attributes": null,
                "collectionPos": "100.000000000000000"
              }
            ]
            "fillType":"AUTO", 
            "isAllProducts": false,    
            "productCount": 15,
            "includedInCatalog": true,
            "logicMode":"AND",
            "filters":[
                {"num":1, "filterType":"BRAND_NAME", "compareOperation":"CONTAINS", "compareValue":"Samsung"}
            ]
        }
    ]
}
```

###  

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

/api/lite/collections

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

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

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

<div id="bkmrk-%7B-%22id%22%3A%221029%22%2C-%22titl"><div><div data-hasbody="true" data-macro-name="code">```JSON
{<br></br>    "id":"1029",<br></br>    "title": "Зерновой кофе",<br></br>    "description": "<P>Лучший <B>зерновой</B> кофе</P>",<br></br>    "surl": "zernovoy_coffee",<br></br>    "parentId" : "123",<br></br>    "defaultImage":"http://address.ru/123.jpg",<br></br>    "type": "PRODUCT",<br></br>    "fillType":"MANUAL", <br></br>     "products": [<br></br>       {<br></br>       "id": "1000",<br></br>       "extId": null,<br></br>       "shortName": "Кактус Эуфобия Триангуларис",<br></br>       "description": null,<br></br>       "available": null,<br></br>       "deleted": null,<br></br>       "brandName": null,<br></br>       "countryOfOrigin": null,<br></br>       "tnvedCode": null,<br></br>       "internationalDescription": null,<br></br>       "isBestseller": null,<br></br>       "isNovelty": null,<br></br>       "type": null,<br></br>       "vat": null,<br></br>       "options": null,<br></br>       "images": null,<br></br>       "variants": null,<br></br>       "collections": null,<br></br>       "attributes": null,<br></br>       "collectionPos": "100.000000000000000"<br></br>       }<br></br>     ]<br></br>    "logicMode":"AND",<br></br>    "filters":[<br></br>        {"num":1, "filterType":"BRAND_NAME", "compareOperation":"CONTAINS", "compareValue":"Samsung"}<br></br>    ]<br></br>}
```

<div></div></div></div></div>### Удаление коллекции

/api/lite/collections

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

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

Продукты, входившие в удаляемую коллекцию - более не будут входить в нее.

Дочерние коллекции у удаляемой - тоже удаляются, как и привязки их к товарам.

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

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

####  

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

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

# /api/lite/collections/image

### Создание картинки к коллекции

/api/lite/collections/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"
}
```

Параметры:

<div data-hasbody="true" data-macro-name="code" id="bkmrk-url--%D0%BF%D1%80%D1%8F%D0%BC%D0%B0%D1%8F-%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0-%D0%BD"><div data-hasbody="true" data-macro-name="code"><div>- url- прямая ссылка на оригинал картинки
- id - идентификатор картинки (для последующего обновления или удаления)
- pos - автоматически присвоенное значение для сортировки

</div></div></div>####  

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

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

### Удаление картинки к коллекции

/api/lite/collections/image

- id - код коллекции

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

```JSON
{
    "success": true,   
    "id": "1234" - id коллекции    
}
```

####  

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

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

# /api/lite/pub/collections

### Получение списка коллекций

/api/lite/pub/collections

(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))

Возвращает список всех коллекций.

Товары группируются по коллекциям для отображения в каталоге товаров в интернет-магазине.

#### **Фильтры:**

- /api/lite/pub/collections?**id=1000** – возвращает информацию только по выбранной коллекции с указанным id

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

<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"><tbody aria-live="polite" aria-relevant="all"><tr><td>**Параметр**</td><td>**Тип\\формат**</td><td>**Описание**</td></tr><tr role="row"><td class="confluenceTd">collections</td><td class="confluenceTd">array</td><td class="confluenceTd">Массив коллекций</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">title</td><td class="confluenceTd">string</td><td class="confluenceTd">Заголовок коллекции</td></tr><tr role="row"><td class="confluenceTd">description</td><td class="confluenceTd">string</td><td class="confluenceTd">Описание коллекции (html)</td></tr><tr role="row"><td class="confluenceTd">surl</td><td class="confluenceTd">string</td><td class="confluenceTd">Семантическое наименование ссылки (friendly URL) на коллекцию</td></tr><tr role="row"><td class="confluenceTd">parentId</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">Тип коллекции (CATALOG/PRODUCT)</td></tr><tr role="row"><td class="confluenceTd">breadcrumbs</td><td class="confluenceTd">array</td><td class="confluenceTd">Хлебные крошки с путем от корневой коллекции до заданной (только при фильтре по id)</td></tr></tbody></table>

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

```JSON
{
    "success": true,
    "collections": [
        {
            "id": "1029",
            "title": "Зерновой кофе",
            "description": "<P>Лучший <B>зерновой</B> кофе</P>",
            "surl": "zernovoy_coffee",
            "parentId": "123",
            "type": "PRODUCT",
            "defaultImage":"http://address.ru/123.jpg",
            "breadcrumbs":[
                {"id": "1", "title": "Все товары", "level":0},
                {"id": "1023", "title": "Кофе", "level":1},
                {"id": "1029", "title": "Зерновой кофе", "level":2}
            ]
        }
    ]
}
```

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

# Заказы

# Комментарии по выгрузке заказов в Кактус

<span style="font-family: Roboto, sans-serif;"><span style="font-size: small;">Для передачи заказов в Кактус, используется метод:</span></span>

POST [/api/lite/orders](https://wiki.kak2c.ru/link/76#bkmrk-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%2F%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0 "/api/lite/orders")

<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;">! Если обработка заказа Кактуса осуществляется на фулфилмент центре, тогда если заказ автоматически выгружается на фулфилмент центр, и любое изменение заказа по API (или через интерфейс) должно быть обязательно синхронизировано с системой фулфилмент - это происходит автоматически, а там в свою очередь осуществляется ряд проверок через систему интеграции с курьерскими службами.</span></span>

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

<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;">Для мониторинга состояния заказов, метод:</span></span>

GET [/api/lite/orders](https://wiki.kak2c.ru/link/76#bkmrk-%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81-%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%BE "/api/lite/orders")

<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;">Запрос заказов с фильтрацией по метке времени: updated\_from </span></span>

# /api/lite/orders

<p class="callout warning">Внимание! Не путать с методами /api/lite/order - это старые методы, которые будут удалены.</p>

### Запрос списка заказов

/api/lite/orders

Метод возвращает список заказов с заданной фильтрацией.

Можно использовать как для получения списка, так и единичного заказа.

<p class="callout info">Полный комплект данных по заказам будет передан только если в запросе будет параметр full\_info=true</p>

```JSON
{   
    "success": true,
    "recordsTotal": 1,
    "orders": [
        {
            "id": "4249-756",
         	"externalId": "extId",
            "externalId2": "extId2",
            "externalId3": "extId3",
            "externalId4": "extId4",
            "externalId5": "extId5",
            "date": "2020-02-24 00:06:09",
          	"needReserve": true,
            "createTs": "2020-02-24 06:06:14.078",
            "updateTs": "2020-02-25 06:06:14.078",
            "status": "ORDER_INFO_COURIER",
            "totalOrderSum": 2687,
            "insuranceSum": 2687,
            "insuranceSumAutoCalculation":true,
            "paymentStatus": "NOT_PAID",
            "paymentMethodCode": "online",
            "paymentMethodType": "ONLINE",
            "paymentMethodName": "Предоплата картой на сайте",
          	"customerPaymentExternalId": "26a11eef-000f-5000-8000-195192d6e83d",
            "needCustomerPayment": false,
            "confirmStatus": "APPROVED",
            "comment": "",
            "promocode": "hibro",
            "promocodeAppliedDiscount": 424,
            "shortUrl": "http://r.kak2c.ru/yeq2h4r",
            "tags": [],
            "isMarketplaceOrder": false,
          	"plannedTakeOutDate": "2020-02-26 13:00:00",
			"readyForFFExport": true,
            "delivery": {
                "code": "3321cd66-6605-aba4-d4d3-e14d1257562f",
                "deliveryCode": "29019c97-02b2-387c-fa85-875bd13e8b11",
                "type": "COURIER",
                "title": "DPD",
                "pickupPointId": "",
                "logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_dpd_left.svg",
                "trackingNumber": null,
                "trackingURL": null,
                "desiredDeliveryDate": null,
                "deliverySumBelowLimitAmount": 1000.00,
                "deliverySumLimitAmount": 5000.00,
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "18:00",
                "isDeliverySumLimitActive": true,
                "deliveryComment": "",
                "pvzComment": "",
              	"actualDeliveryDate": "2020-11-19 17:07",
              	"courierPlanDeliveryDate": "2020-11-19 00:00",
                "courierPlanDeliveryDateChangeReason": "Недозвон до покупателя",
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": "Сосенское",
                    "city": "Москва",
                    "settlement": null,
                    "street": "ул Александры Монаховой",
                    "house": "94",
                    "block": "5",
                    "building": "",
                    "flat": "21",
                    "fullAddress": "108801, г Москва, поселение Сосенское, Новомосковский округ, ул Александры Монаховой, д 94 к 5, кв 21",
                    "fullCity": null,
                    "rawData": "Москва, ул Александры Монаховой, д 94, корп.5, кв 21.",
                    "zip": "108801",
                    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "areaFias": "90648b5c-d6e7-4bb0-9782-7908808325cf",
                    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "settlementFias": null
                },
                "receiver": {
                    "name": "Диана",
                    "surname": "Шалиева",
                    "patronymic": "Аликовна",
                    "phone": "89050250111",
                    "rawPhone": "89050250111",
                    "alternativePhone": "",
                    "email": "morisen777@yandex.ru",
                    "post": null,
                    "personType": null
                },              
              	"pvzInfo": {
                    "address": {
                        "country": "Россия",
                        "countryCode": "RU",
                        "region": "Москва",
                        "area": null,
                        "city": "Москва",
                        "settlement": null,
                        "street": null,
                        "house": null,
                        "block": null,
                        "building": null,
                        "flat": null,
                        "fullAddress": "Таганская ул., д. 1, стр. 1",
                        "fullCity": null,
                        "rawData": null,
                        "zip": "109147",
                        "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "areaFias": null,
                        "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "settlementFias": null
                    },
                    "metroStation": "метро Таганская, Марксистская",
                    "latitude": "55.741772",
                    "longitude": "37.655975",
                    "code": "7702-015",
                    "courier": "PickPoint",
                    "courierCode": "PICKPOINT",
                    "description": "Пункт выдачи заказов находится в ТЦ Звездочка, в фотосалоне Мультифото. Пешком: м. Марксистская, последний вагон из центра, выход в сторону ул. Таганской. Транспортом: автобус № 106, 74в, 74, 51, 567; троллейбус № 26, 63, м7, м7к, 27 до ост. м. Марксистск",
                    "maxSize": "90",
                    "maxWeight": 15,
                    "workTime": "Пн-Вс 10:00-22:00",
                    "postOfficeNumber": null,
                    "paymentMethods": [
                        "COD_CASH",
                        "COD_CARD"
                    ],
                    "type": "PVZ",
                    "courierPostamatType": "ПВЗ"
                },
                "deliveryServices": [
                    "CHECK_CONTENT"
                ],
              "isDeliverySumLimitActive": true,
              "deliverySumLimitAmount": 324234,
              "deliverySumBelowLimitAmount": 23432432
            },
            "excludeFromSummary": true,
            "legalEntity": {
                "id": "3c0a3ad3-b10f-4299-5b1b-a3d90b0c198a",
                "type": "PERSON",
                "name": " Розничный покупатель"
            },
            "items": [
                {
                    "num": 1,
                    "productId": "1001",
                    "productExtId": null,
                    "variantId": "1001",
                    "variantExtId": null,   
                    "name": "Расческа в чехле Bro Cosmetics, Цвет: коричневый ",
                    "article": "BR00T-000140-2",
                    "quantity": 1,
                    "vatRate": "NO_VAT",
                  	"vatSkuProduct": "NO_VAT",
                    "price": 332,
                    "batchName":"K352-415N",
                    "tag": "ROZNECHNIE_SETY",
                    "img": "https://img.kak2c.ru/i/L/U/xgzFMUqK_c.jpg?1576164677",
                    "isPreferredPacking": "true",
                    "packingMaterials": {
                       "commonMaterials": [],
                       "customMaterials": [
                           {
                             "name": "Гофрокороб Sultane",
                              "num": 0,
                              "productId": "1256635998",
                              "quantity": 1,
                              "skuType": "PACKING_MATERIAL_BOXES",
                              "variantId": "566335798"
                          }
                                         ]
                                       },
                    "itemAmountState": {
                        "amountORDERED": 1,
                        "amountRESERVED": 1,
                        "amountPACKED": 1,
                        "amountSHIPPED": 1,
                        "amountDELIVERED": 0,
                        "amountLOST": 0,                       
                        "amountRETURNED": 0,
                        "amountRETURNED_DEFECTIVE": 0,
                      	"amountRETURNED_TO_CLIENT": 0
                    },
                    "skuType": "SKU",
                    "itemDimensions": {
                        "height": 8,
                        "width": 25,
                        "depth": 33
                    },
                    "itemWeight": 1000,
                  	"expirationMode": "USE_EXPIRATION",
                  	"expirationDays": 100
                },
                {
                    "num": 2,
                    "productId": "1002",
                    "productExtId": null,
                    "variantId": "1002",
                    "variantExtId": null,   
                    "name": "Набор для Бро №4: помада для волос, бальзам для бороды, гель для душа + шампунь",
                    "article": "BR00T-000117",
                    "quantity": 1,
                    "vatRate": "NO_VAT",
                    "vatSkuProduct": "NO_VAT",
                    "price": 2074,
                    "img": "https://img.kak2c.ru/i/L/s/qck3mEGu_c.jpg?1578310573",
                    "itemAmountState": {
                        "amountORDERED": 1,
                        "amountRESERVED": 1,
                        "amountPACKED": 1,
                        "amountSHIPPED": 1,
                        "amountDELIVERED": 0,
                        "amountLOST": 0,                       
                        "amountRETURNED": 0,
                        "amountRETURNED_DEFECTIVE": 0
                    },
                    "skuType": "SKU",
                    "itemDimensions": {
                        "height": 8,
                        "width": 25,
                        "depth": 33
                    },
                    "itemWeight": 1000
                },
                {
                    "num": 3,
                    "productId": null,
                    "variantId": "delivery",
                    "name": "Доставка",
                    "quantity": 1,
                    "vatRate": "NO_VAT",
                    "vatSkuProduct": "NO_VAT",
                    "price": 281,
                    "skuType": "SERVICE"
                }
            ],
            "packings": [
                {
                    "barcode": "7878000138251",
                  	"fbmStickerBarcode": "WB_0032345",
                  	"palletBarcode": "pl705970976005-1",                  
                    "measurements": {
                        "success": true,
                        "weight": 790,
                        "dimensions": {
                            "height": 130,
                            "width": 280,
                            "depth": 130
                        }
                    },
                    "items": [
                        {
                            "num": 1,
                            "productId": "1001",
                            "productExtId": null,
                            "variantId": "1001",
                            "variantExtId": null,   
                            "name": "Расческа в чехле Bro Cosmetics, Цвет: коричневый ",
                            "article": "BR00T-000140-2",
                            "quantity": 1,
                            "vatRate": "NO_VAT",
                            "price": 332,
                            "img": "https://img.kak2c.ru/i/L/U/xgzFMUqK_c.jpg?1576164677",
                            "skuType": "SKU",
                            "accountingAttributes": [
                              {
                                "code": "chestnyznak",
                                "stringValue": "11111",
                                "n": 1
                              }
                            ],
                          	"specials": true
                        },
                        {
                            "num": 2,
                            "productId": "1002",
                            "productExtId": null,
                            "variantId": "1002",
                            "variantExtId": null,   
                            "name": "Набор для Бро №4: помада для волос, бальзам для бороды, гель для душа + шампунь",
                            "article": "BR00T-000117",
                            "quantity": 1,
                            "vatRate": "NO_VAT",
                            "price": 2074,
                            "img": "https://img.kak2c.ru/i/L/s/qck3mEGu_c.jpg?1578310573",
                            "skuType": "SKU",
                            "accountingAttributes": [
                              {
                                "code": "chestnyznak",
                                "stringValue": "22222",
                                "n": 2
                              }
                            ]
                        }
                    ]
                }
            ],
          	"pallets": [
                {
                    "barcode": "pl705970976005-1",
                  	"fbmStickerBarcode": "WB_PL_0032345",
                    "files": [
                        {
                            "copiesQty": 1,
                            "fileExt": "pdf",
                            "fileName": "ИП Ozon Хоругвино Шк на палету",
                            "fileSize": 22535,
                            "fileSource": "USER",
                            "fileType": "PDF",
                            "id": "aa22d7fa-65a2-6be0-8e0d-430ec6c874d3",
                            "printWhenPacking": false,
                            "success": true,
                            "url": "https://storage.yandexcloud.net/order-files-kak2c/b42eebd1-eb7e-4603-a781-5240699288d9.pdf"
                        }
                    ],
                    "measurements": {
                        "dimensions": {
                            "depth": 120,
                            "height": 100,
                            "width": 120
                        },
                        "success": true,
                        "weight": 200
                    },
                    "num": 1,
                    "packings": [
                        {
                            "barcode": "7878000138251",
                            "measurements": {
                              "success": true,
                              "weight": 790,
                              "dimensions": {
                                  "height": 130,
                                  "width": 280,
                                  "depth": 130
                              }
                          },
                            "palletBarcode": "pl705970976005-1"
                        }
                    ]
                }
            ],
            "rawDeliveryStatuses": [
                {
                  "courierStatusDate": "2019-12-18 14:43:05",
                  "statusCode": "SENDER",
                  "statusMessage": "Заявка принята",
                  "statusCity": "Чехов"
                },
                {
                  "courierStatusDate": "2019-12-18 14:43:05",
                  "statusCode": "SENDER",
                  "statusMessage": "Заявка принята",
                  "statusCity": "Чехов"
                }
            ],
            "expenses": [
                {
                    "id": "1231",
                    "status": "PLAN",
                    "type": "GENERAL",
                    "items": [
                        {
                            "type": "COD",
                            "sum": 60
                        },
                        {
                            "type": "DELIVERY",
                            "sum": 330
                        },
                        {
                            "type": "INSURANCE",
                            "sum": 6
                        }
                    ]
                }
            ],
            "files": [
                {
                    "id": "43f79bac-0d82-2d82-f11d-abd1a53b26a0",
                    "fileType": "DOC",
                  	"fileSource": "USER", //ESHOP | FULFILLMENT
                    "fileName": "Документ",
                    "fileExt": "doc",
                    "url": "https://storage.yandexcloud.net/order-files-kak2c/e7cf604e-7092-4243-97ba-13b3f7bb4b68.doc",
                    "printWhenPacking": true,
                    "copiesQty": 1
                }
            ],
            "customerPaymentInProcess": false,
            "warehouseName": "Tempoline",
            "warehouseCode": "6805bc64-270f-ae7d-1231-773ff181e446",
          	"permissionList": {
              "fieldPermissions": [
                {
                  "type": "ITEMS_EDITABLE",
                  "value": true,
                  "reason": null
                },
                {
                  "type": "PAYMENT_EDITABLE",
                  "value": true,
                  "reason": null
                },
                {
                  "type": "IS_PAID_EDITABLE",
                  "value": false,
                  "reason": "Для способа оплаты наложенным платежом - статус оплаты вручную изменять нельзя."
                },
                {
                  "type": "RECEIVER_EDITABLE",
                  "value": true,
                  "reason": null
                },
                {
                  "type": "DELIVERY_EDITABLE",
                  "value": true,
                  "reason": null
                },
                {
                  "type": "WAREHOUSE_EDITABLE",
                  "value": true,
                  "reason": null
                },
                {
                  "type": "COMMENTS_EDITABLE",
                  "value": true,
                  "reason": null
                }
              ],
              "actionPermissions": [
                {
                  "type": "CANCEL",
                  "value": true,
                  "reason": null
                },
                {
                  "type": "CONFIRM",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "NEED_CONFIRM",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "PACK",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "COPY",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "PACK_CONTROL",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "UNPACK",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "SHIPPING",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "UNSHIPPING",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "REFRESH_RESERVE",
                  "value": true,
                  "reason": null
                },
                {
                  "type": "RETURN_TO_DELIVERY",
                  "value": false,
                  "reason": null
                },
                {
                  "type": "REVERT_RETURNS",
                  "value": false,
                  "reason": null
                }
              ]
            },
           "packingVideos": [
        		"http://123.123.123.123:1111/video/2021-04-21/dabca048-7cfb-4e65-92a2-fce40f5ee9c2.mp4"
      		],
           "returnUnpackingVideos": [
        		"http://123.123.123.123:1111/video/2021-04-21/dabca048-7cfb-4e65-92a2-fce40f5ee9c2.mp4"
      		],
          "returns":[
            {
              "type": "RETURN", // RECLAMATION
              "date": "2021-01-15 17:47:13",
              "number": "123",
              "externalNumber": "456",
               "items": [
                        {
                            "num": 1,
                            "productId": "1001",
                            "productExtId": null,
                            "variantId": "1001",
                            "variantExtId": null,   
                            "name": "Расческа в чехле Bro Cosmetics, Цвет: коричневый ",
                            "article": "BR00T-000140-2",
                            "quantity": 1,
                           	"accountingAttributes": [
                				{
                                  "code": "chestnyznak",
                                  "stringValue": "12345"
                                }
              				],
                        }],
               "returnUnpackingVideos": [
        		"http://123.123.123.123:1111/video/2021-04-21/dabca048-7cfb-4e65-92a2-fce40f5ee9c2.mp4"
      			],
               "files": [
                {                   
                    "fileName": "Скан заявления",                    
                    "url": "https://storage.yandexcloud.net/order-files-kak2c/e7cf604e-7092-4243-97ba-13b3f7bb4b68.doc"                    
                },
                  {                   
                    "fileName": "Скан документов",                    
                    "url": "https://storage.yandexcloud.net/order-files-kak2c/e7cf604e-7092-4243-97ba-13b3f7bb4b68.doc"                    
                }
            ]
            }
          ]
          	"summaryItemAmountState": {
                "amountORDERED": 2,
                "amountRESERVED": 2,
                "amountPACKED": 2,
                "amountSHIPPED": 2,
                "amountDELIVERED": 0,
                "amountLOST": 0,
                "amountRETURNED": 0,
                "amountRETURNED_DEFECTIVE": 0,
              	"amountRETURNED_TO_CLIENT": 0
            },
            "codPayments": [
                {
                    "sum": 2225,
                    "date": "2021-01-15 17:47:13",
                    "paymentDocumentId": "1000"
                }
            ],
 			"packingOptions": [
                {
                    "packSpecialsToSeparatePackingPlace": true                   
                }
            ],
            "c": "8089832f-633a-b417-a72b-7e685e114151",
          
			"initialOrder" : null,
			"onlinePaymentType": "FULL",
			"warehouseShippingOptions": {
                "monopackingsOnly": true
            }
        }
    ]
}
```

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

Для фильтрации есть следующие возможности:

- id - по номеру заказа
- filter\_multi - по номеру заказа или по ФИО покупателя
- filter\_phone - по телефону покупателя
- filter\_email - по email покупателя
- filter\_promocode - по промокоду
- filter\_tracking\_number - по трек-номеру заказа
- filter\_tags - по меткам заказов (можно указывать несколько через запятую)
- filter\_states - по статусам заказов (можно указывать несколько через запятую)
- filter\_external\_id, filter\_external\_id\_2, filter\_external\_id\_3, filter\_external\_id\_4, filter\_external\_id\_5 - по внешним идентификаторам
- date\_from - по дате заказа, от. формат: <span style="color: #505050;">2020-02-19T12:35:31</span>
- date\_to - по дате заказа, до
- <span style="color: #505050;">updated\_from - по дате/времени изменения. </span>формат: <span style="color: #505050;">2020-02-19T12:35:31.</span>
- delivery\_code - по кодам службы доставки (можно указывать несколько через запятую) код получать в справочнике доступных служб доставки клиента
- city - по городу/населенному пункту покупателя. Значения лучше получать из подсказок адресов
- reserved\_variant\_id - по зарезервированному товару
- warehouse\_code - дополнительная фильтрация по складу (используется вместе с reserved\_variant\_id)
- product\_id - по коду продукта в заказе.
- problemOrders - true - для вывода заказов с ошибками (согласовано с количеством в поле problemOrders в методе <span style="color: #172b4d;">/api/lite/orders/statuses</span>)
- order\_types - подтипы заказов с типом CUSTOM. Если не задано, то отображены будут только заказы с типом STANDARD

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

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

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

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

Максимальное количество записей на странице - 100

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

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

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

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

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

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

- **date** (дата заказа)
- **id** (номер заказа)

По умолчанию используется сортировка по дате заказа по убыванию.

#### **Описание результата запроса**

<div id="bkmrk-"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 100.0%;"><colgroup><col style="width: 20.1391%;"></col><col style="width: 5.28512%;"></col><col style="width: 74.548%;"></col></colgroup><thead></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="height: 9524px; width: 200%;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">**Поле**</td><td style="width: 9.87653%; height: 28px;">**Тип**</td><td style="width: 5.80244%; height: 28px;">**Редактируемое**</td><td style="width: 6.91355%; height: 28px; background-color: #e9f1e0;">**обязательное**

</td><td style="width: 62.9629%; height: 28px;">**Описание**</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 24.9383%; height: 44px;">id</td><td class="confluenceTd" style="width: 9.87653%; height: 44px;">string</td><td style="width: 5.80244%; height: 44px;">да\*</td><td style="width: 6.91355%; height: 44px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 44px;">Номер заказа.   
Основной идентификатор заказа.

<sub>\* Можно задать только в момент создания заказа</sub>

</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 24.9383%; height: 44px;">externalId</td><td class="confluenceTd" style="width: 9.87653%; height: 44px;">string</td><td style="width: 5.80244%; height: 44px;">да</td><td style="width: 6.91355%; height: 44px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 44px;">Внешний номер заказа – дополнительный номер заказа, например в сторонней CRM системе.

</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">externalId2</td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">да</td><td style="width: 6.91355%; height: 29px;">нет</td><td style="width: 62.9629%; height: 29px;">Внешний номер заказа</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">externalId3</td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">да</td><td style="width: 6.91355%; height: 29px;">нет</td><td style="width: 62.9629%; height: 29px;">Внешний номер заказа</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">externalId4</td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">да</td><td style="width: 6.91355%; height: 29px;">нет</td><td style="width: 62.9629%; height: 29px;">Внешний номер заказа</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">externalId5</td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">да</td><td style="width: 6.91355%; height: 29px;">нет</td><td style="width: 62.9629%; height: 29px;">Внешний номер заказа</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">date</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">datetime</td><td style="width: 5.80244%; height: 28px;">да\*</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Дата заказа

<sub>\* Можно задать только в момент создания заказа</sub>

</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">needReserve</td><td style="width: 9.87653%; height: 29px;">boolean</td><td style="width: 5.80244%; height: 29px;">да</td><td style="width: 6.91355%; height: 29px;">нет</td><td style="width: 62.9629%; height: 29px;">Нужно ли брать резерв </td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">createTs</td><td style="width: 9.87653%; height: 29px;">datetime</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Дата создания заказа в системе (техническая)</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">updateTs</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">datetime</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Дата последнего обновления заказа.</td></tr><tr role="row" style="height: 973px;"><td class="confluenceTd" style="width: 24.9383%; height: 973px;">status</td><td class="confluenceTd" style="width: 9.87653%; height: 973px;">enum</td><td style="width: 5.80244%; height: 973px;">нет</td><td style="width: 6.91355%; height: 973px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 973px;">Основной статус заказа. Описывает жизненный цикл заказа.

- <span style="color: #000000;">ORDER\_INFO\_DRAFT – Черновик. Заказ свободно редактируется, может быть не полностью заполнен, обязательность полей не контролируется.</span>
- <span style="color: #000000;">ORDER\_INFO\_NEW - Статус заказа при ошибке создания. Необходима доп проверка таких заказов. Статус Новый похож на Черновик</span>
- ORDER\_INFO\_NEED\_CONFIRM – Не подтвержден. Заказ взял на себя резервы и ожидает подтверждения сотрудника интернет-магазина.
- ORDER\_INFO\_INSUFFICIENT\_RESERVE – Не хватает товара. Заказ подтвержден, но не взяты резервы, без резервов нет возможности отгрузить заказ (резервы не учитываются, если стоит соответствующая настройка на складе, на который оформлен заказ).
- ORDER\_INFO\_REQUIRE\_PAYMENT – Ожидает оплаты. Заказ ожидает оплаты покупателем, актуально для заказов с типом оплаты paymentMethodType = ONLINE (онлайн оплата на сайте).
- ORDER\_INFO\_READY\_TO\_PACK – Готов к комплектации. Заказ подтвержден, товар полностью зарезервирован, оплачен - все готово для начала комплектации.
- ORDER\_INFO\_CONFIRM\_HOLD – Перезвон. Согласование заказа приостановлено, например, покупатель не снимает трубку.
- ORDER\_INFO\_PACKED\_DOCUMENTS\_UPLOADED - Заказ по системе FBO. После того, как все ШК/файлы будут приложены, а также внесены данные по ШК поставки, в карточке заказа появится кнопка «Документы загружены».  
    Нажмите на эту кнопку, и обновлённые данные передадутся в складскую систему. Статус заказа изменится на «Упаковано, ожидает сборки».
- ORDER\_INFO\_PACKED\_DOCUMENTS\_REQUIRED - Заказ по системе FBO. На этом этапе заказ предварительно упакован складом. На этом этапе клиенту нужно своевременно загрузить необходимые документы по FBO отгрузке.
- ORDER\_INFO\_IN\_PACKING – На комплектации. Комплектация (процесс упаковки) заказа начат.
- ORDER\_INFO\_PACKED – Упакован. Заказ успешно упакован.
- ORDER\_INFO\_SHIPPED – Отгружен. Заказ отгружен в службу доставки.
- ORDER\_INFO\_COURIER – На доставке. Курьерская служба подтвердила начало доставки.
- <span style="color: #008000;">ORDER\_INFO\_DELIVERED</span> – Доставлен. Заказ доставлен. **Финальный статус.**
- ORDER\_INFO\_PARTIALLY\_DELIVERED\_NOT\_RETURNED – Доставлен частично \*. Заказ доставлен частично, возврат не поступал.
- <span style="color: #008000;">ORDER\_INFO\_PARTIALLY\_DELIVERED\_RETURNED</span> – Доставлен частично. Заказ доставлен частично, возврат принят. **Финальный статус.**
- ORDER\_INFO\_RETURNING – Отказ \*. Заказ возвращается. Покупатель отказался от заказа (в процессе доставки), и заказ возвращается курьерской компанией обратно отправителю. Остается крайне небольшой шанс, что покупатель передумает, и заказ все же будет доставлен.
- <span style="color: #008000;">ORDER\_INFO\_RETURNED</span> – Отказ. Покупатель отказался от заказа, заказ возвращен на склад. **Финальный статус.**
- <span style="color: #008000;">ORDER\_INFO\_LOST</span> – Утерян. Заказ утерян службой доставки. **Финальный статус.**
- ORDER\_INFO\_AT\_TAKEOUT\_POINT – В пункте выдачи. Заказ доставлен в пункт выдачи заказов\\постамат и ожидает покупателя.
- <span style="color: #008000;">ORDER\_INFO\_CANCELED</span> – Отменен. Заказ отменен до момента отгрузки. После момента отгрузки, этот статус не актуален. **Финальный статус.**
- <span style="color: #a5adba;"><span style="color: #008000;">ORDER\_INFO\_WAIT\_UNPACK</span> – </span>Ожидает распаковки. Упакованный заказ отменен, но не распакован.
- <span style="color: #008000;">ORDER\_INFO\_RETURNED\_TO\_CLIENT</span> - Используется при работе с МП. По заказу был невыкуп и товар поступил на склад МП для последующей продажи. В этом статусе заказ пропадает из вкладки "Возвраты", его можно найти поиском по номеру заказа. **Финальный статус.**
- <span style="color: #a5adba;">ORDER\_INFO\_DONE – устаревший статус, "Выполнен". Используется для обратной совместимости, и более не используется. Аналогичен ORDER\_INFO\_DELIVERED.</span>

</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">confirmStatus</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">enum</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Статус подтверждения заказа

- NEED\_CONFIRM
- APPROVED
- CANCELED

</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">totalOrderSum</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">decimal</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Общая сумма заказа</td></tr><tr style="height: 80px;"><td style="width: 24.9383%; height: 80px;">insuranceSum</td><td style="width: 9.87653%; height: 80px;">decimal</td><td style="width: 5.80244%; height: 80px;">да</td><td style="width: 6.91355%; height: 80px;">нет</td><td style="width: 62.9629%; height: 80px;">Размер оценочной стоимости / страховки заказа.

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

</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">insuranceSumAutoCalculation</td><td style="width: 9.87653%; height: 29px;">boolean</td><td style="width: 5.80244%; height: 29px;">да</td><td style="width: 6.91355%; height: 29px;">нет</td><td style="width: 62.9629%; height: 29px;">Если не передаётся, то по умолчанию true. Если нужно указать произвольную сумму страховки, необходимо передать insuranceSumAutoCalculation = false</td></tr><tr role="row" style="height: 177px;"><td class="confluenceTd" style="width: 24.9383%; height: 177px;">paymentStatus</td><td class="confluenceTd" style="width: 9.87653%; height: 177px;">enum</td><td style="width: 5.80244%; height: 177px;">да</td><td style="width: 6.91355%; height: 177px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 177px;">Статус оплаты заказа покупателем.

- NOT\_PAID
- PAID

Имеет смысл только для заказов с предоплатой (например, оплата картой на сайте).

Заказы с оплатой ONLINE, и NOT\_PAID - не передаются на комплектацию.

</td></tr><tr role="row" style="height: 351px;"><td class="confluenceTd" style="width: 24.9383%; height: 351px;">paymentMethodType</td><td class="confluenceTd" style="width: 9.87653%; height: 351px;">enum</td><td style="width: 5.80244%; height: 351px;">да</td><td style="width: 6.91355%; height: 351px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 351px;">Тип оплаты заказа.

- COD\_CASH – наложенный платеж (наличными). Оплата при вручении.
- COD\_CARD – наложенный платеж (картой). Оплата при вручении. С точки зрения многих курьерских служб COD\_CASH и COD\_CARD никак не отличаются, так как курьеры как правило готовы принять оплату на терминал. Тем не менее, рекомендуется в случае необходимости наложенного платежа передавать именно COD\_CARD (так как наличные всегда принимаются курьерами по умолчанию).
- ONLINE – предоплата заказа (картой на сайте).
- NO\_COD – особая разновидность предоплаты. Используется, например, для предоплаты заказа по счету для B2B клиентов. Заказ передается на отгрузку, только если paymentStatus=PAID.
- NO\_COD\_NO\_CONTROL – аналогично NO\_COD, только параметр paymentStatus не контролируется (на комплектацию и отгрузку заказ передается в любом случае).

</td></tr><tr role="row" style="height: 166px;"><td class="confluenceTd" style="width: 24.9383%; height: 166px;">paymentMethodCode</td><td class="confluenceTd" style="width: 9.87653%; height: 166px;">string</td><td style="width: 5.80244%; height: 166px;">да</td><td style="width: 6.91355%; height: 166px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 166px;">Код и наименование способа оплаты заказа.

Базовые способы оплаты (по умолчанию), в формате   
paymentMethodCode (paymentMethodType) "paymentMethodName":

- cod-cash (COD\_CASH) "Оплата наличными при получении"
- cod-card (COD\_CARD) "Оплата картой при получении"
- online (ONLINE) "Предоплата картой на сайте"
- no-cod (NO\_COD) "Без наложенного платежа"

</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">paymentMethodName</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Наименование способа оплаты</td></tr><tr role="row" style="height: 99px;"><td class="confluenceTd" style="width: 24.9383%; height: 99px;">needCustomerPayment</td><td class="confluenceTd" style="width: 9.87653%; height: 99px;">boolean</td><td style="width: 5.80244%; height: 99px;">нет</td><td style="width: 6.91355%; height: 99px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 99px;">Флаг, указывающий на необходимость оплаты заказа покупателем перед отгрузкой.

Например, если paymentMethodType = ONLINE и paymentStatus = NOT\_PAID, тогда needCustomerPayment = true

</td></tr><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">customerPaymentExternalId</td><td style="width: 9.87653%; height: 28px;">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td style="width: 62.9629%; height: 28px;">Id оплаты у экваера (для онлайн оплаты)</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">warehouseName</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Название склада</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">comment</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Комментарий покупателя к заказу</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">promocode</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Код примененного промокода к заказу</td></tr><tr role="row" style="height: 28px;"><td class="confluenceTd" style="width: 24.9383%; height: 28px;">promocodeAppliedDiscount</td><td class="confluenceTd" style="width: 9.87653%; height: 28px;">decimal</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 28px;">Общая сумма скидки, примененная к заказу</td></tr><tr role="row" style="height: 99px;"><td class="confluenceTd" style="width: 24.9383%; height: 99px;">urlParams</td><td class="confluenceTd" style="width: 9.87653%; height: 99px;">string</td><td style="width: 5.80244%; height: 99px;">да</td><td style="width: 6.91355%; height: 99px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 99px;">Сырые данные URL запроса, с которыми покупатель пришел на сайт. В формате JSON.

Как правило, в основном это UTM метки, для понимания рекламного канала, с которого пришел покупатель.

</td></tr><tr role="row" style="height: 77px;"><td class="confluenceTd" style="width: 24.9383%; height: 77px;">shortUrl</td><td class="confluenceTd" style="width: 9.87653%; height: 77px;">string</td><td style="width: 5.80244%; height: 77px;">нет</td><td style="width: 6.91355%; height: 77px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 77px;">Сокращенная ссылка на заказ. Используется для предоставления покупателю, например в SMS.

Например [http://r.kak2c.ru/i806zlu](http://r.kak2c.ru/i806zlu)

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">b2bFlag</td><td style="width: 9.87653%; height: 35px;">boolean</td><td style="width: 5.80244%; height: 35px;">да</td><td style="width: 6.91355%; height: 35px;">нет</td><td style="width: 62.9629%; height: 35px;">B2B заказ. Если true, то биллинг по такому заказу будет считаться как для B2B.

\*Настройка для B2B включается по запросу клиента; по умолчанию не используется.

</td></tr><tr role="row" style="height: 77px;"><td class="confluenceTd" style="width: 24.9383%; height: 77px;">c</td><td class="confluenceTd" style="width: 9.87653%; height: 77px;">string</td><td style="width: 5.80244%; height: 77px;">нет</td><td style="width: 6.91355%; height: 77px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 77px;">Секретный ключ для доступа к заказу через публичный метод получения заказа.

Пример значения: 94ccc02a-2379-0eac-e5cf-260485cc35bd

</td></tr><tr role="row" style="height: 60px;"><td class="confluenceTd" style="width: 24.9383%; height: 60px;">customData</td><td class="confluenceTd" style="width: 9.87653%; height: 60px;">string</td><td style="width: 5.80244%; height: 60px;">да</td><td style="width: 6.91355%; height: 60px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 60px;">Дополнительная информация по заказу, возможно сохранить и получить, для передачи в другие системы. Например, сохранить произвольный json.</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 24.9383%; height: 44px;">tags</td><td class="confluenceTd" style="width: 9.87653%; height: 44px;">Array</td><td style="width: 5.80244%; height: 44px;">нет</td><td style="width: 6.91355%; height: 44px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 44px;">Массив идентификаторов меток (возможные метки получаются отдельным запросом) - для чтения</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 24.9383%; height: 44px;">orderTag</td><td class="confluenceTd" style="width: 9.87653%; height: 44px;">string</td><td style="width: 5.80244%; height: 44px;">да</td><td style="width: 6.91355%; height: 44px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 44px;">Метка для добавления заказу  
**Необходимо передавать название метки (name)**

**Предварительно необходимо создать метку с таким названием**

</td></tr><tr style="height: 57px;"><td style="width: 24.9383%; height: 57px;"><div><div>excludeFromSummary</div></div></td><td style="width: 9.87653%; height: 57px;">boolean</td><td style="width: 5.80244%; height: 57px;">да</td><td style="width: 6.91355%; height: 57px;">нет</td><td style="width: 62.9629%; height: 57px;">Признак true исключит заказ из статистики. Меняется запросом /api/lite/order-exclude-change

</td></tr><tr role="row" style="height: 188px;"><td class="confluenceTd" style="width: 24.9383%; height: 188px;">orderType</td><td class="confluenceTd" style="width: 9.87653%; height: 188px;">enum</td><td style="width: 5.80244%; height: 188px;">нет</td><td style="width: 6.91355%; height: 188px;">-</td><td class="confluenceTd" style="width: 62.9629%; height: 188px;">Тип заказа

- STANDARD – стандартный заказ интернет-магазина. Бизнес-логика для такого заказа отрабатывает стандартным образом.
- CUSTOM – заказ с нестандартной логикой. Заказ с подобным типом возможно оплатить и возможно подтвердить. Но он никогда не будет брать резервов, упаковываться и отгружаться. Используется для разработки нестандартных решений.

</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 24.9383%; height: 55px;">orderSubType</td><td class="confluenceTd" style="width: 9.87653%; height: 55px;">string</td><td style="width: 5.80244%; height: 55px;">да</td><td style="width: 6.91355%; height: 55px;">нет</td><td class="confluenceTd" style="width: 62.9629%; height: 55px;">Подтип заказа, в случае orderType = CUSTOM.

</td></tr><tr role="row" style="height: 233px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 233px;" title="Цвет фона: Зеленый">summaryItemAmountState</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 233px;" title="Цвет фона: Зеленый">Object</td><td style="width: 5.80244%; height: 233px;">нет</td><td style="width: 6.91355%; height: 233px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 233px;" title="Цвет фона: Зеленый">вывод суммарных оборотных данных по заказу

например:   
"amountORDERED": 3,  
"amountRESERVED": 0,  
"amountPACKED": 0,  
"amountSHIPPED": 0,  
"amountLOST": 0,  
"amountDELIVERED": 0,  
"amountRETURNED": 0,

"amountRETURNED\_DEFECTIVE": 0

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">isMarketplaceOrder</td><td style="width: 9.87653%; height: 35px;">boolean</td><td style="width: 5.80244%; height: 35px;">нет</td><td style="width: 6.91355%; height: 35px;">-</td><td style="width: 62.9629%; height: 35px;">Флаг, определяющий заказы маркетплейсов

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">plannedTakeOutDate</td><td style="width: 9.87653%; height: 35px;">datetime</td><td style="width: 5.80244%; height: 35px;">нет</td><td style="width: 6.91355%; height: 35px;">-</td><td style="width: 62.9629%; height: 35px;">Дата планируемой отгрузки

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">readyForFFExport</td><td style="width: 9.87653%; height: 35px;">boolean</td><td style="width: 5.80244%; height: 35px;">нет</td><td style="width: 6.91355%; height: 35px;">-</td><td style="width: 62.9629%; height: 35px;">Флаг, определяющий готовность заказа к выгрузке в Темполайн

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">**delivery**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 28px;" title="Цвет фона: Зеленый">Object</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 28px;" title="Цвет фона: Зеленый">Объект, описывающий доставку

code - технический код службы доставки

  
title - название доставки

  
type - тип доставки

actualDeliveryDate - фактическая дата доставки  
(пример: 2020-11-19 17:07)

  
address - объект, описывающий адрес доставки

  
courierPlanDeliveryDate - планируемя дата доставка  
(пример: 2020-11-19 00:00)

  
courierPlanDeliveryDateChangeReason - причина изменения даты доставки

  
deliveryServices - доп. опции доставки:

- CHECK\_CONTENT - осмотр вложения
- CONTACTLESS\_DELIVERY - бесконтактная доставка
- DANGEROUS\_CARGO - опасный груз
- DAY\_OFF\_DELIVERY - проверка состояния
- DELIVERY\_DATE\_APPROVE - согласование даты и времени доставки
- LIFT\_TO\_DOOR - погрузо-разгрузочные работы на лифте
- LIFT\_TO\_DOOR\_MANUAL - погрузо-разгрузочные работы на руках
- PARTIAL\_DELIVERY - частичная доставка
- PERSONALLY\_IN\_HANDS - лично в руки
- REVERSE - возврат сопроводительных документов
- TEMPERATURE\_REGIME - температурный режим
- TRYING - примерка
- VERIFY - проверка состояния
- WAITING\_ON\_ADDRESS - Ожидание на адресе

deliveryComment - комментарий к доставке

  
deliverySumBelowLimitAmount - нижняя граница ограничения стоимости доставки

  
deliverySumLimitAmount - верхняя граница ограничения стоимости доставки

isDeliverySumLimitActive - флаг включения ограничения стоимости доставки

  
desiredDeliveryTimeFrom - желаемое время доставки, с  
(пример: 09:00)

  
desiredDeliveryTimeTo - желаемое время доставки, до  
(пример: 18:00)

  
desiredDeliveryDate - желаемая дата доставка

  
isDeliverySumLimitActive - активировано ограничение суммы доставки

  
logoUrl - ссылка на логотип службы доставки

  
pickupPointId - идентификатор ПВЗ

  
pvzComment - комментарий для ПВЗ

  
receiver - объект, описывающий получателя доставки

  
trackingNumber - трэк-номер доставки

  
trackingURL - ссылка на страницу отслеживания доставки

savedAddressId - id адреса, сохранённого с помощью запроса [/api/lite/pub/save\_dadata\_address](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apilitepubsave-dadata-address) (используется для интеграции с [1С-Битрикс](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/modul-rascheta-dostavki-v-oformlenii-zakaza-tarifikatsiya))

</td></tr><tr role="row" style="height: 55px; background-color: #e9f1e0;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 55px;" title="Цвет фона: Зеленый">code

*ранее deliveryCode*

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 55px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 55px;">да</td><td style="width: 6.91355%; height: 55px;">**да**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 55px;" title="Цвет фона: Зеленый">Технический идентификатор способа доставки (договора доставки).

Пример: 258296e9-acee-4361-a55b-bd4c3f3913af

</td></tr><tr role="row" style="height: 55px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 55px;" title="Цвет фона: Зеленый">deliveryCode

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 55px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 55px;">нет</td><td style="width: 6.91355%; height: 55px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 55px;" title="Цвет фона: Зеленый">Код способа доставки из тарификатора

Пример: 258296e9-acee-4361-a55b-bd4c3f3913af

</td></tr><tr role="row" style="height: 106px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 106px;" title="Цвет фона: Зеленый">type

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 106px;" title="Цвет фона: Зеленый">enum</td><td style="width: 5.80244%; height: 106px;">нет</td><td style="width: 6.91355%; height: 106px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 106px;" title="Цвет фона: Зеленый">Тип доставки:

- COURIER - курьером до двери
- PVZ - в пункт выдачи заказов
- RUSSIAN\_POST - в отделение Почты России

</td></tr><tr role="row" style="height: 55px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 55px;" title="Цвет фона: Зеленый">title

*ранее courier*

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 55px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 55px;">нет</td><td style="width: 6.91355%; height: 55px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 55px;" title="Цвет фона: Зеленый">Наименование курьерской службы

Пример: Boxberry

</td></tr><tr role="row" style="height: 44px; background-color: #e9f1e0;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 44px;" title="Цвет фона: Зеленый">pickupPointId</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 44px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 44px;">да</td><td style="width: 6.91355%; height: 44px;">**да\***</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 44px;" title="Цвет фона: Зеленый">Идентификатор пункта выдачи заказов (в рамках выбранной курьерской службы)

<sub>\* Если доставка в ПВЗ / постамат</sub>

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">logoURL</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 28px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 28px;" title="Цвет фона: Зеленый">Прямая ссылка на логотип службы доставки.</td></tr><tr role="row" style="height: 55px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 55px;" title="Цвет фона: Зеленый">trackingNumber

*ранее был вне delivery*

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 55px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 55px;">нет</td><td style="width: 6.91355%; height: 55px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 55px;" title="Цвет фона: Зеленый">Как правило, заполняется в момент получения данных от курьерской компании.</td></tr><tr role="row" style="height: 142px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 142px;" title="Цвет фона: Зеленый">trackingURL

*ранее trackingLink*

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 142px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 142px;">нет</td><td style="width: 6.91355%; height: 142px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 142px;" title="Цвет фона: Зеленый">Полная ссылка на трекинг.

Пример: [https://boxberry.ru/tracking/11122233](https://boxberry.ru/tracking/11122233).

*UPD: 2023-07-05*

</td></tr><tr role="row" style="height: 99px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 99px;" title="Цвет фона: Зеленый">desiredDeliveryDate</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 99px;" title="Цвет фона: Зеленый">date</td><td style="width: 5.80244%; height: 99px;">да</td><td style="width: 6.91355%; height: 99px;">нет</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 99px;" title="Цвет фона: Зеленый">Желаемая покупателем дата доставки.

Кактус передает эту информацию в курьерские службы как рекомендательный параметр. Не все курьерские службы учитывают эту информацию.

</td></tr><tr role="row" style="height: 77px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 77px;" title="Цвет фона: Зеленый">desiredDeliveryTimeFrom": "09:00",

*ранее timeFrom*

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 77px;" title="Цвет фона: Зеленый">HH:ss</td><td style="width: 5.80244%; height: 77px;">да</td><td style="width: 6.91355%; height: 77px;">нет</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 77px;" title="Цвет фона: Зеленый">Желаемое время доставки "от". С лидирующими нулями.

Пример "09:00".

</td></tr><tr role="row" style="height: 77px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 77px;" title="Цвет фона: Зеленый">"desiredDeliveryTimeTo": "20:00",

*ранее timeTo*

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 77px;" title="Цвет фона: Зеленый">HH:ss</td><td style="width: 5.80244%; height: 77px;">да</td><td style="width: 6.91355%; height: 77px;">нет</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 77px;" title="Цвет фона: Зеленый">Желаемое время доставки "по". С лидирующими нулями.

Пример "20:00".

</td></tr><tr role="row" style="height: 77px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 37px;" title="Цвет фона: Зеленый">deliveryComment</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 37px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 37px;">да</td><td style="width: 6.91355%; height: 37px;">нет</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 37px;" title="Цвет фона: Зеленый">Комментарий для целей доставки.

*Поле устарело. Рекомендуется использовать поле **comment**.*

</td></tr><tr role="row" style="height: 77px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 80px;" title="Цвет фона: Зеленый">pvzComment</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 80px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 80px;">нет</td><td style="width: 6.91355%; height: 80px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 80px;" title="Цвет фона: Зеленый">В случае способа доставки через ПВЗ, содержит адрес и время работы ПВЗ.

</td></tr><tr role="row" style="height: 77px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 80px;" title="Цвет фона: Зеленый">actualDeliveryDate</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 80px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 80px;">нет</td><td style="width: 6.91355%; height: 80px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 80px;" title="Цвет фона: Зеленый">Дата фактической доставки от курьерской службы

</td></tr><tr role="row" style="height: 77px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 80px;" title="Цвет фона: Зеленый">courierPlanDeliveryDate</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 80px;" title="Цвет фона: Зеленый">date</td><td style="width: 5.80244%; height: 80px;">нет</td><td style="width: 6.91355%; height: 80px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 80px;" title="Цвет фона: Зеленый">Плановая дата доставки от курьерской службы

</td></tr><tr role="row" style="height: 77px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 80px;" title="Цвет фона: Зеленый">courierPlanDeliveryDateChangeReason</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 80px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 80px;">нет</td><td style="width: 6.91355%; height: 80px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 80px;" title="Цвет фона: Зеленый">Причина переноса плановой даты доставки от курьерской службы

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">**address**</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">Object</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Объект, описывающий адрес доставки

*ВАЖНО: в случае передачи адреса в компонентах адреса строковое поле fullAddress игнорируется (будьте внимательны при заполнении значений, пожалуйста, не путайте поля building и block)*

*Для проверки парсинга компонентов адреса, можно передавать ожидаемый адрес в поле rawData и после обработки сравнивать его с итоговым полем fullAddress. Если поле rawData не было передано, то оно заполнится автоматически из переданного поля fullAddress перед парсингом компонентов, а в поле fullAddress запишется результат парсинга.*

</td></tr><tr role="row" style="height: 55px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 55px;" title="Цвет фона: Синий">countryCode</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 55px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 55px;">да</td><td style="width: 6.91355%; height: 55px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 55px;" title="Цвет фона: Синий">Двухбуквенный код страны по стандарту ISO 3166-1 (Alpha 2).

[https://ru.wikipedia.org/wiki/ISO\_3166-1](https://ru.wikipedia.org/wiki/ISO_3166-1)

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">country</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Страна прописью</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">region</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет (для Почты РФ - да)</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Регион. Для РФ - по ФИАС.</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">area</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Район. Для РФ - по ФИАС.</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">city</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да\***</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Город. Для РФ - по ФИАС.

<sub>\* если не задан населенный пункт</sub>

</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">settlement</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да\***</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Населенный пункт. Для РФ - по ФИАС.

<sub>\* если не задан город</sub>

</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">street</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да\***</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Улица *(в т.ч. проспект/проезд/и т.п. - пример: "проспект Победы")*

<sub>*\* если курьерская доставка и не задан дом*</sub>

</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">house</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да\***</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Дом

<sub>*\* если курьерская доставка и не задана улица*</sub>

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">block</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Корпус</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">building</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Строение</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">flat</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Квартира/Офис</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">fullAddress</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Полный адрес (адрес одной строкой)</td></tr><tr style="height: 57px;"><td style="width: 24.9383%; height: 57px;">floor</td><td style="width: 9.87653%; height: 57px;">integer</td><td style="width: 5.80244%; height: 57px;">да</td><td style="width: 6.91355%; height: 57px;">нет\*</td><td style="width: 62.9629%; height: 57px;">Этаж

<sub> \*при передаче в deliveryServices LIFT\_TO\_DOOR\_MANUAL этаж -- обязателен для заполнения</sub>

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">fullCity</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Полное наименование города (вместе с типом)</td></tr><tr role="row" style="height: 44px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 44px;" title="Цвет фона: Синий">rawData</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 44px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 44px;">да</td><td style="width: 6.91355%; height: 44px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 44px;" title="Цвет фона: Синий">Адрес в "сыром" виде - как он изначально был загружен вместе с заказом.</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">zip</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Почтовый индекс</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">regionFias</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Код региона по ФИАС

<sup>(поле обязательно, кроме доставки самовывозом)</sup>

</td></tr><tr role="row" style="background-color: #e9f1e0;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">areaFias</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да\***</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Код района по ФИАС

<sub>\* должен быть задан хотя бы 1 фиас из 3х (areaFias, cityFias, settlementFias), если поле присутствует в классификаторе фиас</sub>

<sub><sup>(поле обязательно, кроме доставки самовывозом)</sup></sub>

</td></tr><tr role="row" style="background-color: #e9f1e0;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">cityFias</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да\***</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Код города по ФИАС

<sub>\* должен быть задан хотя бы 1 фиас из 3х (areaFias, cityFias, settlementFias) </sub>

<sub><sup>(поле обязательно, кроме доставки самовывозом)</sup></sub>

</td></tr><tr role="row" style="background-color: #e9f1e0;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">settlementFias</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да\***</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Код населенного пункта по ФИАС

<sub>\* должен быть задан хотя бы 1 фиас из 3х (areaFias, cityFias, settlementFias) </sub>

<sub><sup>(поле обязательно, кроме доставки самовывозом)</sup></sub>

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">**receiver**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">Object</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Объект, описывающий получателя заказа</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">name</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Имя</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">surname</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Фамилия</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">patronymic</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Отчество</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">phone</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Телефон</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">alternativePhone</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Альтернативный телефон</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">email</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Почтовый адрес</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">**pvzInfo**</td><td style="width: 9.87653%; height: 29px;">Object</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Объект с информацией о пункте выдачи</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">address</td><td style="width: 9.87653%; height: 29px;">Object</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Объект с адресом пункта выдачи</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div>metroStation</div></div></td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Ближайшая станция метро</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div>latitude</div></div></td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Широта</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div>longitude</div></div></td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Долгота</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div>code</div></div></td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Код пункта выдачи</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div>courier</div></div></td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">КС</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div><div><div>courierCode</div></div></div></div></td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Код КС</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div><div><div>description</div></div></div></div></td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Описание</td></tr><tr style="height: 79px;"><td style="width: 24.9383%; height: 79px;"><div><div><div><div>maxSize</div></div></div></div></td><td style="width: 9.87653%; height: 79px;">string</td><td style="width: 5.80244%; height: 79px;">нет</td><td style="width: 6.91355%; height: 79px;">-</td><td style="width: 62.9629%; height: 79px;">Максимальные габариты в см

Либо 1 число - сумма 3х измерений

Либо в формате 36x36x60

</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div>maxWeight</div></div></td><td style="width: 9.87653%; height: 29px;">integer</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Максимальный вес в кг</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div><div><div>workTime</div></div></div></div></td><td style="width: 9.87653%; height: 29px;">string</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Время работы</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;"><div><div><div><div>paymentMethods</div></div></div></div></td><td style="width: 9.87653%; height: 29px;">Array of enum</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Доступные способы оплаты. (COD\_CASH, COD\_CARD)</td></tr><tr style="height: 100px;"><td style="width: 24.9383%; height: 100px;"><div><div><div><div>type</div></div></div></div></td><td style="width: 9.87653%; height: 100px;">enum</td><td style="width: 5.80244%; height: 100px;">нет</td><td style="width: 6.91355%; height: 100px;">-</td><td style="width: 62.9629%; height: 100px;">Тип пункта выдачи:  
- Postamat
- PVZ
- CASHIER\_ISSUE\_POINT

</td></tr><tr style="height: 45px;"><td style="width: 24.9383%; height: 45px;"><div><div>courierPostamatType</div></div><div><div><div><div></div></div></div></div></td><td style="width: 9.87653%; height: 45px;">string</td><td style="width: 5.80244%; height: 45px;">нет</td><td style="width: 6.91355%; height: 45px;">-</td><td style="width: 62.9629%; height: 45px;">Тип пункта выдачи по версии КС</td></tr><tr role="row" style="height: 77px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 77px;" title="Цвет фона: Синий">**legalEntity**</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 9.87653%; height: 77px;" title="Цвет фона: Красный">Object</td><td style="width: 5.80244%; height: 77px;">да</td><td style="width: 6.91355%; height: 77px;">нет</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 62.9629%; height: 77px;" title="Цвет фона: Красный">Контрагент покупатель, с юридической точки зрения.

Если покупатель - обычное физическое лицо, type = PERSON, если юридическое лицо (ИП, ООО и т.п.), type = COMPANY

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">id</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 9.87653%; height: 28px;" title="Цвет фона: Красный">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 62.9629%; height: 28px;" title="Цвет фона: Красный">Идентификатор контрагента</td></tr><tr role="row" style="height: 90px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 90px;" title="Цвет фона: Синий">type</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 9.87653%; height: 90px;" title="Цвет фона: Красный">enum</td><td style="width: 5.80244%; height: 90px;">да</td><td style="width: 6.91355%; height: 90px;">нет</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 62.9629%; height: 90px;" title="Цвет фона: Красный">Тип контрагента:

- PERSON - физическое лицо
- COMPANY - юридическое

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 24.9383%; height: 28px;" title="Цвет фона: Синий">name</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 9.87653%; height: 28px;" title="Цвет фона: Красный">string</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">нет</td><td class="highlight-red confluenceTd" data-highlight-colour="red" style="width: 62.9629%; height: 28px;" title="Цвет фона: Красный">Наименование контрагента</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">**items**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 28px;" title="Цвет фона: Зеленый">Array of Objects</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 28px;" title="Цвет фона: Зеленый">Массив объектов - позиции заказа.  
  
*ВАЖНО: Доставку необходимо передавать всегда последним элементом списка*</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">num</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 28px;" title="Цвет фона: Зеленый">integer</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 28px;" title="Цвет фона: Зеленый">Номер строки</td></tr><tr role="row" style="height: 77px; background-color: #e9f1e0;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 77px;" title="Цвет фона: Зеленый">variantId

*ранее skuId*

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 77px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 77px;">да</td><td style="width: 6.91355%; height: 77px;">**да**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 77px;" title="Цвет фона: Зеленый">Идентификатор варианта - основной идентификатор позиции заказа. У продукта всегда есть один вариант.

В случае строки "Доставка", содержит "delivery".

</td></tr><tr role="row" style="height: 77px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 77px;" title="Цвет фона: Зеленый">productId</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 77px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 77px;">нет</td><td style="width: 6.91355%; height: 77px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 77px;" title="Цвет фона: Зеленый">Идентификатор продукта. Общий идентификатор (один продукт может иметь несколько вариантов).

В случае строки "Доставка", содержит "delivery".

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">name</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 28px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 28px;" title="Цвет фона: Зеленый">Наименовании позиции заказа</td></tr><tr role="row" style="height: 55px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 55px;" title="Цвет фона: Зеленый">article

*ранее skuArticle*

</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 55px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 55px;">да</td><td style="width: 6.91355%; height: 55px;">нет</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 55px;" title="Цвет фона: Зеленый">Артикул</td></tr><tr role="row" style="height: 33px; background-color: #e9f1e0;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 33px;" title="Цвет фона: Зеленый">quantity</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 33px;" title="Цвет фона: Зеленый">decimal</td><td style="width: 5.80244%; height: 33px;">да</td><td style="width: 6.91355%; height: 33px;">**да**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 33px;" title="Цвет фона: Зеленый">Количество заказанного товара

</td></tr><tr role="row" style="height: 60px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 60px;" title="Цвет фона: Зеленый">quantityReserved</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 60px;" title="Цвет фона: Зеленый">decimal</td><td style="width: 5.80244%; height: 60px;">нет</td><td style="width: 6.91355%; height: 60px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 60px;" title="Цвет фона: Зеленый">Количество зарезервированного товара. Для начала комплектации, оно должно совпадать с количеством заказанного (все товары должны быть зарезервированы).</td></tr><tr role="row" style="height: 44px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 44px;" title="Цвет фона: Зеленый">quantityAvailable</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 44px;" title="Цвет фона: Зеленый">decimal</td><td style="width: 5.80244%; height: 44px;">нет</td><td style="width: 6.91355%; height: 44px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 44px;" title="Цвет фона: Зеленый">Количество доступного данного товара к продаже (за минусом зарезервированного).</td></tr><tr role="row" style="height: 139px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 139px;" title="Цвет фона: Зеленый">vatRate</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 139px;" title="Цвет фона: Зеленый">enum</td><td style="width: 5.80244%; height: 139px;">да</td><td style="width: 6.91355%; height: 139px;">нет</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 139px;" title="Цвет фона: Зеленый">Ставка НДС для строки заказа:

- NO\_VAT – без НДС (например, для компаний на УСН)
- VAT\_0
- VAT\_10
- VAT\_18
- VAT\_20

</td></tr><tr role="row" style="height: 139px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 139px;" title="Цвет фона: Зеленый">vatSkuProduct</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 139px;" title="Цвет фона: Зеленый">enum</td><td style="width: 5.80244%; height: 139px;">нет</td><td style="width: 6.91355%; height: 139px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 139px;" title="Цвет фона: Зеленый">Ставка НДС в карточке данного продукта

- NO\_VAT – без НДС (например, для компаний на УСН)
- VAT\_0
- VAT\_10
- VAT\_18
- VAT\_20

</td></tr><tr role="row" style="height: 28px; background-color: #e9f1e0;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">price</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 28px;" title="Цвет фона: Зеленый">decimal</td><td style="width: 5.80244%; height: 28px;">да</td><td style="width: 6.91355%; height: 28px;">**да**</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 28px;" title="Цвет фона: Зеленый">Стоимость единицы позиции</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">img</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 28px;" title="Цвет фона: Зеленый">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 28px;" title="Цвет фона: Зеленый">Полная ссылка на картинку с товаром</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">sum</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 28px;" title="Цвет фона: Зеленый">decimal</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 28px;" title="Цвет фона: Зеленый">Итоговая сумма по строке</td></tr><tr role="row" style="height: 230px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 230px;" title="Цвет фона: Зеленый">itemAmountState</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 230px;" title="Цвет фона: Зеленый">Object</td><td style="width: 5.80244%; height: 230px;">нет</td><td style="width: 6.91355%; height: 230px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 230px;" title="Цвет фона: Зеленый">для товаров - вывод оборотных данных по заказу по каждой позиции

например:   
"amountORDERED": 3,  
"amountRESERVED": 0,  
"amountPACKED": 0,  
"amountSHIPPED": 0,  
"amountLOST": 0,  
"amountDELIVERED": 0,  
"amountRETURNED": 0,

"amountRETURNED\_DEFECTIVE": 0

"amountRETURNED\_TO\_CLIENT": 0

</td></tr><tr role="row" style="height: 122px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 122px;" title="Цвет фона: Зеленый">skuType</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 122px;" title="Цвет фона: Зеленый">enum</td><td style="width: 5.80244%; height: 122px;">нет</td><td style="width: 6.91355%; height: 122px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 122px;" title="Цвет фона: Зеленый">Тип позиции:

- SKU – Товар
- SKUSET – Набор (виртуальный товар, содержащий реальные SKU)
- SERVICE – Услуга, например "Доставка"

</td></tr><tr style="height: 92px;"><td style="width: 24.9383%; height: 92px;">expirationMode</td><td style="width: 9.87653%; height: 92px;">enum</td><td style="width: 5.80244%; height: 92px;">да</td><td style="width: 6.91355%; height: 92px;">нет</td><td style="width: 62.9629%; height: 92px;">Режим работы по срокам годности

- USE\_EXPIRATION
- <div>NO_EXPIRATION</div>

</td></tr><tr style="height: 102px;"><td style="width: 24.9383%; height: 101px;">expirationDays</td><td style="width: 9.87653%; height: 101px;">integer</td><td style="width: 5.80244%; height: 101px;">да</td><td style="width: 6.91355%; height: 101px;">нет</td><td style="width: 62.9629%; height: 101px;">Желаемое допустимое максимальное число дней до окончания срока годности к отгрузке. Например, при значении 100 - склад сможет подбирать в заказ товары где минимальный остаточный срок годности - не менее 100 суток.

</td></tr><tr style="height: 80px;"><td style="width: 24.9383%; height: 80px;">batchName  
</td><td style="width: 9.87653%; height: 80px;">string</td><td style="width: 5.80244%; height: 80px;">да</td><td style="width: 6.91355%; height: 80px;">нет</td><td style="width: 62.9629%; height: 80px;">Желаемый номер партии товара.  
Если значение указано, при сборке заказа будет использован товар из данной партии

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">tag</td><td style="width: 9.87653%; height: 35px;">string</td><td style="width: 5.80244%; height: 35px;">да</td><td style="width: 6.91355%; height: 35px;">нет</td><td style="width: 62.9629%; height: 35px;">Тег, присвоенный товару

</td></tr><tr><td style="width: 24.9383%;">isPreferredPacking  
</td><td style="width: 9.87653%;">boolean</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">Флаг обязательности упаковочных

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">**packingMaterials**</td><td style="width: 9.87653%; height: 35px;">Object</td><td style="width: 5.80244%; height: 35px;">да</td><td style="width: 6.91355%; height: 35px;">нет</td><td style="width: 62.9629%; height: 35px;">Упаковочные материалы

</td></tr><tr><td style="width: 24.9383%;">commonMaterials  
</td><td style="width: 9.87653%;">Array</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">Упаковочные материалы склада

</td></tr><tr><td style="width: 24.9383%;">customMaterials</td><td style="width: 9.87653%;">Array</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">Упаковочные материалы клиента

</td></tr><tr><td style="width: 24.9383%;">name</td><td style="width: 9.87653%;">String</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">Наименование упаковочного материала

</td></tr><tr><td style="width: 24.9383%;">num</td><td style="width: 9.87653%;">Integer</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">Порядковый номер упаковочного материала

</td></tr><tr><td style="width: 24.9383%;">productId</td><td style="width: 9.87653%;">String</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">ID продукта упаковочного материала

</td></tr><tr><td style="width: 24.9383%;">quantity</td><td style="width: 9.87653%;">Integer</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">Количество упаковочных материалов

</td></tr><tr><td style="width: 24.9383%;">skuType</td><td style="width: 9.87653%;">String</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">Тип продукта

</td></tr><tr><td style="width: 24.9383%;">variantId</td><td style="width: 9.87653%;">String</td><td style="width: 5.80244%;">да</td><td style="width: 6.91355%;">нет</td><td style="width: 62.9629%;">ID варинта упаковочного материала

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">**accountingAttributes**</td><td style="width: 9.87653%; height: 35px;">Object</td><td style="width: 5.80244%; height: 35px;">нет</td><td style="width: 6.91355%; height: 35px;">-</td><td style="width: 62.9629%; height: 35px;">Атрибуты учёта, например, ЧЗ или серийный номер

</td></tr><tr style="height: 92px;"><td style="width: 24.9383%; height: 92px;">code</td><td style="width: 9.87653%; height: 92px;">enum</td><td style="width: 5.80244%; height: 92px;">нет</td><td style="width: 6.91355%; height: 92px;">-</td><td style="width: 62.9629%; height: 92px;">Тип атрибута учёта::

- chestnyznak - ЧЗ
- uniquenumber - уникальный номер

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">stringValue</td><td style="width: 9.87653%; height: 35px;">string</td><td style="width: 5.80244%; height: 35px;">нет</td><td style="width: 6.91355%; height: 35px;">-</td><td style="width: 62.9629%; height: 35px;">Значение атрибута учёта

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">n</td><td style="width: 9.87653%; height: 35px;">integer</td><td style="width: 5.80244%; height: 35px;">нет</td><td style="width: 6.91355%; height: 35px;">-</td><td style="width: 62.9629%; height: 35px;">Порядковый номер атрибута учёта

</td></tr><tr role="row" style="height: 55px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 55px;" title="Цвет фона: Зеленый">**optionsUsed**</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 55px;" title="Цвет фона: Синий">Object</td><td style="width: 5.80244%; height: 55px;">нет</td><td style="width: 6.91355%; height: 55px;">-</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 55px;" title="Цвет фона: Синий">Используемые свойства, характеризующие данный вариант (если используются варианты для данного продукта).

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">code</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Код свойства, например "size"</td></tr><tr role="row" style="height: 28px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 28px;" title="Цвет фона: Зеленый">value</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 9.87653%; height: 28px;" title="Цвет фона: Синий">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-blue confluenceTd" data-highlight-colour="blue" style="width: 62.9629%; height: 28px;" title="Цвет фона: Синий">Значение свойства, например "XL"</td></tr><tr role="row" style="height: 77px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 77px;" title="Цвет фона: Желтый">**packings**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 77px;" title="Цвет фона: Желтый">Object</td><td style="width: 5.80244%; height: 77px;">нет</td><td style="width: 6.91355%; height: 77px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 77px;" title="Цвет фона: Желтый">Упаковки (транспортные места) заказа. Содержит информацию только после упаковки заказа (в том числе частичной упаковке).

</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">barcode</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Штрихкод места (упаковки)</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">**measurements**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">Object</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Габариты и вес упаковки при упаковке на складе</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">weight</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">decimal</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Вес упаковки в граммах</td></tr><tr role="row" style="height: 164px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 164px;" title="Цвет фона: Желтый">dimensions</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 164px;" title="Цвет фона: Желтый">Object</td><td style="width: 5.80244%; height: 164px;">нет</td><td style="width: 6.91355%; height: 164px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 164px;" title="Цвет фона: Желтый">Содержит размеры упаковки в миллиметрах

Пример

{

"height": 120,  
"width": 120,  
"depth": 120

}

</td></tr><tr role="row" style="height: 44px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 44px;" title="Цвет фона: Желтый">**measurementsOnSort**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 44px;" title="Цвет фона: Желтый">Object</td><td style="width: 5.80244%; height: 44px;">нет</td><td style="width: 6.91355%; height: 44px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 44px;" title="Цвет фона: Желтый">Габариты и вес упаковки, измеренные в процессе сортировки (если измерения проводились)</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">weight</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">decimal</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Вес упаковки в граммах</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">dimensions</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">Object</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Содержит размеры упаковки в сантиметрах</td></tr><tr role="row" style="height: 28px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 24.9383%; height: 28px;" title="Цвет фона: Желтый">**items**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 9.87653%; height: 28px;" title="Цвет фона: Желтый">Object</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="width: 62.9629%; height: 28px;" title="Цвет фона: Желтый">Содержимое упаковки (структура аналогична items заказа)</td></tr><tr role="row" style="height: 44px;"><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 24.9383%; height: 44px;" title="Цвет фона: Зеленый">expenses</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 9.87653%; height: 44px;" title="Цвет фона: Зеленый">Array</td><td style="width: 5.80244%; height: 44px;">нет</td><td style="width: 6.91355%; height: 44px;">-</td><td class="highlight-green confluenceTd" data-highlight-colour="green" style="width: 62.9629%; height: 44px;" title="Цвет фона: Зеленый">Расходы по данному заказу. Например, расходы на доставку, на страховку, на наложенный платеж, на фулфилмент операции - и т.д.</td></tr><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;"><div><div>files</div></div></td><td style="width: 9.87653%; height: 28px;">Array</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td style="width: 62.9629%; height: 28px;">Прикрепленные к заказу файлы</td></tr><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">**rawDeliveryStatuses**</td><td style="width: 9.87653%; height: 28px;">Object</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td style="width: 62.9629%; height: 28px;">Статусы от курьерской компании</td></tr><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">courierStatusDate</td><td style="width: 9.87653%; height: 28px;">date</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td style="width: 62.9629%; height: 28px;">Дата статуса от курьерской компании</td></tr><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">statusCode</td><td style="width: 9.87653%; height: 28px;">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td style="width: 62.9629%; height: 28px;">Код статуса</td></tr><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">statusMessage</td><td style="width: 9.87653%; height: 28px;">string</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td style="width: 62.9629%; height: 28px;">Сообщение к статусу</td></tr><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">**permissionList**</td><td style="width: 9.87653%; height: 28px;">Object</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td style="width: 62.9629%; height: 28px;">Список разрешений для заказа (только для fullInfo=true)</td></tr><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">fieldPermissions</td><td style="width: 9.87653%; height: 28px;">Array</td><td style="width: 5.80244%; height: 28px;">нет</td><td style="width: 6.91355%; height: 28px;">-</td><td style="width: 62.9629%; height: 28px;">Список разрешений на внесение изменений в группы полей заказа

\- type = одно из значений групп полей заказа:

ITEMS\_EDITABLE, PAYMENT\_EDITABLE, IS\_PAID\_EDITABLE, RECEIVER\_EDITABLE, DELIVERY\_EDITABLE, WAREHOUSE\_EDITABLE), COMMENTS\_EDITABLE

\- value - флаг, разрешены ли изменения

\- reason - причина запрета, если value = false

</td></tr><tr style="height: 164px;"><td style="width: 24.9383%; height: 164px;">actionPermissions</td><td style="width: 9.87653%; height: 164px;">Array</td><td style="width: 5.80244%; height: 164px;">нет</td><td style="width: 6.91355%; height: 164px;">-</td><td style="width: 62.9629%; height: 164px;">Список разрешений на действия с заказом (кнопки)

\- type = одно из значений действий с заказом:

CANCEL, CONFIRM, NEED\_CONFIRM, PACK, COPY, PACK\_CONTROL, UNPACK, SHIPPING, UNSHIPPING, REFRESH\_RESERVE, RETURN\_TO\_DELIVERY, REVERT\_RETURNS

\- value - флаг, разрешены ли изменения

\- reason - причина запрета, если value = false

</td></tr><tr style="height: 164px;"><td style="width: 24.9383%; height: 164px;">codPayments</td><td style="width: 9.87653%; height: 164px;">Array</td><td style="width: 5.80244%; height: 164px;">нет</td><td style="width: 6.91355%; height: 164px;">-</td><td style="width: 62.9629%; height: 164px;">Список переводов наложенных платежей по данному заказу

</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">packingVideos</td><td style="width: 9.87653%; height: 29px;">Array</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Ссылки не видео упаковки заказа</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">returnUnpackingVideos</td><td style="width: 9.87653%; height: 29px;">Array</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">Ссылки не видео приемки возврата заказа</td></tr><tr style="height: 33px;"><td style="width: 24.9383%; height: 33px;">initialOrder</td><td style="width: 9.87653%; height: 33px;">string</td><td style="width: 5.80244%; height: 33px;">да</td><td style="width: 6.91355%; height: 33px;">нет</td><td style="width: 62.9629%; height: 33px;">Технический id изначального заказа (заказ-подписка например)

</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">packingOptions</td><td style="width: 9.87653%; height: 35px;">Array</td><td style="width: 5.80244%; height: 35px;">да</td><td style="width: 6.91355%; height: 35px;">нет</td><td style="width: 62.9629%; height: 35px;">Список опций упаковки

</td></tr><tr style="height: 90px;"><td style="width: 24.9383%; height: 90px;">onlinePaymentType</td><td style="width: 9.87653%; height: 90px;">enum</td><td style="width: 5.80244%; height: 90px;">да</td><td style="width: 6.91355%; height: 90px;">нет</td><td style="width: 62.9629%; height: 90px;">Тип онлайн оплаты:

- FULL
- RECURRENT

</td></tr><tr style="height: 29px;"><td style="width: 24.9383%; height: 29px;">crossdockEditable</td><td style="width: 9.87653%; height: 29px;">boolean</td><td style="width: 5.80244%; height: 29px;">нет</td><td style="width: 6.91355%; height: 29px;">-</td><td style="width: 62.9629%; height: 29px;">флаг, что заказ еще доступен для редактирования (только для аккаунтов в выключенным резервированием по умолчанию и только при запросе по id заказа). Редактировать заказ можно только при значении true</td></tr><tr style="height: 35px;"><td style="width: 24.9383%; height: 35px;">**warehouseShippingOptions**</td><td style="width: 9.87653%; height: 35px;">Object</td><td style="width: 5.80244%; height: 35px;">да</td><td style="width: 6.91355%; height: 35px;">нет</td><td style="width: 62.9629%; height: 35px;">Настройки отгрузки

<div><span style="color: #808080;">monopackingsOnly - флаг использования монокоробов (устаревший)</span></div><div>packingType - тип упаковки:</div>- <div>MIX_PACKINGS - смешанная упаковка</div>
- <div>MONO_PACKINGS - монокороба</div>
- <div>MONO_PALLETS - монопаллеты</div>

</td></tr><tr style="height: 80px;"><td style="width: 24.9383%; height: 80px;">**originClientNumber**</td><td style="width: 9.87653%; height: 80px;">string</td><td style="width: 5.80244%; height: 80px;">нет</td><td style="width: 6.91355%; height: 80px;">нет</td><td style="width: 62.9629%; height: 80px;">идентификатора магазина на маркет плэйсе, для OZON &amp; MegaMarket - логин продавца, для WB &amp; Яндекс Маркет - код магазина

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

</div>Пример запроса по одному заказу и полными данными:  
`<span style="color: #505050;">/api/lite/orders?id=4249-756&full_info=true</span>`

####  

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

Пример запроса по списку заказов:  
`<span style="color: #505050;">/api/lite/orders?order=id+desc</span>`

####  

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

<div id="bkmrk-%7B-%22success%22%3A-true%2C-%22-0"><div data-hasbody="true" data-macro-name="code">```JSON
{<br></br>    "success": true,<br></br>    "recordsTotal": 2,<br></br>    "orders": [<br></br>        {<br></br>            "id": "7277-1002",<br></br>            "externalId": "extId",<br></br>            "externalId2": "extId2",<br></br>            "externalId3": "extId3",<br></br>            "externalId4": "extId4",<br></br>            "externalId5": "extId5",<br></br>            "date": "2020-01-22 16:37:56",<br></br>            "needReserve": true,<br></br>            "createTs": "2020-01-22 16:37:57.528",<br></br>            "updateTs": "2020-01-22 16:37:57.528",<br></br>            "status": "ORDER_INFO_DRAFT",<br></br>            "totalOrderSum": 999,<br></br>            "insuranceSum": 999,<br></br>            "insuranceSumAutoCalculation":true,<br></br>            "paymentStatus": "NOT_PAID",<br></br>            "paymentMethodCode": "online",<br></br>            "needCustomerPayment": false,<br></br>            "confirmStatus": "APPROVED",<br></br>            "comment": "",<br></br>            "tags": [],<br></br>            "delivery": {<br></br>                "code": "PICKPOINT",<br></br>                "type": "PVZ",<br></br>                "title": "PickPoint",<br></br>                "pickupPointId": "12345",<br></br>                "logoUrl": null,<br></br>                "trackingNumber": null,<br></br>                "trackingURL": null,<br></br>                "desiredDeliveryDate": "2020-02-14",<br></br>                "desiredDeliveryTimeFrom": "09:00",<br></br>                "desiredDeliveryTimeTo": "20:00",<br></br>                "deliveryComment": "Поскорее",<br></br>                "address": {<br></br>                    "country": "Россия",<br></br>                    "countryCode": "RU",<br></br>                    "region": "Алтайский",<br></br>                    "area": null,<br></br>                    "city": "Барнаул",<br></br>                    "settlement": null,<br></br>                    "street": "",<br></br>                    "house": "",<br></br>                    "block": "",<br></br>                    "building": "",<br></br>                    "flat": "",<br></br>                    "fullAddress": "Алтайский, Барнаул",<br></br>                    "fullCity": null,<br></br>                    "rawData": null,<br></br>                    "zip": "",<br></br>                    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",<br></br>                    "areaFias": null,<br></br>                    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",<br></br>                    "settlementFias": null<br></br>                },<br></br>                "receiver": {<br></br>                    "name": "Петр",<br></br>                    "surname": "толстой",<br></br>                    "patronymic": "",<br></br>                    "phone": "89011111111",<br></br>                    "alternativePhone": "",<br></br>                    "email": "petr@petr.net",<br></br>                    "post": null,<br></br>                    "personType": null<br></br>                }<br></br>            },<br></br>            "legalEntity": {<br></br>                "id": "09684293-9e6d-a9c2-d114-28d25b5914dc",<br></br>                "type": "PERSON",<br></br>                "name": " Розничный покупатель"<br></br>            },<br></br>            "items": [<br></br>                {<br></br>                    "num": 1,<br></br>                    "productId": "1001",<br></br>                    "productExtId": null,<br></br>                    "variantId": "1001",<br></br>                    "variantExtId": null,   <br></br>                    "name": "Кактус Цереус",<br></br>                    "quantity": 1,<br></br>                    "price": 999,<br></br>                    "img": "https://img.kak2c.ru/i/j/j/tYqAVdh1_c.jpg?1579689505",<br></br>                    "skuType": "SKU",<br></br>                    "itemAmountState": {<br></br>                        "amountORDERED": 3,<br></br>                        "amountRESERVED": 0,<br></br>                        "amountPACKED": 0,<br></br>                        "amountSHIPPED": 0,<br></br>                        "amountDELIVERED": 0,<br></br>                        "amountLOST": 0,                      <br></br>                        "amountRETURNED": 0,<br></br>                        "amountRETURNED_DEFECTIVE": 0<br></br>                    }<br></br>                },<br></br>                {<br></br>                    "num": 2,<br></br>                    "variantId": "delivery",<br></br>                    "name": "Доставка",<br></br>                    "quantity": 1,<br></br>                    "price": 0,<br></br>                    "skuType": "SERVICE"<br></br>                }<br></br>            ],<br></br>            "customerPaymentInProcess": false,<br></br>            "c": "f300ae30-507c-2d36-d37c-e6397084b6e2"<br></br>        },<br></br>        {<br></br>            "id": "7277-1001",<br></br>            "date": "2020-01-22 11:17:35",<br></br>            "updateTs": "2020-01-22 11:17:47.399",<br></br>            "status": "ORDER_INFO_REQUIRE_PAYMENT",<br></br>            "totalOrderSum": 1232,<br></br>            "insuranceSum": 1232,<br></br>            "insuranceSumAutoCalculation":true,<br></br>            "paymentStatus": "NOT_PAID",<br></br>            "paymentMethodCode": "online",<br></br>            "needCustomerPayment": false,<br></br>            "comment": "",<br></br>            "tags": [],<br></br>            "delivery": {<br></br>                "code": "PICKPOINT",<br></br>                "type": "PVZ",<br></br>                "title": "PickPoint",<br></br>                "pickupPointId": "12345",<br></br>                "logoUrl": null,<br></br>                "trackingNumber": null,<br></br>                "trackingURL": null,<br></br>                "desiredDeliveryDate": "2020-02-14",<br></br>                "desiredDeliveryTimeFrom": "09:00",<br></br>                "desiredDeliveryTimeTo": "20:00",<br></br>                "deliveryComment": "Поскорее",<br></br>                "address": {<br></br>                    "country": "Россия",<br></br>                    "countryCode": "RU",<br></br>                    "region": "Алтайский",<br></br>                    "area": null,<br></br>                    "city": "Барнаул",<br></br>                    "settlement": null,<br></br>                    "street": "",<br></br>                    "house": "",<br></br>                    "block": "",<br></br>                    "building": "",<br></br>                    "flat": "",<br></br>                    "fullAddress": "Алтайский, Барнаул",<br></br>                    "fullCity": null,<br></br>                    "rawData": null,<br></br>                    "zip": "",<br></br>                    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",<br></br>                    "areaFias": null,<br></br>                    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",<br></br>                    "settlementFias": null<br></br>                },<br></br>                "receiver": {<br></br>                    "name": "Петр",<br></br>                    "surname": "толстой",<br></br>                    "patronymic": "",<br></br>                    "phone": "89011111111",<br></br>                    "alternativePhone": "",<br></br>                    "email": "petr@petr.net",<br></br>                    "post": null,<br></br>                    "personType": null<br></br>                }<br></br>            },<br></br>            "legalEntity": {<br></br>                "id": "09684293-9e6d-a9c2-d114-28d25b5914dc",<br></br>                "type": "PERSON",<br></br>                "name": " Розничный покупатель"<br></br>            },<br></br>            "items": [<br></br>                {<br></br>                    "num": 1,<br></br>                    "productId": "1001",<br></br>                    "productExtId": null,<br></br>                    "variantId": "1001",<br></br>                    "variantExtId": null,   <br></br>                    "name": "Кактус Цереус",<br></br>                    "quantity": 1,<br></br>                    "price": 999,<br></br>                    "img": "https://img.kak2c.ru/i/j/j/tYqAVdh1_c.jpg?1579689505",<br></br>                    "skuType": "SKU",<br></br>                    "itemAmountState": {<br></br>                        "amountORDERED": 0,<br></br>                        "amountRESERVED": 0,<br></br>                        "amountPACKED": 0,<br></br>                        "amountSHIPPED": 0,<br></br>                        "amountDELIVERED": 0,<br></br>                        "amountLOST": 0,                    <br></br>                        "amountRETURNED": 0,<br></br>                        "amountRETURNED_DEFECTIVE": 0<br></br>                    }<br></br>                },<br></br>                {<br></br>                    "num": 2,<br></br>                    "variantId": "delivery",<br></br>                    "name": "Доставка",<br></br>                    "quantity": 1,<br></br>                    "price": 233,<br></br>                    "skuType": "SERVICE"<br></br>                }<br></br>            ],<br></br>            "customerPaymentInProcess": false,<br></br>            "c": "ce7b72b3-effb-4f57-56d7-b025b968cff0"<br></br>        }<br></br>    ]<br></br>}  
```

</div></div>###  

### Создание/редактирование заказа

/api/lite/orders

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

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

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

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

```JSON
{ 
            "id": "111",
            "externalId": "extId",
            "externalId2": "extId2",
            "externalId3": "extId3",
            "externalId4": "extId4",
            "externalId5": "extId5",
            "date": "2020-02-22 16:37:56",
            "needReserve": true,
            "totalOrderSum": 999,
            "insuranceSum": 999,
            "insuranceSumAutoCalculation":true,
            "paymentStatus": "NOT_PAID",
            "paymentMethodCode": "online",
            "needCustomerPayment": false,
            "confirmStatus": "APPROVED",
            "comment": "",
  			"promocode":"covid1984",
            "tags": [],
  			"orderTag": "tag1",
            "delivery": {
                "code": "PICKPOINT",
                "type": "PVZ",
                "title": "PickPoint",
                "pickupPointId": "12345",
                "logoUrl": null,
                "trackingNumber": null,
                "trackingURL": null,
                "desiredDeliveryDate": "2020-02-14",
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "20:00",
                "deliveryComment": "Поскорее",
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Алтайский",
                    "area": null,
                    "city": "Барнаул",
                    "settlement": null,
                    "street": "",
                    "house": "",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Алтайский, Барнаул",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "",
                    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",
                    "areaFias": null,
                    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",
                    "settlementFias": null
                },
                "receiver": {
                    "name": "Петр",
                    "surname": "толстой 2",
                    "patronymic": "",
                    "phone": "89011111111",
                    "alternativePhone": "",
                    "email": "petr@petr.net",
                    "post": null,
                    "personType": null
                },
                "deliveryServices": [
                    "CHECK_CONTENT"
                ]
            },
            "legalEntity": {
                "id": "09684293-9e6d-a9c2-d114-28d25b5914dc",
                "type": "PERSON",
                "name": " Розничный покупатель"
            },
            "items": [
                {
                    "num": 1,
                    "variantId": "1001",
                    "variantExtId": null,
                    "name": "Кактус Цереус",
                    "quantity": 2,
                    "price": 522,
                    "vatRate": "VAT_20",
                    "batchName":"K352-415N",
                    "tag": "ROZNECHNIE_SETY",
                    "isPreferredPacking" : "true",
                    "packingMaterials": {
                       "commonMaterials": [],
                       "customMaterials": [
                         {
                            "id": "1256635998",
                            "shortName": "Гофрокороб Sultane",
                            "type": "PACKING_MATERIAL_BOXES",
                            "variants": [
                              {
                                "article": "sul1",
                                "id": "566335798",
                                "shortName": "Гофрокороб Sultane",
                                "type": "PACKING_MATERIAL_BOXES"
                              }
                           ],
                              "quantity": 1,
                              "variantId": "566335798"
                         }
                        ]
                       },
                    "bundleOptionalVariants": [
                        "1012"
                    ]
                },
                {
                    "num": 2,
                    "variantId": "delivery",
                    "name": "Доставка",
                    "quantity": 1,
                    "price": 35,
                    "vatRate": "VAT_20"                     
                }
            ],         
            "warehouseName": "Свой склад",  		
            "initialOrder" : "5dgasfwe-7f1b-c54-897e-30bc628f45e8",
			"onlinePaymentType": "RECURRENT",
  			"warehouseShippingOptions": {
				"packingType": "MIX_PACKINGS"
			}
        }
```

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

####  

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

```JSON
{
    "c": "e172df57-f217-6091-b7fd-d668a67b6df4",
    "orderId": "1222-1005",
    "shortUrl": "http://r.kak2c.ru/ocq0kmf",
    "status": "ORDER_INFO_NEED_CONFIRM",
    "success": true
}
```

####  

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

<div id="bkmrk-%7B%22success%22%3A-false%2C%22e"><div data-hasbody="true" data-macro-name="code">```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>Пример минимального набора данных по заказу, которые надо передать, чтобы он успешно создался:

<sup>\* значения полей "code" и "variantId" - должны соответствовать значениям, существующим на данном аккаунте</sup>

```JSON
{
	"delivery": {
		"address": {
			"city": "Москва",
          	"cityFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
          	"regionFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5"
		},
		"code": "ad5f7e6f-0ecb-45bf-3f6e-e3d21d2129be",
		"receiver": {
			"name": "Иван",
			"phone": "79688876655"
		}
	},
	"items": [
		{
			"num": 1,
			"variantId": "1130659",
			"quantity": 1,
			"price": 100
		},
		{
			"num": 2,
			"price": 0,
			"quantity": 1,
			"variantId": "delivery"
		}
	]
}
```

# /api/lite/orders/cancelled

### Заказ → отменить

/api/lite/orders/cancelled

Производит отмену заказа.

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

```JSON
{ 
"orderId":"1029" 
}
```

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

#### **успех:**

```JSON
{
"success": true

}
```

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

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

# /api/lite/orders/confirm

### Заказ - подтверждение

/api/lite/orders/confirm

Проставление статуса Подтверждения у заказа.

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

```JSON
{ 
    "id":"1234",
    "confirmStatus": "APPROVED", // HOLD/CANCELED
  	"repeatConfirmationDate": "2021-01-01 12:00:00"  // для статуса HOLD
}        
```

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

#### **успех:**

```JSON
{
    "success": true,
    "confirmStatus": "APPROVED" // HOLD/CANCELED 
}
```

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

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

###  

### Заказ - подтверждение массовое

/api/lite/orders/confirm/batch

Проставление статуса Подтверждения у списка заказов.

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

```JSON
{ 
    "orders":["1234", "5678"],
    "confirmStatus": "APPROVED" // HOLD/CANCELED
}        
```

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

#### **успех:**

```JSON
{
    "success": true,
    "confirmStatus": "APPROVED" // HOLD/CANCELED 
    "orders": [
        {
            "id": "1234",
            "success": true,
            "confirmStatus": "APPROVED",
            "errors": null
        },
        {
            "id": "5678",
            "success": false,
            "confirmStatus": "NEED_CONFIRM",
            "errors": [
             {
               "code": 0,
               "message": "Текст ошибки"
            }         
        }
    ]
}
```

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

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

# /api/lite/orders/payment

### Проставить статус оплаты заказа

/api/lite/orders/payment

Проставление статуса оплаты у заказа.

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

```JSON
{ 
    "id":"1234",
    "paymentStatus": "PAID" // NOT_PAID
}        
```

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

#### **успех:**

```JSON
{
    "success": true,
    "paymentStatus": "PAID" // NOT_PAID
}
```

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

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

# /api/lite/orders/delivery_result

### Заказ - отметить доставку

/api/lite/orders/delivery\_result

Для доставки своими курьерами - простановка результата доставки: доставлен/отказ/утеря

####  

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

```JSON
{
  "orderId": "123456abc",
  "result": "DELIVERED", //LOST,RETURNING,RETURNED
  "comment": "abcd"
}
```

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

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

# /api/lite/orders/history

### Получение истории по заказу

/api/lite/orders/history

Возвращает историю событий по указанному заказу

Обязательный параметр: id заказа

####  

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

```JSON
{
    "success": true,
    "events": [
        {
            "id": "2ebbb234-156e-2362-2dad-79556ea3ee14",
            "level": "INFO",
            "type": "Документы",
            "subType": "Изменения заказа",
            "orderDocStage": "Новый",
            "eventDate": "2020-01-15 11:57:05.159",
            "description": "Заказ 1285-1000. Покупатель: Ываыва; тел.: +7 (900) 111-11-14\n\nДобавлена строка: #2. [1002] Кактус Рипсалис, 3 шт., Цена с НДС: 22 RUB, НДС: 20%, Сумма с НДС: 66 RUB. \n\nСпособ оплаты: Без наложенного платежа; Статус оплаты: Оплачен\nАдрес доставки: Москва, ул Озёрная, д 31 Канал доставки: CUSTOM\n",
            "changeSource": "USER",
            "userLogin": "test@test.ru",
            "eventParameters": {              
                "apiUrl": "http://myshop-xb527.myinsales.ru",
                "login": "kak2c-delivery"
            }
        },
        {
            "id": "bf6e88a8-98bc-2f28-9973-bc870e8f1b67",
            "level": "INFO",
            "type": "Документы",
            "subType": "Заказ ожидает подтверждения",
            "orderDocStage": "Не подтвержден",
            "eventDate": "2020-01-15 11:57:05.298",
            "description": "Заказ 1285-1000. ",
            "changeSource": "USER",
            "userLogin": "test@test.ru",
            "eventParameters": null
        }
    ]       
}
```

# /api/lite/orders/invoice_and_stiсker

### Заказ → получить инвойс + стикер к заказу

/api/lite/orders/invoice\_and\_stiсker

Получение комбинированной печатной формы инвойс + стикер, в формате PDF + base64

номер заказа передается в параметре id, например

?id=1025

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

```JSON
{
  "success": true, 
  "content" : "base64data"
     
}
```

####  

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

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

# /api/lite/orders/items

### Заказ → обновление товарной части

/api/lite/orders/items

Возможность обновить только табличную часть заказа

Необходимо в запросе передать новое желаемое состояние табличной части в виде непустого перечня позиций

####  

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

```JSON
{
    "id": "1234",  
    "items": [
            {
               "num": 1,
                "variantId": "1001",
                "productId": "1001",
                "name": "Кактус Цереус",
                "quantity": 2,
                "price": 522,
                "vatRate": "VAT_20"         
            }
        ],
  		"searchColumnType": "HUMANID" //"EXTID"|"ARTICLE"|"BARCODE" Поле для поиска номенклатуры. Если не задано, то поиск идёт по HUMANID
            
}
```

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

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

####  

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

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

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

Если orderType = KAKTUS\_CONSOLIDATION, то если передаются итемы, которых нет в Кактусе, то будет происходить автосоздание номенклатуры (задача 11972): Sku + SkuProduct + их настройки \*liteApiSettings. Также есть возможность проставить признаки учета по уникальным номерам (например, Честный знак).

# /api/lite/orders/nearest

### Получение ближайших заказов к заданному

/api/lite/orders/nearest

Возвращает по 10 заказов до и после указанного (включая заданный), считая по дате заказа

Обязательный параметр: id заказа. Например:

<span style="color: #505050;">api/lite/orders/nearest?id=1285-1001</span>

Формат ответа аналогичен списку заказов

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

```JSON
{ 
    "success": true,
    "recordsTotal": 8,
    "orders": [
        {
            "id": "1285-1000",
            "date": "2020-01-15 11:56:21",
            "updateTs": "2020-01-15 11:57:23.169",
            "status": "ORDER_INFO_READY_TO_PACK",
            "totalOrderSum": 66,
            "paymentStatus": "PAID",
            "paymentMethodCode": "no-cod",
            "needCustomerPayment": false,
            "tags": [],
            "delivery": {
                "code": "eefbe980-1e3b-d973-ef24-6e92399ca702",
                "type": "COURIER",
                "title": "CUSTOM",
                "pickupPointId": null,
                "logoUrl": null,
                "trackingNumber": null,
                "trackingURL": null,
                "desiredDeliveryDate": null,
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "18:00",
                "deliveryComment": null,
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": "ул Озёрная",
                    "house": "31",
                    "block": "",
                    "building": "",
                    "flat": null,
                    "fullAddress": "119361, г Москва, ул Озёрная, д 31",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "119361",
                    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "areaFias": null,
                    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "settlementFias": null
                },
                "receiver": {
                    "name": null,
                    "surname": "Ываыва",
                    "patronymic": null,
                    "phone": "+79001111114",
                    "alternativePhone": "",
                    "email": null,
                    "post": null,
                    "personType": null
                }
            },
            "legalEntity": {
                "id": "4b51fdb9-3c57-5cce-29aa-da9bb35d778d",
                "type": "PERSON",
                "name": " Розничный покупатель"
            },
            "items": [
                {
                    "num": 1,
                    "variantId": "delivery",
                    "name": "Доставка",
                    "quantity": 1,
                    "price": 0,
                    "skuType": "SERVICE"
                },
                {
                    "num": 2,
                    "variantId": "1002",
                    "productId": "1002",
                    "name": "Кактус Рипсалис",
                    "quantity": 3,
                    "price": 22,
                    "img": "https://img.kak2c.ru/i/P/o/1X8eNZVj_c.jpg?1579013978",
                    "skuType": "SKU"
                }
            ],
            "customerPaymentInProcess": false,
            "warehouseName": "Свой склад",
            "c": "59b34def-1077-9050-541b-b7c3290c9fd8"
        },
        ...
    ]
}
```

# /api/lite/orders/receiver

### Заказ → обновление контактной информации получателя

/api/lite/orders/receiver

Возможность обновить только контактную информацию

id - номер заказа

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

```JSON
{
     "id": "1234",
     "name": "Олег",
     "surname": "Коробов",
     "patronymic": "",
     "phone": "9153112255",
     "alternativePhone": "",
     "email": "korobov.oleg@gmail.com",
     "passport": {
         "series": "1234",
         "number": "123123"
         "date": "2022-01-24"
	 }
}
```

####  

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

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

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

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

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

# /api/lite/orders/refresh-reserve

### Обновление резервов по заказу

/api/lite/orders/refresh-reserve

Обновляет резервы по заказу, основываясь на версии заказа в бэкенде на момент вызова команды.

Обязательный параметр: id заказа. Например:

<span style="color: #505050;">api/lite/orders/refresh-reserve?id=1285-1001</span>

В случае получения положительного ответа ("success": true) - нужно повторно загрузить заказ с бэкенда, данные по товарам и резервам могут быть обновлены.

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

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

### Заказ - обновление резервов массовое

/api/lite/orders/refresh-reserve/batch

Обновление резервов у списка заказов.

В случае неуспеха - в ответе в списке errors будут ошибки обновления. Успешно обновленные резервы при этом сохраняются в системе.

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

```JSON
{ 
    "orders":["8057-1033", "5678"] 
}        
```

#### **В ответ возвращается:**

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

#### **Ошибка по любому заказу списка:** 

```JSON
{
 
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Ошибка обработки заказа 8057-1033: Ошибка при проведении: Не задан канал доставки для заказа 8057-1033; Не заданы ФИО получателя."
        },
        {
            "code": 0,
            "message": "Заказ 5678 не найден."
        }
    ]
}
```

### Заказ - обновление всех резервов

/api/lite/orders/refresh-reserve/all

Обновление резервов у всех заказов, которые зарезервированы не полностью.

Запрос выполняется без параметров.  
В ответ будет возвращено кол-во запланированных к обновлению заказов, обработанных без ошибок и полностью зарезервированных.

#### **В ответ возвращается:**

```JSON
{
    "success": true,
    "errors": [
        {
            "code": 0,
            "message": "Заказ 1427 не был полностью зарезервирован"
        },
        {
            "code": 0,
            "message": "Ошибка обработки заказа 8057-1033: Ошибка при проведении: Не задан канал доставки для заказа 8057-1033; Не заданы ФИО получателя."
        }
    ],
    "planned": 3,
    "processed": 2,
    "reserved": 1
}
```

####  

# /api/lite/orders/statuses

### Получение сводки по статусам заказов

/api/lite/orders/statuses

Возвращает сводные данные по количеству заказов в различных статусах, а также о количестве проблемных заказов

По умолчанию содержит только сводку без заказов с типом CUSTOM.  
Для получения сводки по CUSTOM заказам с нужным подтипом - передать список подтипов в параметре order\_types, аналогично получению заказов в /api/lite/orders?order\_types=my\_types

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

```JSON
{
    "success": true,
    "statuses": {
        "ORDER_INFO_DRAFT": 6,
        "ORDER_INFO_NEED_CONFIRM": 1,
        "ORDER_INFO_READY_TO_PACK": 1
    },
    "problemOrders": 0
}
```

# /api/lite/orders/packing

### Заказ → упаковать

/api/lite/orders/packing

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

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

```JSON
{ 
"id":"1019" 
}
```

#### **В ответ возвращается:**

```JSON
{
"success": true

}
```

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

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

###  

### Заказ → упаковать массовый

/api/lite/orders/packing/batch

Производит упаковку по списку переданных заказов (все неупакованные), аналогично штучной упаковке /api/lite/orders/packing и возвращает для упакованных заказов общую печатную форму.

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

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

```JSON
{ 
    "orders":["1234", "5678"]  
}
```

#### **В ответ возвращается:**

```JSON
{
    "success": true,   
    "orders": [
        {
            "id": "1234",
            "success": true,           
            "errors": null
        },
        {
            "id": "5678",
            "success": false,      
            "errors": [
             {
               "code": 0,
               "message": "Текст ошибки"
            }         
        }
    ],
    "content" : "base64data"   // pdf печатной формы упакованных заказов из списка переданных
}
```

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

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

###  

### Заказ → распаковать

/api/lite/orders/packing

Производит полную распаковку указанного упакованного заказа

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

```JSON
{ 
"id":"1018" 
}
```

#### **В ответ возвращается:**

```JSON
{
"success": true

}
```

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

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

# /api/lite/orders/packing_control

### Заказ → контроль упаковки

/api/lite/orders/packing\_control

Производит контроль упаковки по ШК, если склад с настройкой контроля упаковки.

В успешном ответе будет присутствовать проверенный ШК и номер заказа.

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

```JSON
{
"id": "202233856366"
}
```

#### **<span style="color: #172b4d;">В ответ возвращается</span>**:

```JSON
{
    "success": true,
    "id": "202228134882",
    "orderId": "8057-1048"
}
```

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

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

###  

### Заказ → контроль упаковки

/api/lite/orders/packing\_control

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

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

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

Пример: `/api/lite/orders/packing_control?page=0&size=20`

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

#### **Описание результата запроса**

<div id="bkmrk-"><table class="relative-table confluenceTable tablesorter tablesorter-default" role="grid" style="width: 100.0%;"><colgroup><col style="width: 20.0878%;"></col><col style="width: 5.26894%;"></col><col style="width: 74.6432%;"></col></colgroup><thead></thead></table>

</div><div id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-st"><table class="relative-table confluenceTable tablesorter tablesorter-default" role="grid" style="width: 100%; height: 498px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 29px;"><td style="height: 29px; width: 20.2469%;">**Поле**</td><td style="height: 29px; width: 18.6419%;">**Тип**</td><td style="height: 29px; width: 61.1111%;">**Описание**</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="height: 29px; width: 20.2469%;">stickerBarcode</td><td class="confluenceTd" style="height: 29px; width: 18.6419%;">string</td><td class="confluenceTd" style="height: 29px; width: 61.1111%;">Штрих код</td></tr><tr role="row" style="height: 46px;"><td class="confluenceTd" style="height: 46px; width: 20.2469%;">packingControlDate</td><td class="confluenceTd" style="height: 46px; width: 18.6419%;">datetime</td><td class="confluenceTd" style="height: 46px; width: 61.1111%;">Время проверки упакованного места</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="height: 29px; width: 20.2469%;">orderId</td><td class="confluenceTd" style="height: 29px; width: 18.6419%;">string</td><td class="confluenceTd" style="height: 29px; width: 61.1111%;">Номер заказа</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="height: 29px; width: 20.2469%;">deliveryCompany</td><td class="confluenceTd" style="height: 29px; width: 18.6419%;">string</td><td class="confluenceTd" style="height: 29px; width: 61.1111%;"><span style="color: #172b4d;">Наименование курьерской службы</span></td></tr><tr role="row" style="height: 46px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 46px; width: 20.2469%;" title="Цвет фона: Желтый">**receiver**</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 46px; width: 18.6419%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">Object</span></td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 46px; width: 61.1111%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">Объект, описывающий получателя заказа</span></td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">name</span></td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">Имя</span></td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">surname</span></td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">Фамилия</span></td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">patronymic</span></td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">Отчество</span></td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый">fullName</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый">ФИО</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">phone</span></td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">Телефон (отформатированный)</span></td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый">rawPhone</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый">Телефон (в чистом виде)</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">alternativePhone</span></td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">Альтернативный телефон</span></td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">email</span></td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый"><span style="color: #172b4d;" title="">Почтовый адрес</span></td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый">post</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый">Должность</td></tr><tr role="row" style="height: 29px;"><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 20.2469%;" title="Цвет фона: Желтый">personType</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 18.6419%;" title="Цвет фона: Желтый">string</td><td class="highlight-yellow confluenceTd" data-highlight-colour="yellow" style="height: 29px; width: 61.1111%;" title="Цвет фона: Желтый">Тип пользователя</td></tr></tbody></table>

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

```JSON
{ 
    "success": true,
    "recordsTotal": 8,
    "takeOutPackings": [
        {
            "stickerBarcode": "202233856366",
            "packingControlDate": "2020-05-08 20:38:08.353",
            "orderId": "3248-1005",
            "deliveryCompany": "PickPoint",
            "receiver": {
                "name": "Петр",
                "surname": "толстой",
                "patronymic": "",
                "fullName": "Толстой Петр",
                "phone": "89011111111",
                "rawPhone": "89011111111",
                "alternativePhone": "",
                "email": "petr@petr.net",
                "post": null,
                "personType": "CUSTOMER"
            }
        },
        ...
    ]
}
```

# /api/lite/orders/tag

### Заказ → установить метку на заказе

/api/lite/orders/tag

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

```JSON
{
  "id": "1000",
  "tagId": "1001"
}
```

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

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

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

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

###  

### Заказ → снять метку с заказа

/api/lite/order/tag

Снимает метку с заказа.

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

```JSON
{
  "id": "1000",
  "tagId": "1001"
}
```

#### **Успешный ответ:**

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

# /api/lite/orders/calc_insurance_sum

### Расчет страховой стоимости заказа

/api/lite/orders/calc\_insurance\_sum

Расчет страховой стоимости заказа исходяиз переданных товаров и с учетом настроек процента страховой суммы на данный канал доставки.

Заказ анализируется только из переданных данных, без поиска заказа в БД.

В качестве dto используется dto заказа из /orders.

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

```JSON
{
              
          "totalOrderSum": 15,
          "paymentStatus": "NOT_PAID",
          "confirmStatus": "NEED_CONFIRM",
          "paymentMethodCode": "cod-cash",
          "paymentMethodType": "COD_CASH",
          "needCustomerPayment": false,
          "tags": [],
          "delivery": {
              "code": "1a625a2c-c121-617c-23b9-5bbfbfb22eec",
              "type": "PVZ",
              "title": "PickPoint",
              "pickupPointId": "3",
              "logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_pickpoint_left.svg",
              "trackingNumber": null,
              "trackingURL": null,
              "desiredDeliveryDate": null,
              "desiredDeliveryTimeFrom": "09:00",
              "desiredDeliveryTimeTo": "18:00",
              "deliveryComment": null,
              "address": {
                  "country": "Россия",
                  "countryCode": "RU",
                  "region": "Москва",
                  "area": null,
                  "city": "Москва",
                  "settlement": null,
                  "street": "ул Озёрная",
                  "house": "33",
                  "block": "",
                  "building": "",
                  "flat": null,
                  "fullAddress": "119361, г Москва, ул Озёрная, д 33",
                  "fullCity": null,
                  "rawData": null,
                  "zip": "119361",
                  "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                  "areaFias": null,
                  "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                  "settlementFias": null
              },
              "receiver": {
                  "name": "Валерьевна",
                  "surname": "Ирина",
                  "patronymic": null,
                  "fullName": "Ирина Валерьевна",
                  "phone": "89011111111",
                  "rawPhone": null,
                  "alternativePhone": "",
                  "email": "i-fomina@yandedx.ru",
                  "post": null,
                  "personType": "CUSTOMER"
              },
              "deliveryServices": []
          },
          "legalEntity": {
              "id": "3c0a3ad3-b10f-4299-5b1b-a3d90b0c198a",
              "type": "PERSON",
              "name": " Розничный покупатель",
              "organization": null,
              "person": null
          },
          "items": [
              {
                  "num": 1,
                  "variantId": "delivery",
                  "name": "Доставка",
                  "quantity": 1,
                  "vatRate": "NO_VAT",
                  "price": 0,
                  "skuType": "SERVICE"
              },
              {
                  "num": 2,
                  "variantId": "BR00T-000116",
                  "productId": "BR00T-000116",
                  "productExtId": "BR00T-000116",
                  "name": "Набор для Бро №3: помада для волос, гель для душа + шампунь",
                  "article": "BR00T-000116",
                  "quantity": 5,
                  "quantityAvailable": 38,
                  "vatRate": "NO_VAT",
                  "price": 30,
                  "img": "https://storage.yandexcloud.net/images-k2c/90960e52-86cf-4342-9ecc-497bb91f0af0.jpg",
                  "itemAmountState": {
                      "amountORDERED": 5,
                      "amountRESERVED": 5,
                      "amountPACKED": 0,
                      "amountSHIPPED": 0,
                      "amountDELIVERED": 0,
                      "amountLOST": 0,
                      "amountFACT_DELIVERED": 0,
                      "amountRETURNED": 0
                  },
                  "skuType": "SKU",    
                  "itemDimensions": {
                      "height": 20,
                      "width": 20,
                      "depth": 10
                  },
                  "itemWeight": 500
              },
              {
                  "num": 3,
                  "variantId": "BR00T-000133",
                  "productId": "BR00T-000133",
                  "productExtId": "BR00T-000133",
                  "name": "Брелок для ключей/рюкзака Bro Cosmetics Crew",
                  "article": "BR00T-000133",
                  "quantity": 22,
                  "quantityAvailable": 1,
                  "vatRate": "NO_VAT",
                  "price": 15,
                  "img": "https://storage.yandexcloud.net/images-k2c/b99569d2-be64-4a41-9cfa-e9eb5c339485.jpg",
                  "itemAmountState": {
                      "amountORDERED": 22,
                      "amountRESERVED": 22,
                      "amountPACKED": 0,
                      "amountSHIPPED": 0,
                      "amountDELIVERED": 0,
                      "amountLOST": 0,
                      "amountFACT_DELIVERED": 0,
                      "amountRETURNED": 0
                  },
                  "skuType": "SKU",
                  "itemDimensions": {
                      "height": 2,
                      "width": 1,
                      "depth": 1
                  },
                  "itemWeight": 50
              }
          ],
          "expenses": [],
          "customerPaymentInProcess": false,
          "warehouseName": "Tempoline",
          "warehouseCode": "6805bc64-270f-ae7d-1231-773ff181e446",
          "c": "4f794476-a895-897d-d4a4-119924305917"
      }
```

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

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

```JSON
{
    "success": true,
    "insuranceSum": 240.2
}
```

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

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

# /api/lite/tag

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

Для создания / редактирования

/api/lite/tag

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

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

```JSON
{ 
    "id": "идентификатор метки",
    "name": "На производстве",
    "color_id": "color1"
   
}
```

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

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

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

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

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

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

#### **Для удаления:**

/api/lite/tag

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

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

```JSON
{ 
   "id": "1000" 
}
```

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

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

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

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk-"><div><div data-hasbody="true" data-macro-name="code"><div><div data-hasbody="true" data-macro-name="code"><div></div></div></div></div></div></div>### Получение списка меток 

/api/lite/tag

В ответ возвращается список всех созданных меток, а также набор доступных цветов для меток.

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

```JSON
{
  "tags": [
    {
      "id": "1000",
      "name": "В производстве",
      "color": "color1"
    },
    {
      "id": "1001",
      "name": "VIP",
      "color": "color2"
    }
  ],
  "colors": [
    {
      "id": "color1",
      "code": "#FF0000"
    },
    {
      "id": "color2",
      "code": "#FFDD00"
    }
  ]
}
```

# /api/lite/report/order

### XLS Отчёт по заказам

/api/lite/report/order

Возвращает отчёт по всем заказам в формате XLS.

По умолчанию, если доп. параметры не переданы, возвращает список ВСЕХ заказов за всё время.

Для запроса списка заказов за определённый интервал, необходимо передать доп. параметры:

`<strong>from</strong>=yyyy-MM-ddTHH:mm:ss и <strong>to</strong>=yyyy-MM-ddTHH:mm:ss`

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

`<span style="color: #505050;">/api/lite/report/order?from=2019-10-29T12:00:45&to=2019-10-31T11:02:37</span>`

#### **Положительный результат запроса:** 

```JSON
{
    "success": true,
    "fileName": "OrderReport(17233597)13556330559279078228.xls",
    "content": "0M8R4K(...)AAAAAAAAAAAAAAAAAAAAAA==" //Файл в формате excel, закодированный в BASE64 строке
}
```

#### **Отрицательный результат запроса:**

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

# /api/lite/pub/orders

### Создание заказа для виджета

/api/lite/pub/orders

(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))

Создание заказа для корзины и других клиентов по АПИ

Создает новый заказ в системе Кактус.

Цены задавать нельзя, они подставятся в бэкенде из актуальных

Доставка перерасчитается в бэкенде по указанным данным заказа

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

```JSON
{
  "comment": "",
  "paymentMethodCode": "cod-cash",
  "orderTag": "tag1",
  "totalOrderSum": 5490,
  "delivery": {
    "code": "PICKPOINT",
    "pickupPointId": "2201-001",
    "desiredDeliveryDate": "2020-02-14",
    "desiredDeliveryTimeFrom": "09:00",
    "desiredDeliveryTimeTo": "20:00",
    "deliveryComment": "Поскорее",
    "receiver": {
      "name": "петр",
      "surname": "толстой",
      "patronymic": "",
      "fullName": "",
      "phone": "89011111111",
      "alternativePhone": "",
      "email": "petr@petr.net"
    },
    "address": {
    "region": "Алтайский",
    "area": null,
    "city": "Барнаул",
    "settlement": null,
    "street": "Барнаульская",
    "house": "1",
    "block": "",
    "building": "",
    "flat": "",
    "fullAddress": "",
    "zip": "",
    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",
    "areaFias": null,
    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",
    "settlementFias": null,
    "country": "RU"
    }
  },
  "items": [
    {
      "num": 1,
      "variantId": "1001", 
      "variantExtId": null,     
      "quantity": 1,
      "bundleOptionalVariants": [
        "1012"
      ]
    },
    {
      "num": 2,
      "variantId": "delivery",
      "variantExtId": null
    }
  ],
  "promocode":null,
  "customData":"some data",
  "urlParams":[
  {
    "name":"name1",
    "value":"value1"
  }
 ],
  "deliveryServiceOptions": {
        "PICKPOINT_DELIVERY": "TRYING;PARTIAL_DELIVERY"
   },
  "consentToNewsletter": true
}
```

#### **В ответ возвращается:**

```JSON
{
    "success": true,
    "orderId": "1285-1002",
    "c": "2b92b631-7f1b-c52a-897e-30bc628f87e5"
}
```

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

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

###  

### Запрос списка заказов

/api/lite/pub/orders

Метод возвращает запрошенный заказ по его номеру (id) и проверочному коду (с)

Пример запроса: `<span style="color: #505050;">api/lite/pub/orders?id=7277-1002&c=f300ae30-507c-2d36-d37c-e6397084b6e2</span>`

Описание полей смотреть для метода:

/api/lite/orders

Примечание: Возвращается неполный список полей по сравнению с GET /api/lite/orders.

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

```JSON
{
    "success": true,
    "orders": [
        {
            "id": "7277-1002",
            "date": "2020-01-22 16:37:56",
            "updateTs": "2020-01-22 16:37:57.528",
            "status": "ORDER_INFO_DRAFT",
            "totalOrderSum": 999,
            "paymentStatus": "NOT_PAID",
            "paymentMethodCode": "online",
            "needCustomerPayment": false,
            "comment": "",
            "delivery": {
                "code": "PICKPOINT",
                "type": "PVZ",
                "title": "PickPoint",
                "pickupPointId": "12345",
                "logoUrl": null,
                "trackingNumber": null,
                "trackingURL": null,
                "desiredDeliveryDate": "2020-02-14",
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "20:00",
                "deliveryComment": "Поскорее",
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Алтайский",
                    "area": null,
                    "city": "Барнаул",
                    "settlement": null,
                    "street": "",
                    "house": "",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Алтайский, Барнаул",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "",
                    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",
                    "areaFias": null,
                    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",
                    "settlementFias": null
                },
                "receiver": {
                    "name": "Петр",
                    "surname": "толстой",
                    "patronymic": "",
                    "phone": "89011111111",
                    "alternativePhone": "",
                    "email": "petr@petr.net",
                    "post": null,
                    "personType": null
                }
            },
            "items": [
                {
                    "num": 1,
                    "productId": "1001",
                    "productExtId": null,
                    "variantId": "1001",
                    "variantExtId": null,                   
                    "name": "Кактус Цереус",
                    "quantity": 1,
                    "price": 999,
                    "img": "https://img.kak2c.ru/i/j/j/tYqAVdh1_c.jpg?1579689505",
                    "skuType": "SKU"
                },
                {
                    "num": 2,
                    "productId": null,
                    "variantId": "delivery",
                    "name": "Доставка",
                    "quantity": 1,
                    "price": 0,
                    "skuType": "SERVICE"
                }
            ],
            "customerPaymentInProcess": false,
          	"shopUrl": "https://shop6750043.kak2c.ru",
            "c": "f300ae30-507c-2d36-d37c-e6397084b6e2"
        }
    ]
}
```

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

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

###  

### Расчет скидки по заказу

/api/lite/pub/orders/discount

Запрос расчета скидки по заказу, по указанному промокоду. Структура запроса такая же как в создании заказа.

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

```JSON
{
  "comment": "",
  "paymentMethodCode": "online",
  "totalOrderSum": 5490,
  "delivery": {
    "сode": "PICKPOINT",
    "pickupPointId": "12345",
    "desiredDeliveryDate": "22.02.2020",
    "desiredDeliveryTimeFrom": "09:00",
    "desiredDeliveryTimeTo": "20:00",
    "deliveryComment": "Поскорее",
    "receiver": {
      "name": "петр",
      "surname": "толстой",
      "patronymic": "",
      "fullName": "",
      "phone": "23232323",
      "alternativePhone": "",
      "email": "petr@petr.net"
    },
    "address": {
    "region": "Алтайский",
    "area": null,
    "city": "Барнаул",
    "settlement": null,
    "street": "",
    "house": "",
    "block": "",
    "building": "",
    "flat": "",
    "fullAddress": "",
    "zip": "",
    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",
    "areaFias": null,
    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",
    "settlementFias": null,
    "country": "RU"
    }
  },
  "items": [
    {
      "num": 1,
      "variantId": "1001",
      "productId":"1001",
      "quantity": 1
    },
    {
      "num": 2,
      "variantId": "delivery",
      "productId":"delivery"
    }
  ],
  "promocode":"PROMO",
  "customData":"some data",
  "urlParams":[
  {
    "name":"name1",
    "value":"value1"
  }
 ],
  "deliveryServiceOptions": {
        "PICKPOINT_DELIVERY": "TRYING;PARTIAL_DELIVERY"
   }
}
```

#### **В ответ возвращается:**

```JSON
{
    "success": true,
    "discounts": [
        {
            "discountValue": 123.45,
            "deliveryDiscountValue": 123.45,
            "discountType": "PROMOCODE"  // PAYMENT_TYPE
        }
    ]
   
}
```

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

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

###  

### Проверка промокодов

/api/lite/pub/promocode/conditions/check

<span style="color: #172b4d;">Для валидации условий промокода, необходимо передать весь заказ целиком, с заполненным промокодом (аналогично /api/lite/pub/orders)</span>

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

```JSON
{
  "comment": "",
  "paymentMethodCode": "online",
  "totalOrderSum": 5490,
  "delivery": {
    "сode": "PICKPOINT",
    "pickupPointId": "12345",
    "desiredDeliveryDate": "22.02.2020",
    "desiredDeliveryTimeFrom": "09:00",
    "desiredDeliveryTimeTo": "20:00",
    "deliveryComment": "Поскорее",
    "receiver": {
      "name": "петр",
      "surname": "толстой",
      "patronymic": "",
      "fullName": "",
      "phone": "23232323",
      "alternativePhone": "",
      "email": "petr@petr.net"
    },
    "address": {
    "region": "Алтайский",
    "area": null,
    "city": "Барнаул",
    "settlement": null,
    "street": "",
    "house": "",
    "block": "",
    "building": "",
    "flat": "",
    "fullAddress": "",
    "zip": "",
    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",
    "areaFias": null,
    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",
    "settlementFias": null,
    "country": "RU"
    }
  },
  "items": [
    {
      "num": 1,
      "variantId": "1001",
      "productId":"1001",
      "quantity": 1
    },
    {
      "num": 2,
      "variantId": "delivery",
      "productId":"delivery"
    }
  ],
  "promocode":"TEST",
  "customData":"some data",
  "urlParams":[
  {
    "name":"name1",
    "value":"value1"
  }
 ],
  "deliveryServiceOptions": {
        "PICKPOINT_DELIVERY": "TRYING;PARTIAL_DELIVERY"
   }
}
```

#### **Результат запроса:** 

```JSON
{
   "success":true,
   "code":"code",
   "isActive":true,
   "discountType":"FIX",
   "discountValue":836,
   "hasConditions":true,
   "deliveryDiscountValue":50, //Скидка на доставку в %
   "bonusSkus":[
    {

      "productId":"123",

      "variantId":"456",

      "quantity": 2
    }  
   ]
}
```

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

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

# /api/lite/pub/order-discount

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

(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))

Проверка переданного промокода на активность

/api/lite/pub/order-discount

По отправленным данным заказа (с опциональным указанием промокода) - возвращает размер скидки в рублях для чекаута.

Формат передаваемых данных всегда аналогичен dto заказа в методе создания заказа (публичный):

/api/lite/pub/order

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

```JSON
{
  "comment": "",
  "confirmStatus": "APPROVED",
  "paymentStatus": "NOT_PAID",
  "paymentMethodCode": "cod-card",
  "totalOrderSum": "1330.00",
  "promocode":"testPercent",
  "delivery": {
    "receiver": {
      "name": "тест4",
      "phone": "9151321211",
      "alternativePhone": "",
      "email": ""
    },
    "deliveryCode": "GLOBAL_DELIVERY",
    "timeFrom": "09:00",
    "timeTo": "20:00",
    "desiredDeliveryDate": null,
    "deliveryComment": "",
    "address": {
      "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "areaFias": null,
      "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "settlementFias": null,
      "country": "RU",
      "region": "Москва",
      "area": null,
      "city": "Москва",
      "settlement": null,
      "street": "",
      "house": "",
      "block": "",
      "building": "",
      "flat": "",
      "fullAddress": "",
      "zip": ""
    },
    "pickupPointId": ""
     
  },
  "items": [
    {
      "num": 1,
      "id": "1001",
      "quantity": 3,
      "variants": [
         
      ]
    },
     {
      "num": 2,
      "id": "1002",
      "quantity": 2,
      "variants": [
         
      ]
    },
    {
      "num": 3,
      "id": "delivery"
    }
  ]
}
```

#### **Положительный результат запроса:** 

```JSON
{
    "success": true,
    "discounts": [
        {
            "discountType": "PROMOCODE", //   PROMOCODE | PAYMENT_TYPE
            "discountValue": 123.45,
            "deliveryDiscountValue" : 50 //Скидка на доставку в %
        },
        {
            "discountType": "PAYMENT_TYPE", //   PROMOCODE | PAYMENT_TYPE
            "discountValue": 20
        }
    ]   
}
```

# /api/lite/pub/payment

### <span style="color: #000000;">Оплата заказа покупателем</span>

<span style="color: #000000;">/api/lite/pub/payment?orderId=humanId</span>

Параметр: humanId заказа покупателя.

В ответе данные для формирования html-формы отсылки на оплату.

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

```JSON
{
    "success": true,
    "errors": [],
    "redirectData": {
        "data": {
            "entries": [
                {
                    "num": 0,
                    "name": "MERCHANT",
                    "value": "kaktwocr"
                },
                {
                    "num": 1,
                    "name": "ORDER_REF",
                    "value": "25567175-8d84-e371-90fa-8a6e86a69aa4"
                },
                {
                    "num": 2,
                    "name": "ORDER_DATE",
                    "value": "2019-03-11 17:09:35"
                },
                {
                    "num": 3,
                    "name": "ORDER_PNAME[]",
                    "value": "Пополнение баланса аккаунта №6419855"
                },
                {
                    "num": 4,
                    "name": "ORDER_PCODE[]",
                    "value": "balance"
                },
                {
                    "num": 5,
                    "name": "ORDER_PRICE[]",
                    "value": "222.00"
                },
                {
                    "num": 6,
                    "name": "ORDER_QTY[]",
                    "value": "1"
                },
                {
                    "num": 7,
                    "name": "ORDER_VAT[]",
                    "value": "0"
                },
                {
                    "num": 8,
                    "name": "PRICES_CURRENCY",
                    "value": "RUB"
                },
                {
                    "num": 9,
                    "name": "DESTINATION_CITY",
                    "value": ""
                },
                {
                    "num": 10,
                    "name": "DESTINATION_STATE",
                    "value": ""
                },
                {
                    "num": 11,
                    "name": "DESTINATION_COUNTRY",
                    "value": ""
                },
                {
                    "num": 12,
                    "name": "PAY_METHOD",
                    "value": "CCVISAMC"
                },
                {
                    "num": 13,
                    "name": "ORDER_PRICE_TYPE[]",
                    "value": "GROSS"
                },
                {
                    "num": 14,
                    "name": "ORDER_HASH",
                    "value": "6fe466d056fcc82836a861c322070381"
                },
                {
                    "num": 15,
                    "name": "BILL_FNAME",
                    "value": "Петр"
                },
                {
                    "num": 16,
                    "name": "BILL_LNAME",
                    "value": "Петров"
                },
                {
                    "num": 17,
                    "name": "BILL_EMAIL",
                    "value": "abc3@abc.ru"
                },
                {
                    "num": 18,
                    "name": "BILL_PHONE",
                    "value": "111111"
                },
                {
                    "num": 19,
                    "name": "BILL_COUNTRYCODE",
                    "value": "RU"
                },
                {
                    "num": 20,
                    "name": "BACK_REF",
                    "value": ""
                },
                {
                    "num": 21,
                    "name": "LANGUAGE",
                    "value": "RU"
                },
                {
                    "num": 22,
                    "name": "CURRENCY",
                    "value": "RUB"
                }
            ],
            "url": "https://sandbox.payu.ru/order/lu.php"
        },
        "paymentProvider": "PAYU"
    }
}
```

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

# /api/lite/pub/orders/discount

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

/api/lite/pub/orders/discount

По отправленным данным заказа (с опциональным указанием промокода) - возвращает размер скидки в рублях для чекаута.

Формат передаваемых данных всегда аналогичен dto заказа в методе создания заказа (публичный):

/api/lite/pub/orders

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

```JSON
{
  	"promocode":"testPercent",
    "comment": "",
    "confirmStatus": "APPROVED",
    "delivery": {
        "address": {
            "area": null,
            "areaFias": null,
            "block": "",
            "building": "",
            "city": "Урюпинск",
            "cityFias": "2e5879fc-35c2-4354-816b-f1fce74ece87",
            "country": "RU",
            "flat": "",
            "fullAddress": "",
            "house": "",
            "region": "Волгоградская",
            "regionFias": "da051ec8-da2e-4a66-b542-473b8d221ab4",
            "settlement": null,
            "settlementFias": null,
            "street": "",
            "zip": ""
        },
        "code": "bb60d72c-2a25-11e9-8989-002590923634",
        "deliveryComment": "",
        "desiredDeliveryDate": null,
        "pickupPointId": "",
        "receiver": {
            "alternativePhone": "",
            "email": "",
            "name": "",
            "phone": ""
        },
        "timeFrom": "09:00",
        "timeTo": "20:00"
    },
    "forOrderDiscount": true,
    "items": [
        {
            "num": 1,
            "productId": "BR00T-000132",
            "quantity": 1,
            "variantId": "BR00T-000132"
        }
    ],
    "paymentMethodCode": "disk1",
    "paymentStatus": "NOT_PAID",
    "totalOrderSum": 690
}

```

#### **Положительный результат запроса:** 

```JSON
{
    "success": true,
    "discounts": [
      	{
            "discountValue": 2813.00, //общая применяемая скидка
            "orderSumDiscountValue": 1541.00, //скидка на итоговую сумму заказа (общая сумма заказа за вычетом потоварной скидки)(discountValue - skusDiscountValue)
            "skusDiscountValue": 1272.00, //Суммарная потоварная скидка
            "deliveryDiscountValue": 50, //Скидка на доставку в %
            "discountType": "PROMOCODE", //   PROMOCODE | PAYMENT_TYPE
            "discountFormula": "250.00 * 2 + (636.00 - 636.00) * 2 + 1030.00 + 636.00 * 2 - 1000 - (20% + 10%) = 1261", //формула расчёта скидки на сумму заказа
            "promocodeSkuDiscounts": [ //потоварные скидки
                {
                    "skuId": "1066", //ID товара
                    "quantity": 2, //Кол-во товара
                    "fixDiscountAmount": 1000, //Суммарная величина фикс скидки на товар
                    "percentDiscountAmount": 0, //Суммарная величина процента скидки на товар
                    "oldPrice": 636.00, //старая цена товара
                    "newPrice": 0, //цена товара после применения скидки
                    "formula": "(636.00 - 636.00) * 2" //формула расчёта скидки на товар
                }
            ]
        }
        {
            "discountType": "PAYMENT_TYPE", //   PROMOCODE | PAYMENT_TYPE
            "discountValue": 20
        }
    ]   
}
```

# /api/lite/orders/copy

### Копирование заказа

/api/lite/orders/copy

Копирует указанный заказ черновиком и возвращает номер созданного заказа

Обязательный параметр: id заказа. Например:

```JSON
{
    "id": "1001"
}
```

Формат ответа аналогичен списку заказов

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

```JSON
{
    "success": true,
    "orderId": "8057-1057",
    "c": "7ed78ba9-310f-e681-756c-71beb95853f6"
}
```

# /api/lite/pub/promocode/conditions/check

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

/api/lite/pub/promocode/conditions/check

По отправленным данным заказа (с обязательным указанием промокода) - возвращает размер скидки в рублях для чекаута, а также возможные промотовары

Формат передаваемых данных всегда аналогичен dto заказа в методе создания заказа (публичный):

/api/lite/pub/orders

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

```JSON
{
  	"promocode":"testFix",
    "comment": "",
    "confirmStatus": "APPROVED",
    "delivery": {
        "address": {
            "area": null,
            "areaFias": null,
            "block": "",
            "building": "",
            "city": "Урюпинск",
            "cityFias": "2e5879fc-35c2-4354-816b-f1fce74ece87",
            "country": "RU",
            "flat": "",
            "fullAddress": "",
            "house": "",
            "region": "Волгоградская",
            "regionFias": "da051ec8-da2e-4a66-b542-473b8d221ab4",
            "settlement": null,
            "settlementFias": null,
            "street": "",
            "zip": ""
        },
        "code": "bb60d72c-2a25-11e9-8989-002590923634",
        "deliveryComment": "",
        "desiredDeliveryDate": null,
        "pickupPointId": "",
        "receiver": {
            "alternativePhone": "",
            "email": "",
            "name": "",
            "phone": ""
        },
        "timeFrom": "09:00",
        "timeTo": "20:00"
    },
    "items": [
        {
            "num": 1,
            "productId": "BR00T-000132",
            "quantity": 1,
            "variantId": "BR00T-000132"
        }
    ],
    "paymentMethodCode": "disk1",
    "paymentStatus": "NOT_PAID",
    "totalOrderSum": 690
}

```

#### **Положительный результат запроса:** 

```JSON
{
    "success": true,
    "code": "testFix",
    "isActive": true,
    "discountType": "FIX",
    "discountValue": 990,
    "hasConditions": true,
    "deliveryDiscountValue": 0,
    "bonusSkus": {
        "1002": 1
    }
}
```

# /api/lite/orders/receiver/address

### Заказ → обновление адреса доставки получателю

/api/lite/orders/receiver/address

Возможность обновить только адрес доставки

id - номер заказа

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

```JSON
{
    "id": "8057-1102",
    "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": "Лубянка",
                    "house": "3",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Алтайский, Барнаул, Барнаульская, д 1",
                    "fullCity": null,
                    "rawData": "Алтайский, Барнаул, Барнаульская, д 1",
                    "zip": "",
                    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",
                    "areaFias": null,
                    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",
                    "settlementFias": null
                }
}
```

####  

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

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

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

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

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

# /api/lite/orders/file

/api/lite/orders/file

Добавляет файл к заказу.

Параметры передаются как form-data:

<table border="1" id="bkmrk-upfile-%D0%A4%D0%B0%D0%B9%D0%BB-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%B3%D1%80" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">upfile</td><td style="width: 50%;">Файл для загрузки</td></tr><tr><td style="width: 50%;">id</td><td style="width: 50%;">Идентификатор заказа (humanId)</td></tr><tr><td style="width: 50%;">print\_when\_packing</td><td style="width: 50%;">Печатать при упаковке</td></tr><tr><td style="width: 50%;">copies\_qty</td><td style="width: 50%;">Кол-во копий</td></tr></tbody></table>

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

```JSON
{
    "success": true,
    "id": "b233372d-cf7b-f07b-446b-128912be7c8a",
    "fileType": "JPG",
    "fileName": "IMG_20200822_101244",
  	"fileSource": "USER", //ESHOP | FULFILLMENT
    "fileExt": "jpg",
    "url": "https://storage.yandexcloud.net/order-files-kak2c/d0f03942-8d75-4456-93af-42ec518ef0a9.jpg",
    "printWhenPacking": false,
    "copiesQty": 1
}
```

/api/lite/orders/file

Удаляет файл

В параметре id передается идентификатор файла.

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

DELETE [https://app.kak2c.ru/api/lite/orders/file?id=b233372d-cf7b-f07b-446b-128912be7c8a](https://app.kak2c.ru/api/lite/orders/file?id=b233372d-cf7b-f07b-446b-128912be7c8a)

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

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

# /api/lite/orders/file/edit

/api/lite/orders/file/edit

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

```JSON
{
    "id": "b9e3efdd-455e-af10-996f-2cf6f03d9775",
    "copiesQty": 2,
    "printWhenPacking": true
}
```

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

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

# /api/lite/orders/discounts

### Применение промокода и скидки

/api/lite/orders/discounts

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

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

```JSON
{
    "id": "4249-1647",
    "promocode": "promocode",
    "manualDiscount": {
        "isActive": true,
        "discountType": "PERCENT",   // PERCENT,FIX
        "discountValue": 10
    }
}
```

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

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

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

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

# /api/lite/orders/email/repeat

### Заказ - повторить отправку email покупателю

/api/lite/orders/email/repeat

Отправляет email покупателю о создании заказа.

Параметры - humanId заказа и код "c"

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

```JSON
{  
 "id": "8202-1051",
 "c":"224f9149-a6c3-e408-5193-42cc55fe5749"	
}   
```

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

#### **успех:**

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

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

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

# /api/lite/orders/sync_ff

### Заказ - синхронизация с Фулфилмент складом

/api/lite/orders/sync\_ff

Выгрузка текущего состояния заказа на склад Фулфилмент (если в заказе проставлен склад такого типа).

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

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

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

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

#### **успех:**

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

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

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

# /api/lite/orders/delivery

### Заказ → обновление данных доставки

/api/lite/orders/delivery

Возможность обновить все данные по доставке заказа

id - номер заказа

Формат аналогичный секции delivery в GET /orders

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

```JSON
{
 
            "id": "8202-1051",
          
            "delivery": {
                "code": "624f1b23-049f-a1aa-ee21-b6b1523a88b1",               
                "pickupPointId": "2201-002",   
                "deliveryComment": "Поскорее",
                "desiredDeliveryDate": "2020-08-13",
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "20:00", 
                "isDeliverySumLimitActive": true,
                "deliverySumLimitAmount": 5000, 
                "deliverySumBelowLimitAmount": 1000,
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Алтайский",
                    "area": null,
                    "city": "Томск",
                    "settlement": null,
                    "street": "Барнаульская",
                    "house": "1",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Алтайский, Барнаул, Барнаульская, д 1",
                    "fullCity": null,
                    "rawData": "Алтайский, Барнаул, Барнаульская, д 1",
                    "zip": "",
                    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",
                    "areaFias": null,
                    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",
                    "settlementFias": null
                },
                "receiver": {
                    "name": "Сергей",
                    "surname": "Сергеев",
                    "patronymic": "",
                    "fullName": "Толстой Петр",
                    "phone": "89011111111",
                    "rawPhone": "89011111111",
                    "alternativePhone": "",
                    "email": "exhila.rate1111111@mail.ru",
                    "post": null,
                    "personType": "CUSTOMER"                  
                },
                "deliveryServices": null,
                "deliveryPayerType": "RECEIVER", // SENDER              
                "isDeliverySumLimitActive": true,
                "deliverySumLimitAmount": 324234,
                "deliverySumBelowLimitAmount": 23432432
            }      
    
}
```

####  

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

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

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

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

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

# /api/lite/orders/comments

### Заказ → обновление комментариев

/api/lite/orders/comments

Возможность обновить комментарии по заказу

id - номер заказа

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

```JSON
{ 
     "id": "8202-1051",
     "comment": "Комментарий покупателя",
  	 "operatorComment": "Комментарий оператора"  
}
```

####  

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

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

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

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

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

# /api/lite/orders/diff_history

### Запрос истории состояний заказа

/api/lite/orders/diff\_history

На данный момент возвращает только начальное состояние заказа.

Номер заказа передается в параметре order\_id.

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

```JSON
{
    "success": true,
    "history": [
        {
            "createTs": "2021-01-20 15:03:28.065",
            "component": "ESHOP",
            "diffData": "{\"id\":\"34575570\",\"date\":\"2021-01-20 15:03:08\",\"updateTs\":\"2021-01-20 15:03:25.990\",\"status\":\"ORDER_INFO_DRAFT\",\"totalOrderSum\":215.0,\"insuranceSum\":215.00,\"insuranceSumAutoCalculation\":true,\"paymentStatus\":\"NOT_PAID\",\"confirmStatus\":\"NEED_CONFIRM\",\"paymentMethodCode\":\"cod-card\",\"paymentMethodType\":\"COD_CARD\",\"needCustomerPayment\":false,\"customData\":\"{\\r\\n  \\\"beruDeliveryServiceName\\\" : \\\"DPD\\\",\\r\\n  \\\"beruDeliveryName\\\" : \\\"Самовывоз\\\"\\r\\n}\",\"orderType\":\"STANDARD\",\"delivery\":{\"code\":\"4166d5f0-5449-2827-d4e9-256526cb52f8\",\"type\":\"COURIER\",\"title\":\"BERU\",\"pickupPointId\":null,\"logoUrl\":\"https://storage.yandexcloud.net/lk-kak2c/delivery_beru_left.svg\",\"trackingNumber\":null,\"trackingURL\":null,\"desiredDeliveryDate\":null,\"desiredDeliveryTimeFrom\":\"09:00\",\"desiredDeliveryTimeTo\":\"18:00\",\"actualDeliveryDate\":null,\"pvzComment\":null,\"deliveryComment\":null,\"address\":{\"country\":null,\"countryCode\":null,\"region\":\"Москва\",\"area\":null,\"city\":\"Москва\",\"settlement\":null,\"street\":null,\"house\":null,\"block\":null,\"building\":null,\"flat\":null,\"fullAddress\":\"Москва\",\"fullCity\":null,\"rawData\":null,\"zip\":null,\"regionFias\":null,\"areaFias\":null,\"cityFias\":null,\"settlementFias\":null},\"receiver\":{\"name\":\"Покупатель на Беру\",\"surname\":null,\"patronymic\":null,\"phone\":\"+70000000000\",\"rawPhone\":\"+70000000000\",\"alternativePhone\":\"\",\"email\":null,\"post\":null,\"personType\":\"CUSTOMER\",\"address\":{\"country\":null,\"countryCode\":null,\"region\":\"Москва\",\"area\":null,\"city\":\"Москва\",\"settlement\":null,\"street\":null,\"house\":null,\"block\":null,\"building\":null,\"flat\":null,\"fullAddress\":\"Москва\",\"fullCity\":null,\"rawData\":null,\"zip\":null,\"regionFias\":null,\"areaFias\":null,\"cityFias\":null,\"settlementFias\":null}},\"deliveryServices\":null},\"legalEntity\":{\"id\":\"2446fe8b-4f98-dd1a-c7a4-757dafa9c8cb\",\"type\":\"PERSON\",\"role\":null,\"name\":\" Розничный покупатель\",\"organization\":null,\"person\":null},\"items\":[{\"num\":1,\"variantId\":\"1110\",\"variantExtId\":\"ЦБ-00035890\",\"productId\":\"1109\",\"productVariantCount\":1,\"name\":\"AVON Naturals \\\"Цветущая сакура\\\" Спрей для тела, 100мл\",\"article\":\"ЦБ-00035890\",\"quantity\":1,\"quantityAvailable\":1,\"vatRate\":\"NO_VAT\",\"vatSkuProduct\":\"NO_VAT\",\"price\":215.0,\"img\":\"https://storage.yandexcloud.net/images-k2c/6dcbbe98-da4a-4de3-9f99-91b9d1399f84.jpg\",\"itemAmountState\":{\"amountORDERED\":0,\"amountRESERVED\":0,\"amountPACKED\":0,\"amountSHIPPED\":0,\"amountDELIVERED\":0,\"amountLOST\":0,\"amountRETURNED\":0,\"amountRETURNED_DEFECTIVE\":0},\"skuType\":\"SKU\",\"itemDimensions\":{\"height\":15,\"width\":3,\"depth\":3},\"itemWeight\":107,\"barcode\":\"5050136478292\"},{\"num\":2,\"variantId\":\"delivery\",\"name\":\"Доставка\",\"quantity\":1,\"vatRate\":\"NO_VAT\",\"price\":0.0,\"skuType\":\"SERVICE\",\"barcode\":\"\"}],\"expenses\":[],\"files\":[],\"customerPaymentInProcess\":false,\"warehouseName\":\"Tempoline\",\"warehouseCode\":\"6864ba99-f13c-87c0-3f67-f4c7889718a5\",\"warehouseFFExported\":false,\"warehouseFFSync\":false,\"warehouseFFExportError\":false,\"permissionList\":{\"fieldPermissions\":[{\"type\":\"ITEMS_EDITABLE\",\"value\":true,\"reason\":null},{\"type\":\"PAYMENT_EDITABLE\",\"value\":true,\"reason\":null},{\"type\":\"IS_PAID_EDITABLE\",\"value\":true,\"reason\":null},{\"type\":\"RECEIVER_EDITABLE\",\"value\":true,\"reason\":null},{\"type\":\"DELIVERY_EDITABLE\",\"value\":true,\"reason\":null},{\"type\":\"WAREHOUSE_EDITABLE\",\"value\":true,\"reason\":null},{\"type\":\"COMMENTS_EDITABLE\",\"value\":true,\"reason\":null}],\"actionPermissions\":[{\"type\":\"CANCEL\",\"value\":true,\"reason\":null},{\"type\":\"CONFIRM\",\"value\":true,\"reason\":null},{\"type\":\"NEED_CONFIRM\",\"value\":true,\"reason\":null},{\"type\":\"PACK\",\"value\":true,\"reason\":null},{\"type\":\"COPY\",\"value\":true,\"reason\":null},{\"type\":\"PACK_CONTROL\",\"value\":true,\"reason\":null},{\"type\":\"UNPACK\",\"value\":true,\"reason\":null},{\"type\":\"SHIPPING\",\"value\":true,\"reason\":null},{\"type\":\"UNSHIPPING\",\"value\":true,\"reason\":null},{\"type\":\"REFRESH_RESERVE\",\"value\":true,\"reason\":null},{\"type\":\"RETURN_TO_DELIVERY\",\"value\":true,\"reason\":null},{\"type\":\"REVERT_RETURNS\",\"value\":true,\"reason\":null},{\"type\":\"DELIVER_SELF_PICKUP\",\"value\":true,\"reason\":null},{\"type\":\"DELIVER_COURIER\",\"value\":true,\"reason\":null},{\"type\":\"ACCEPT_RETURN\",\"value\":true,\"reason\":null}]},\"currency\":\"RUB\",\"summaryItemAmountState\":{\"amountORDERED\":0,\"amountRESERVED\":0,\"amountPACKED\":0,\"amountSHIPPED\":0,\"amountDELIVERED\":0,\"amountLOST\":0,\"amountRETURNED\":0,\"amountRETURNED_DEFECTIVE\":0},\"c\":\"5eee7ab1-70c4-1d31-4b21-90df1c522c00\"}"
        }
    ]
}
```

# [устарел] /api/lite/orders/packing_export

### Выгрузка файла для загрузки ШК Wildberries по схеме FBW - метод устарел

**Новый метод - [/api/lite/orders/packing/fbm/sticker/xls](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteorderspackingfbmstickerxls)**

/api/lite/orders/packing\_export

Возвращает файл с текущими ШК мест в заказе.

Формат файла соответствует необходимому для загрузки методом /api/lite/orders/add\_wb\_barcodes

Номер заказа передается в параметре id.

#### **Положительный результат запроса:** 

```JSON
{
    "success": true,
    "fileName": "packings_1234-1234.xls",
    "content": "0M8R4K(...)AAAAAAAAAAAAAAAAAAAAAA==" //Файл в формате excel, закодированный в BASE64 строке
}
```

#### **Отрицательный результат запроса:**

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

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

# /api/lite/orders/add_wb_barcodes

### \[устарел\] Загрузка файла с ШК Wildberries по схеме FBW - метод устарел

**Новый метод - [/api/lite/orders/packing/fbm/sticker/xls](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteorderspackingfbmstickerxls)**

/api/lite/orders/add\_wb\_barcodes

Заменяет текущие ШК на ШК от Wildberries.

Параметры передаются в формате form-data

<table border="1" id="bkmrk-order_id-%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">order\_id</td><td style="width: 50%;">Идентификатор заказа</td></tr><tr><td style="width: 50%;">file</td><td style="width: 50%;">Файл с ШК от Wildberries</td></tr></tbody></table>

#### **Положительный результат запроса:** 

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

#### **Отрицательный результат запроса:**

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

# Комментарии по анализу возвратов от фулфилмента

<div drawio-diagram="1370"><img src="https://wiki.kak2c.ru/uploads/images/drawio/2021-08/drawing-7-1628155201.png" alt=""/></div>

# /api/lite/pub/save_dadata_address

### Сохранить сырой адрес, возвращаемый из dadata

/api/lite/pub/save\_dadata\_address

(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))

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

```JSON
{
  "address_id": "1d729d23-0778-3399-36a6-e10cb53e0ab9", //необязательный параметр. Если такой ид уже есть, адрес обновляется. Если нет - создаётся новый
  "address": "{\"value\":\"г Москва, Варшавское шоссе, д 18 к 1\",\"unrestricted_value\":\"117105, г Москва, Донской р-н, Варшавское шоссе, д 18 к 1\",\"data\":{\"postal_code\":\"117105\",\"country\":\"Россия\",\"country_iso_code\":\"RU\",\"federal_district\":\"Центральный\",\"region_fias_id\":\"0c5b2444-70a0-4932-980c-b4dc0d3f02b5\",\"region_kladr_id\":\"7700000000000\",\"region_iso_code\":\"RU-MOW\",\"region_with_type\":\"г Москва\",\"region_type\":\"г\",\"region_type_full\":\"город\",\"region\":\"Москва\",\"area_fias_id\":null,\"area_kladr_id\":null,\"area_with_type\":null,\"area_type\":null,\"area_type_full\":null,\"area\":null,\"city_fias_id\":\"0c5b2444-70a0-4932-980c-b4dc0d3f02b5\",\"city_kladr_id\":\"7700000000000\",\"city_with_type\":\"г Москва\",\"city_type\":\"г\",\"city_type_full\":\"город\",\"city\":\"Москва\",\"city_area\":\"Южный\",\"city_district_fias_id\":null,\"city_district_kladr_id\":null,\"city_district_with_type\":\"Донской р-н\",\"city_district_type\":\"р-н\",\"city_district_type_full\":\"район\",\"city_district\":\"Донской\",\"settlement_fias_id\":null,\"settlement_kladr_id\":null,\"settlement_with_type\":null,\"settlement_type\":null,\"settlement_type_full\":null,\"settlement\":null,\"street_fias_id\":\"8fc06b0b-5de3-4a72-9e6f-9e0647a37a66\",\"street_kladr_id\":\"77000000000047600\",\"street_with_type\":\"Варшавское шоссе\",\"street_type\":\"ш\",\"street_type_full\":\"шоссе\",\"street\":\"Варшавское\",\"house_fias_id\":\"a41c0f52-7874-4b08-9f91-1067b87ddc6b\",\"house_kladr_id\":\"7700000000004760341\",\"house_cadnum\":null,\"house_type\":\"д\",\"house_type_full\":\"дом\",\"house\":\"18\",\"block_type\":\"к\",\"block_type_full\":\"корпус\",\"block\":\"1\",\"entrance\":null,\"floor\":null,\"flat_fias_id\":null,\"flat_cadnum\":null,\"flat_type\":null,\"flat_type_full\":null,\"flat\":null,\"flat_area\":null,\"square_meter_price\":\"194999\",\"flat_price\":null,\"postal_box\":null,\"fias_id\":\"a41c0f52-7874-4b08-9f91-1067b87ddc6b\",\"fias_code\":\"77000000000000004760341\",\"fias_level\":\"8\",\"fias_actuality_state\":\"0\",\"kladr_id\":\"7700000000004760341\",\"geoname_id\":\"524894\",\"capital_marker\":\"0\",\"okato\":\"45296561000\",\"oktmo\":\"45915000\",\"tax_office\":\"7726\",\"tax_office_legal\":\"7726\",\"timezone\":\"UTC+3\",\"geo_lat\":\"55.691963\",\"geo_lon\":\"37.620833\",\"beltway_hit\":\"IN_MKAD\",\"beltway_distance\":null,\"metro\":[{\"name\":\"Верхние Котлы\",\"line\":\"МЦК\",\"distance\":0.2},{\"name\":\"Крымская\",\"line\":\"МЦК\",\"distance\":1.0},{\"name\":\"Нагатинская\",\"line\":\"Серпуховско-Тимирязевская\",\"distance\":1.1}],\"qc_geo\":\"0\",\"qc_complete\":null,\"qc_house\":null,\"history_values\":null,\"unparsed_parts\":null,\"source\":null,\"qc\":null}}"
}
```

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

```JSON
{
    "address_id": "1d729d23-0778-3399-36a6-e10cb53e0ab9",
    "success": true
}
```

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

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

# /api/lite/bitrix/address

### Получить сырой адрес, сохранённый из dadata

/api/lite/bitrix/address

параметр id - идентификатор ранее сохранённого адреса в методе [/api/lite/pub/save\_dadata\_address](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apilitepubsave-dadata-address)

пример: /lite/bitrix/address?id=f20da5a8-12eb-315d-684c-85c65aa5a713

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

```JSON
{
    "address": "{\"value\":\"г Москва, Варшавское шоссе, д 18 к 1\",\"unrestricted_value\":\"117105, г Москва, Донской р-н, Варшавское шоссе, д 18 к 1\",\"data\":{\"postal_code\":\"117105\",\"country\":\"Россия\",\"country_iso_code\":\"RU\",\"federal_district\":\"Центральный\",\"region_fias_id\":\"0c5b2444-70a0-4932-980c-b4dc0d3f02b5\",\"region_kladr_id\":\"7700000000000\",\"region_iso_code\":\"RU-MOW\",\"region_with_type\":\"г Москва\",\"region_type\":\"г\",\"region_type_full\":\"город\",\"region\":\"Москва\",\"area_fias_id\":null,\"area_kladr_id\":null,\"area_with_type\":null,\"area_type\":null,\"area_type_full\":null,\"area\":null,\"city_fias_id\":\"0c5b2444-70a0-4932-980c-b4dc0d3f02b5\",\"city_kladr_id\":\"7700000000000\",\"city_with_type\":\"г Москва\",\"city_type\":\"г\",\"city_type_full\":\"город\",\"city\":\"Москва\",\"city_area\":\"Южный\",\"city_district_fias_id\":null,\"city_district_kladr_id\":null,\"city_district_with_type\":\"Донской р-н\",\"city_district_type\":\"р-н\",\"city_district_type_full\":\"район\",\"city_district\":\"Донской\",\"settlement_fias_id\":null,\"settlement_kladr_id\":null,\"settlement_with_type\":null,\"settlement_type\":null,\"settlement_type_full\":null,\"settlement\":null,\"street_fias_id\":\"8fc06b0b-5de3-4a72-9e6f-9e0647a37a66\",\"street_kladr_id\":\"77000000000047600\",\"street_with_type\":\"Варшавское шоссе\",\"street_type\":\"ш\",\"street_type_full\":\"шоссе\",\"street\":\"Варшавское\",\"house_fias_id\":\"a41c0f52-7874-4b08-9f91-1067b87ddc6b\",\"house_kladr_id\":\"7700000000004760341\",\"house_cadnum\":null,\"house_type\":\"д\",\"house_type_full\":\"дом\",\"house\":\"18\",\"block_type\":\"к\",\"block_type_full\":\"корпус\",\"block\":\"1\",\"entrance\":null,\"floor\":null,\"flat_fias_id\":null,\"flat_cadnum\":null,\"flat_type\":null,\"flat_type_full\":null,\"flat\":null,\"flat_area\":null,\"square_meter_price\":\"194999\",\"flat_price\":null,\"postal_box\":null,\"fias_id\":\"a41c0f52-7874-4b08-9f91-1067b87ddc6b\",\"fias_code\":\"77000000000000004760341\",\"fias_level\":\"8\",\"fias_actuality_state\":\"0\",\"kladr_id\":\"7700000000004760341\",\"geoname_id\":\"524894\",\"capital_marker\":\"0\",\"okato\":\"45296561000\",\"oktmo\":\"45915000\",\"tax_office\":\"7726\",\"tax_office_legal\":\"7726\",\"timezone\":\"UTC+3\",\"geo_lat\":\"55.691963\",\"geo_lon\":\"37.620833\",\"beltway_hit\":\"IN_MKAD\",\"beltway_distance\":null,\"metro\":[{\"name\":\"Верхние Котлы\",\"line\":\"МЦК\",\"distance\":0.2},{\"name\":\"Крымская\",\"line\":\"МЦК\",\"distance\":1.0},{\"name\":\"Нагатинская\",\"line\":\"Серпуховско-Тимирязевская\",\"distance\":1.1}],\"qc_geo\":\"0\",\"qc_complete\":null,\"qc_house\":null,\"history_values\":null,\"unparsed_parts\":null,\"source\":null,\"qc\":null}}",
    "address_id": "f20da5a8-12eb-315d-684c-85c65aa5a713",
    "success": true
}
```

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

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

# /api/lite/orders/shipped/report

### Получение сводки по отправленным заказам с информацией о уникальных номерах(например чз)

/api/lite/orders/shipped/report

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

Для выполнения запроса необходимо обязательно задать параметры: <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; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; 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;">date\_from</span> и <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; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; 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;">date\_to(период должен быть не больше недели), delivery\_code ид курьерок через запятую. Можно так же задать не обязательные параметры size(не больше 500) - порция получаемых данных, и page - страница. По умолчанию size= 20 и page=0. Пример полного запроса</span>

/api/lite/orders/<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; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; 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;">shipped/report?delivery\_code=7d7365f2-5189-ab7b-ddf3-9d6b41cca901,7d7365f2-5189-ab7b-ddf3-9d6b41cca902&amp;date\_from=2023-01-07T00:00:00&amp;date\_to=2023-01-14T23:59:59&amp;page=0&amp;size=400</span>

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

```JSON
{
    "orders": [
        {
            "currency": "RUB",
            "date": "2023-01-14 12:30:17.180",
            "shippingDate": "2023-01-17 12:30:17.180",
            "delivery": {
                "code": "8826c198-0815-d4ad-b3ab-0681ca7defbb",
                "deliveryCode": "OZON",
                "title": "OZON"
            },
            "externalId": "64029298-0041-2",
            "id": "64029298-0041-2",
            "shippedItems": [
                {
                    "accountingAttributes": [
                        {
                            "code": "uniquenumber",
                            "n": 1,
                            "stringValue": "4601532004939"
                        }
                    ],
                    "article": "4000023504",
                    "name": "Контейнер для порошка, 5 л (Полимербыт):6/18",
                    "price": 199.00,
                    "quantity": 1,
                    "variantId": "b3d82d45-b383-414e-94dc-34f8c2cd3296"
                }
            ],
            "status": "ORDER_INFO_SHIPPED",
            "totalOrderSum": 199.00
        },
        {
            "currency": "RUB",
            "date": "2023-01-14 12:09:43.014",
            "delivery": {
                "code": "8826c198-0815-d4ad-b3ab-0681ca7defbb",
                "deliveryCode": "OZON",
                "title": "OZON"
            },
            "externalId": "43319845-0119-1",
            "id": "43319845-0119-1",
            "shippedItems": [
                {
                    "accountingAttributes": [
                        {
                            "code": "uniquenumber",
                            "n": 1,
                            "stringValue": "4640043100471"
                        }
                    ],
                    "article": "1000324110",
                    "name": "SOFFIONE Premio Туалетная бумага Лаванда 3сл 4рул(Арх):10",
                    "price": 118.00,
                    "quantity": 1,
                    "variantId": "cc50d935-8a6c-4f67-ad94-202ea1bd35e4"
                }
            ],
            "status": "ORDER_INFO_SHIPPED",
            "totalOrderSum": 118.00
        },
        {
            "currency": "RUB",
            "date": "2023-01-14 09:52:22.214",
            "delivery": {
                "code": "8826c198-0815-d4ad-b3ab-0681ca7defbb",
                "deliveryCode": "OZON",
                "title": "OZON"
            },
            "externalId": "39501623-0020-1",
            "id": "39501623-0020-1",
            "shippedItems": [
                {
                    "accountingAttributes": [
                        {
                            "code": "uniquenumber",
                            "n": 1,
                            "stringValue": "9000101031669"
                        }
                    ],
                    "article": "1000203568",
                    "name": "Е Кондиционер д/белья Свежий 2л(Хенкель):8",
                    "price": 209.00,
                    "quantity": 1,
                    "variantId": "1407d0d7-b532-4992-8383-f7500bae5b67"
                }
            ],
            "status": "ORDER_INFO_SHIPPED",
            "totalOrderSum": 209.00
        }
    ],
    "recordsTotal": 27673,
    "success": true
}
```

# /api/lite/orders/history/status

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

/api/lite/orders/history/status

Возвращает историю смены статуса по указанному заказу

Обязательный параметр: id заказа

####  

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

```JSON
{
    "items": [
        {
            "date": "2023-07-21 18:03:26.797",
            "infoStatus": "ORDER_INFO_SHIPPED"
        },
        {
            "date": "2023-07-21 18:03:08.270",
            "infoStatus": "ORDER_INFO_PACKED"
        },
        {
            "date": "2023-07-21 18:02:55.037",
            "infoStatus": "ORDER_INFO_IN_PACKING"
        },
        {
            "date": "2023-07-21 18:02:26.174",
            "infoStatus": "ORDER_INFO_READY_TO_PACK"
        },
        {
            "date": "2023-07-21 18:02:09.110",
            "infoStatus": "ORDER_INFO_REQUIRE_PAYMENT"
        },
        {
            "date": "2023-07-21 18:01:25.464",
            "infoStatus": "ORDER_INFO_NEED_CONFIRM"
        }
    ],
    "success": true
}
```

# /api/lite/orders/shipped/report/packings

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

/api/lite/orders/shipped/report/packings

Возвращает список заказов, отгруженных в указанный интервал по указанной службе доставки.

Если служба доставки не указана - возвращает по всем службам доставки.

Для выполнения запроса необходимо задать параметры:

date\_from и date\_to(необязательно, период должен быть не больше недели),

delivery\_company - интересующая служба доставки по перечислению DeliveryCompany.

  
Можно так же задать не обязательные параметры size(не больше 500) - порция получаемых данных, и page - страница. По умолчанию size= 20 и page=0.

Ответ - в формате стандартного списка заказов /api/lite/orders

Пример полного запроса

GET /api/lite/orders/shipped/report/packings?date\_from=2020-08-01T01:00:00&amp;date\_to=2020-08-07T00:00:00&amp;delivery\_company=CDEK

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

```JSON
{
    "orders": [
        {
            "c": "d4a5e0a9-7ac7-5970-9682-633beb98c8ea",
            "confirmStatus": "APPROVED",
            "createTs": "2020-08-06 10:56:46.496",
            "crossdockEditable": false,
            "currency": "RUB",
            "customData": "{\n  \"ozonPostingNumber\" : \"07003190-0086-3\"\n}",
            "customerPaymentInProcess": false,
            "date": "2023-02-06 10:56:46",
            "delivery": {
                "address": {
                    "block": "3",
                    "building": "4",
                    "city": "Москва",
                    "country": "Россия",
                    "countryCode": "RU",
                    "fullAddress": "Москва",
                    "house": "2",
                    "region": "Москва",
                    "street": "1"
                },
                "code": "145088e0-b11e-d2c3-a066-02526f15ac4f",
                "deliveryCode": "OZON",
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "18:00",
                "logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_ozon_left.svg",
                "receiver": {
                    "address": {
                        "block": "3",
                        "building": "4",
                        "city": "Москва",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Москва",
                        "house": "2",
                        "region": "Москва",
                        "street": "1"
                    },
                    "alternativePhone": "",
                    "name": "Покупатель на Озоне",
                    "passport": {},
                    "personType": "CUSTOMER",
                    "phone": "+70000000000",
                    "rawPhone": "+70000000000"
                },
                "title": "OZON",
                "trackingNumber": "07003190-0086-3",
                "trackingURL": "https://www.ozon.ru/",
                "type": "COURIER"
            },
            "expenses": [],
            "externalId": "162092860",
            "files": [],
            "id": "07003190-0086-3",
            "insuranceSum": 624.00,
            "insuranceSumAutoCalculation": true,
            "isMarketplaceOrder": true,
            "items": [
                {
                    "article": "FAQ-D-000110",
                    "barcode": "4601811006951",
                    "customData": "{\"marketplaceSkuId\":179692054}",
                    "img": "https://img.kak2c.ru/i/T/8/kgMdAI9R_c.jpg",
                    "itemAmountState": {
                        "amountDELIVERED": 1,
                        "amountLOST": 0,
                        "amountORDERED": 1,
                        "amountPACKED": 1,
                        "amountRESERVED": 1,
                        "amountRETURNED": 0,
                        "amountRETURNED_AS_CLAIMS": 0,
                        "amountRETURNED_DEFECTIVE": 0,
                        "amountRETURNED_TO_CLIENT": 0,
                        "amountSHIPPED": 1
                    },
                    "itemDimensions": {
                        "depth": 10,
                        "height": 20,
                        "width": 10
                    },
                    "itemWeight": 350,
                    "name": "Шампунь-гель для душа 2 в 1 Bro Cosmetics, WASSUP, MAN // очищает и тонизирует, Цвет: серый ",
                    "num": 1,
                    "price": 624.00,
                    "productExtId": "FAQ-D-000110",
                    "productId": "FAQ-D-000110",
                    "productVariantCount": 3,
                    "quantity": 1,
                    "quantityAvailable": 47,
                    "skuType": "SKU",
                    "variantExtId": "FAQ-D-000110",
                    "variantId": "FAQ-D-000110",
                    "vatRate": "NO_VAT",
                    "vatSkuProduct": "NO_VAT"
                },
                {
                    "article": "",
                    "barcode": "",
                    "name": "Доставка",
                    "num": 2,
                    "price": 0.00,
                    "quantity": 1,
                    "skuType": "SERVICE",
                    "variantId": "delivery",
                    "vatRate": "NO_VAT"
                }
            ],
            "legalEntity": {
                "id": "3c0a3ad3-b10f-4299-5b1b-a3d90b0c198a",
                "name": " Розничный покупатель",
                "type": "PERSON"
            },
            "manualDiscount": {
                "appliedDiscountValue": 0,
                "discountType": "FIX",
                "discountValue": 0,
                "isActive": false
            },
            "needCustomerPayment": false,
            "needReserve": true,
            "onlinePaymentSum": 624.00,
            "operatorComment": "-",
            "orderType": "STANDARD",
            "packingOptions": [],
            "packingVideos": [
                "http://cvs-2.kak2c.ru:21080/videoserver/video/2021-05-26/1f742f52-be58-11eb-5081-002590357b68.mp4"
            ],
            "packings": [
                {
                    "barcode": "6660000034777",
                    "files": [],
                    "items": [
                        {
                            "accountingAttributes": [],
                            "article": "FAQ-D-000110",
                            "barcode": "4601811006951",
                            "customData": "",
                            "img": "https://img.kak2c.ru/i/T/8/kgMdAI9R_c.jpg",
                            "itemDimensions": {
                                "depth": 10,
                                "height": 20,
                                "width": 10
                            },
                            "itemWeight": 350,
                            "name": "Шампунь-гель для душа 2 в 1 Bro Cosmetics, WASSUP, MAN // очищает и тонизирует, Цвет: серый ",
                            "num": 1,
                            "price": 624.00,
                            "productExtId": "FAQ-D-000110",
                            "productId": "FAQ-D-000110",
                            "productVariantCount": 3,
                            "quantity": 1,
                            "skuType": "SKU",
                            "variantExtId": "FAQ-D-000110",
                            "variantId": "FAQ-D-000110",
                            "vatRate": "NO_VAT",
                            "vatSkuProduct": "NO_VAT"
                        }
                    ],
                    "measurements": {
                        "dimensions": {
                            "depth": 100,
                            "height": 100,
                            "width": 180
                        },
                        "success": true,
                        "weight": 452
                    }
                }
            ],
            "paymentMethodCode": "online",
            "paymentMethodName": "Предоплата картой на сайте",
            "paymentMethodType": "ONLINE",
            "paymentStatus": "PAID",
            "permissionList": {
                "actionPermissions": [
                    {
                        "type": "CANCEL",
                        "value": false
                    },
                    {
                        "type": "CONFIRM",
                        "value": false
                    },
                    {
                        "type": "NEED_CONFIRM",
                        "value": false
                    },
                    {
                        "type": "PACK",
                        "value": false
                    },
                    {
                        "type": "COPY",
                        "value": true
                    },
                    {
                        "type": "PACK_CONTROL",
                        "value": false
                    },
                    {
                        "type": "UNPACK",
                        "value": false
                    },
                    {
                        "type": "SHIPPING",
                        "value": false
                    },
                    {
                        "type": "UNSHIPPING",
                        "value": false
                    },
                    {
                        "type": "REFRESH_RESERVE",
                        "value": false
                    },
                    {
                        "type": "RETURN_TO_DELIVERY",
                        "value": false
                    },
                    {
                        "type": "REVERT_RETURNS",
                        "value": false
                    },
                    {
                        "type": "DELIVER_SELF_PICKUP",
                        "value": false
                    },
                    {
                        "type": "DELIVER_COURIER",
                        "value": false
                    },
                    {
                        "type": "ACCEPT_RETURN",
                        "value": false
                    }
                ],
                "fieldPermissions": [
                    {
                        "reason": "Склад уже упаковал заказ. Изменение заказа невозможно.",
                        "type": "ITEMS_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже упаковал заказ. Изменение заказа невозможно.",
                        "type": "PAYMENT_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже упаковал заказ. Изменение заказа невозможно.",
                        "type": "IS_PAID_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже упаковал заказ. Изменение заказа невозможно.",
                        "type": "RECEIVER_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже упаковал заказ. Изменение заказа невозможно.",
                        "type": "DELIVERY_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже упаковал заказ. Изменение заказа невозможно.",
                        "type": "WAREHOUSE_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже упаковал заказ. Изменение заказа невозможно.",
                        "type": "COMMENTS_EDITABLE",
                        "value": false
                    },
                    {
                        "type": "OPERATOR_COMMENTS_EDITABLE",
                        "value": true
                    }
                ],
                "infoStatus": "ORDER_INFO_DELIVERED"
            },
            "plannedTakeOutDate": "2020-08-07 13:00:00",
            "readyForFFExport": true,
            "shortUrl": "http://r.kak2c.ru/0700jhr",
            "status": "ORDER_INFO_DELIVERED",
            "summaryItemAmountState": {
                "amountDELIVERED": 1,
                "amountLOST": 0,
                "amountORDERED": 1,
                "amountPACKED": 1,
                "amountRESERVED": 1,
                "amountRETURNED": 0,
                "amountRETURNED_AS_CLAIMS": 0,
                "amountRETURNED_DEFECTIVE": 0,
                "amountRETURNED_TO_CLIENT": 0,
                "amountSHIPPED": 1
            },
            "totalOrderSum": 624.00,
            "updateTs": "2023-04-03 15:38:17.233",
            "warehouseCode": "6805bc64-270f-ae7d-1231-773ff181e446",
            "warehouseFFExportError": false,
            "warehouseFFExported": true,
            "warehouseFFSync": true,
            "warehouseFFSyncDate": "2020-08-06 11:00:35",
            "warehouseName": "Tempoline",
            "warehouseShippingOptions": {
                "packingType": "MIX_PACKINGS"
            }
        }
      }
     ],
    "recordsTotal": 1,
    "success": true
}
```

# /api/lite/orders/shipped/report/cod

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

/api/lite/orders/shipped/report/cod

Возвращает список заказов, по которым с указанной в запросе даты были переводы наложенных платежей по бухгалтерии.

Для выполнения запроса необходимо задать параметры:

date\_from - дата для поиска даты перевода платежей (поле executionTime в codPayments заказов)

  
Можно так же задать не обязательные параметры size(не больше 500) - порция получаемых данных, и page - страница. По умолчанию size= 20 и page=0.

Ответ - в формате стандартного списка заказов /api/lite/orders

Пример полного запроса

GET https://app.kak2c.ru/api/lite/orders/shipped/report/cod?date\_from=2020-01-01T00:00:00

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

```JSON
{
    "orders": [
        {
            "c": "a0737972-c6bb-0759-35df-afd6bc2e6400",
            "codPayments": [
                {
                    "date": "2022-05-30 14:03:44",
                    "executionTime": "2022-05-30 14:30:00",
                    "paymentDocumentId": "BR0237-1",
                    "sum": 8857.00
                }
            ],
            "comment": "",
            "confirmStatus": "APPROVED",
            "createTs": "2022-05-30 14:04:18.900",
            "crossdockEditable": false,
            "currency": "RUB",
            "customerPaymentInProcess": false,
            "date": "2022-05-30 14:03:44",
            "delivery": {
                "address": {
                    "city": "Москва",
                    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "country": "Россия",
                    "countryCode": "RU",
                    "fullAddress": "Москва",
                    "rawData": "Москва",
                    "region": "Москва",
                    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "zip": "143582"
                },
                "code": "77e87a14-4e96-2ccb-3beb-4b1b33e466c8",
                "deliveryCode": "0ed6b628-288d-11e9-8989-002590923634",
                "deliveryComment": "",
                "desiredDeliveryDate": "2022-05-31",
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "18:00",
                "isDeliverySumLimitActive": false,
                "logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_pickpoint_left.svg",
                "pickupPointId": "5001-152",
                "pvzComment": "ПВЗ PickPoint, Код пункта выдачи: 5001-152, Адрес пункта выдачи: Невская ул., д. 704, График работы: Пн-Вс 10:00-22:00, Описание пункта выдачи: Постамат расположен в ТЦ Княжий двор. Перед ТЦ развязка общественного транспорта, остановка Памятник. От ж/д станции Нахабино - Транспорт: Автобус №20, 21. От метро Щукинская - Транспорт: Маршрутное такси №480\nВойти в ТЦ через центральный вход, подняться по лестнице на 2 этаж, повернуть направо, пройти прямо. С левой стороны вдоль стены расположен постамат.",
                "pvzInfo": {
                    "address": {
                        "city": "Москва",
                        "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Невская ул., д. 704",
                        "region": "Москва",
                        "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "zip": "143582"
                    },
                    "code": "5001-152",
                    "courier": "PickPoint",
                    "courierCode": "PICKPOINT",
                    "courierPostamatType": "АПТ",
                    "deliveryServices": [
                        "DAY_OFF_DELIVERY",
                        "CONTACTLESS_DELIVERY",
                        "TEMPERATURE_REGIME",
                        "TRYING",
                        "CHECK_CONTENT",
                        "DANGEROUS_CARGO",
                        "PARTIAL_DELIVERY",
                        "PERSONALLY_IN_HANDS",
                        "REVERSE"
                    ],
                    "description": "Постамат расположен в ТЦ Княжий двор. Перед ТЦ развязка общественного транспорта, остановка Памятник. От ж/д станции Нахабино - Транспорт: Автобус №20, 21. От метро Щукинская - Транспорт: Маршрутное такси №480\nВойти в ТЦ через центральный вход, подняться по лестнице на 2 этаж, повернуть направо, пройти прямо. С левой стороны вдоль стены расположен постамат.",
                    "latitude": "55.812358",
                    "longitude": "37.04213",
                    "maxSize": "64x40.5x35.8",
                    "maxWeight": 15,
                    "metroStation": "метро Щукинская",
                    "paymentMethods": [
                        "COD_CASH",
                        "COD_CARD"
                    ],
                    "type": "Postamat",
                    "workTime": "Пн-Вс 10:00-22:00"
                },
                "receiver": {
                    "address": {
                        "city": "Москва",
                        "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Москва",
                        "rawData": "Москва",
                        "region": "Москва",
                        "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "zip": "143582"
                    },
                    "alternativePhone": "",
                    "email": "mer@mer.mer",
                    "fullName": "Цу Йцу",
                    "name": "цу йцу",
                    "passport": {},
                    "personType": "CUSTOMER",
                    "phone": "74563464645",
                    "rawPhone": "74563464645"
                },
                "title": "PickPoint",
                "trackingNumber": "test333",
                "type": "PVZ"
            },
            "expenses": [],
            "externalId": "BR0237",
            "files": [],
            "id": "BR0237",
            "insuranceSum": 8857.00,
            "insuranceSumAutoCalculation": false,
            "isMarketplaceOrder": false,
            "items": [
                {
                    "barcode": "4211125637101",
                    "itemAmountState": {
                        "amountDELIVERED": 1,
                        "amountLOST": 0,
                        "amountORDERED": 1,
                        "amountPACKED": 1,
                        "amountRESERVED": 1,
                        "amountRETURNED": 0,
                        "amountRETURNED_AS_CLAIMS": 0,
                        "amountRETURNED_DEFECTIVE": 0,
                        "amountRETURNED_TO_CLIENT": 0,
                        "amountSHIPPED": 1
                    },
                    "itemDimensions": {
                        "depth": 26,
                        "height": 50,
                        "width": 42
                    },
                    "itemWeight": 5580,
                    "name": "Гидромассажная ванночка для ног Beurer FB50 белый",
                    "num": 1,
                    "price": 8000.00,
                    "productId": "1059034",
                    "productVariantCount": 1,
                    "quantity": 1,
                    "quantityAvailable": 0,
                    "skuType": "SKU",
                    "variantId": "1059034",
                    "vatRate": "VAT_20"
                },
                {
                    "barcode": "",
                    "name": "Доставка",
                    "num": 2,
                    "price": 857.00,
                    "quantity": 1,
                    "skuType": "SERVICE",
                    "variantId": "delivery",
                    "vatRate": "NO_VAT"
                }
            ],
            "legalEntity": {
                "id": "fa0d6c85-6e62-51fa-346e-e5433c92b2d8",
                "name": " Розничный покупатель",
                "type": "PERSON"
            },
            "manualDiscount": {
                "appliedDiscountValue": 0,
                "discountType": "FIX",
                "discountValue": 0,
                "isActive": false
            },
            "needCustomerPayment": false,
            "needReserve": true,
            "onlinePaymentSum": 8857.00,
            "operatorComment": "-",
            "orderType": "STANDARD",
            "packingOptions": [],
            "packings": [
                {
                    "barcode": "202749272704",
                    "files": [],
                    "items": [
                        {
                            "accountingAttributes": [],
                            "barcode": "4211125637101",
                            "itemDimensions": {
                                "depth": 26,
                                "height": 50,
                                "width": 42
                            },
                            "itemWeight": 5580,
                            "name": "Гидромассажная ванночка для ног Beurer FB50 белый",
                            "num": 1,
                            "price": 8000.00,
                            "productId": "1059034",
                            "productVariantCount": 1,
                            "quantity": 1,
                            "skuType": "SKU",
                            "variantId": "1059034",
                            "vatRate": "VAT_20"
                        }
                    ],
                    "measurements": {
                        "dimensions": {
                            "depth": 12,
                            "height": 12,
                            "width": 12
                        },
                        "success": true,
                        "weight": 5580
                    }
                }
            ],
            "paymentMethodCode": "cod-card",
            "paymentMethodName": "Оплата картой при получении",
            "paymentMethodType": "COD_CARD",
            "paymentStatus": "NOT_PAID",
            "permissionList": {
                "actionPermissions": [
                    {
                        "type": "CANCEL",
                        "value": false
                    },
                    {
                        "type": "CONFIRM",
                        "value": false
                    },
                    {
                        "type": "NEED_CONFIRM",
                        "value": false
                    },
                    {
                        "type": "PACK",
                        "value": false
                    },
                    {
                        "type": "COPY",
                        "value": true
                    },
                    {
                        "type": "PACK_CONTROL",
                        "value": false
                    },
                    {
                        "type": "UNPACK",
                        "value": false
                    },
                    {
                        "type": "SHIPPING",
                        "value": false
                    },
                    {
                        "type": "UNSHIPPING",
                        "value": false
                    },
                    {
                        "type": "REFRESH_RESERVE",
                        "value": false
                    },
                    {
                        "type": "RETURN_TO_DELIVERY",
                        "value": true
                    },
                    {
                        "type": "REVERT_RETURNS",
                        "value": false
                    },
                    {
                        "type": "DELIVER_SELF_PICKUP",
                        "value": false
                    },
                    {
                        "type": "DELIVER_COURIER",
                        "value": false
                    },
                    {
                        "type": "ACCEPT_RETURN",
                        "value": false
                    }
                ],
                "fieldPermissions": [
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "ITEMS_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "PAYMENT_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "IS_PAID_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "RECEIVER_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "DELIVERY_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "WAREHOUSE_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "COMMENTS_EDITABLE",
                        "value": false
                    },
                    {
                        "type": "OPERATOR_COMMENTS_EDITABLE",
                        "value": true
                    }
                ],
                "infoStatus": "ORDER_INFO_DELIVERED"
            },
            "plannedTakeOutDate": "2022-05-31 09:00:00",
            "readyForFFExport": true,
            "shortUrl": "http://r.kak2c.ru/yr99em9",
            "status": "ORDER_INFO_DELIVERED",
            "summaryItemAmountState": {
                "amountDELIVERED": 1,
                "amountLOST": 0,
                "amountORDERED": 1,
                "amountPACKED": 1,
                "amountRESERVED": 1,
                "amountRETURNED": 0,
                "amountRETURNED_AS_CLAIMS": 0,
                "amountRETURNED_DEFECTIVE": 0,
                "amountRETURNED_TO_CLIENT": 0,
                "amountSHIPPED": 1
            },
            "totalOrderSum": 8857.00,
            "updateTs": "2022-05-30 14:29:35.964",
            "warehouseCode": "2b0cde46-043f-cdc9-e2e4-aed4ff5a7d4f",
            "warehouseFFExportError": false,
            "warehouseFFExported": false,
            "warehouseFFSync": false,
            "warehouseName": "BR_K",
            "warehouseShippingOptions": {}
        },
        {
            "c": "451dd9fc-9347-e7e4-c51d-e7842d870e40",
            "codPayments": [
                {
                    "date": "2022-05-31 12:22:16",
                    "executionTime": "2022-05-31 13:15:00",
                    "paymentDocumentId": "BR0255-1",
                    "sum": 5486.00
                }
            ],
            "comment": "",
            "confirmStatus": "APPROVED",
            "createTs": "2022-05-31 12:22:16.171",
            "crossdockEditable": false,
            "currency": "RUB",
            "customerPaymentInProcess": false,
            "date": "2022-05-31 12:21:38",
            "delivery": {
                "address": {
                    "city": "Краснодар",
                    "cityFias": "7dfa745e-aa19-4688-b121-b655c11e482f",
                    "country": "Россия",
                    "countryCode": "RU",
                    "fullAddress": "Краснодарский, Краснодар",
                    "rawData": "Краснодарский, Краснодар",
                    "region": "Краснодарский",
                    "regionFias": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8",
                    "zip": "350016"
                },
                "code": "77e87a14-4e96-2ccb-3beb-4b1b33e466c8",
                "deliveryCode": "0ed6b628-288d-11e9-8989-002590923634",
                "deliveryComment": "",
                "desiredDeliveryDate": "2022-06-02",
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "18:00",
                "isDeliverySumLimitActive": false,
                "logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_pickpoint_left.svg",
                "pickupPointId": "2302-060",
                "pvzComment": "ПВЗ PickPoint, Код пункта выдачи: 2302-060, Адрес пункта выдачи: Карякина ул, д.25, График работы: Пн-Пт 10:00-20:00, Сб 10:00-17:00, Описание пункта выдачи: Пункт выдачи заказов расположен в отдельно стоящем здании. Транспорт: Автобус №36, 58, 96. Маршрутное такси №48, 56, 85. Остановка Черкасская ул.\nВойти через отдельный вход справа, на цокольном этаже расположен пункт выдачи",
                "pvzInfo": {
                    "address": {
                        "city": "Краснодар",
                        "cityFias": "7dfa745e-aa19-4688-b121-b655c11e482f",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Карякина ул, д.25",
                        "region": "Краснодарский",
                        "regionFias": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8",
                        "zip": "350016"
                    },
                    "code": "2302-060",
                    "courier": "PickPoint",
                    "courierCode": "PICKPOINT",
                    "courierPostamatType": "ПВЗ",
                    "deliveryServices": [
                        "TRYING",
                        "DANGEROUS_CARGO",
                        "PARTIAL_DELIVERY",
                        "PERSONALLY_IN_HANDS",
                        "REVERSE",
                        "CHECK_CONTENT",
                        "DAY_OFF_DELIVERY",
                        "CONTACTLESS_DELIVERY",
                        "TEMPERATURE_REGIME"
                    ],
                    "description": "Пункт выдачи заказов расположен в отдельно стоящем здании. Транспорт: Автобус №36, 58, 96. Маршрутное такси №48, 56, 85. Остановка Черкасская ул.\nВойти через отдельный вход справа, на цокольном этаже расположен пункт выдачи",
                    "latitude": "45.065947",
                    "longitude": "39.010823",
                    "maxSize": "180",
                    "maxWeight": 15,
                    "metroStation": "",
                    "paymentMethods": [
                        "COD_CASH",
                        "COD_CARD"
                    ],
                    "type": "PVZ",
                    "workTime": "Пн-Пт 10:00-20:00, Сб 10:00-17:00"
                },
                "receiver": {
                    "address": {
                        "city": "Краснодар",
                        "cityFias": "7dfa745e-aa19-4688-b121-b655c11e482f",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Краснодарский, Краснодар",
                        "rawData": "Краснодарский, Краснодар",
                        "region": "Краснодарский",
                        "regionFias": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8",
                        "zip": "350016"
                    },
                    "alternativePhone": "",
                    "email": "mer@mer.mer",
                    "fullName": "Цу Йцу",
                    "name": "цу йцу",
                    "passport": {},
                    "personType": "CUSTOMER",
                    "phone": "74563464645",
                    "rawPhone": "74563464645"
                },
                "title": "PickPoint",
                "trackingNumber": "222",
                "type": "PVZ"
            },
            "expenses": [],
            "externalId": "BR0255",
            "files": [],
            "id": "BR0255",
            "insuranceSum": 548.60,
            "insuranceSumAutoCalculation": false,
            "isMarketplaceOrder": false,
            "items": [
                {
                    "barcode": "4211125570354",
                    "itemAmountState": {
                        "amountDELIVERED": 1,
                        "amountLOST": 0,
                        "amountORDERED": 1,
                        "amountPACKED": 1,
                        "amountRESERVED": 1,
                        "amountRETURNED": 0,
                        "amountRETURNED_AS_CLAIMS": 0,
                        "amountRETURNED_DEFECTIVE": 0,
                        "amountRETURNED_TO_CLIENT": 0,
                        "amountSHIPPED": 1
                    },
                    "itemDimensions": {
                        "depth": 17,
                        "height": 7,
                        "width": 23
                    },
                    "itemWeight": 167,
                    "name": "Маникюрно-педикюрный набор Beurer MP62 белый",
                    "num": 1,
                    "price": 5000.00,
                    "productId": "1047872",
                    "productVariantCount": 1,
                    "quantity": 1,
                    "quantityAvailable": 0,
                    "skuType": "SKU",
                    "variantId": "1047872",
                    "vatRate": "VAT_20"
                },
                {
                    "barcode": "",
                    "name": "Доставка",
                    "num": 2,
                    "price": 486.00,
                    "quantity": 1,
                    "skuType": "SERVICE",
                    "variantId": "delivery",
                    "vatRate": "NO_VAT"
                }
            ],
            "legalEntity": {
                "id": "fa0d6c85-6e62-51fa-346e-e5433c92b2d8",
                "name": " Розничный покупатель",
                "type": "PERSON"
            },
            "manualDiscount": {
                "appliedDiscountValue": 0,
                "discountType": "FIX",
                "discountValue": 0,
                "isActive": false
            },
            "needCustomerPayment": false,
            "needReserve": true,
            "onlinePaymentSum": 5486.00,
            "operatorComment": "",
            "orderType": "STANDARD",
            "packingOptions": [],
            "packings": [
                {
                    "barcode": "202749561679",
                    "files": [],
                    "items": [
                        {
                            "accountingAttributes": [],
                            "barcode": "4211125570354",
                            "itemDimensions": {
                                "depth": 17,
                                "height": 7,
                                "width": 23
                            },
                            "itemWeight": 167,
                            "name": "Маникюрно-педикюрный набор Beurer MP62 белый",
                            "num": 1,
                            "price": 5000.00,
                            "productId": "1047872",
                            "productVariantCount": 1,
                            "quantity": 1,
                            "skuType": "SKU",
                            "variantId": "1047872",
                            "vatRate": "VAT_20"
                        }
                    ],
                    "measurements": {
                        "dimensions": {
                            "depth": 12,
                            "height": 12,
                            "width": 12
                        },
                        "success": true,
                        "weight": 1000
                    }
                }
            ],
            "paymentMethodCode": "cod-card",
            "paymentMethodName": "Оплата картой при получении",
            "paymentMethodType": "COD_CARD",
            "paymentStatus": "NOT_PAID",
            "permissionList": {
                "actionPermissions": [
                    {
                        "type": "CANCEL",
                        "value": false
                    },
                    {
                        "type": "CONFIRM",
                        "value": false
                    },
                    {
                        "type": "NEED_CONFIRM",
                        "value": false
                    },
                    {
                        "type": "PACK",
                        "value": false
                    },
                    {
                        "type": "COPY",
                        "value": true
                    },
                    {
                        "type": "PACK_CONTROL",
                        "value": false
                    },
                    {
                        "type": "UNPACK",
                        "value": false
                    },
                    {
                        "type": "SHIPPING",
                        "value": false
                    },
                    {
                        "type": "UNSHIPPING",
                        "value": false
                    },
                    {
                        "type": "REFRESH_RESERVE",
                        "value": false
                    },
                    {
                        "type": "RETURN_TO_DELIVERY",
                        "value": true
                    },
                    {
                        "type": "REVERT_RETURNS",
                        "value": false
                    },
                    {
                        "type": "DELIVER_SELF_PICKUP",
                        "value": false
                    },
                    {
                        "type": "DELIVER_COURIER",
                        "value": false
                    },
                    {
                        "type": "ACCEPT_RETURN",
                        "value": false
                    }
                ],
                "fieldPermissions": [
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "ITEMS_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "PAYMENT_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "IS_PAID_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "RECEIVER_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "DELIVERY_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "WAREHOUSE_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "COMMENTS_EDITABLE",
                        "value": false
                    },
                    {
                        "type": "OPERATOR_COMMENTS_EDITABLE",
                        "value": true
                    }
                ],
                "infoStatus": "ORDER_INFO_DELIVERED"
            },
            "plannedTakeOutDate": "2022-06-01 09:00:00",
            "readyForFFExport": true,
            "shortUrl": "http://r.kak2c.ru/h5llc00",
            "status": "ORDER_INFO_DELIVERED",
            "summaryItemAmountState": {
                "amountDELIVERED": 1,
                "amountLOST": 0,
                "amountORDERED": 1,
                "amountPACKED": 1,
                "amountRESERVED": 1,
                "amountRETURNED": 0,
                "amountRETURNED_AS_CLAIMS": 0,
                "amountRETURNED_DEFECTIVE": 0,
                "amountRETURNED_TO_CLIENT": 0,
                "amountSHIPPED": 1
            },
            "totalOrderSum": 5486.00,
            "updateTs": "2022-05-31 13:13:34.341",
            "warehouseCode": "2b0cde46-043f-cdc9-e2e4-aed4ff5a7d4f",
            "warehouseFFExportError": false,
            "warehouseFFExported": false,
            "warehouseFFSync": false,
            "warehouseName": "BR_K",
            "warehouseShippingOptions": {}
        }
    ],
    "recordsTotal": 2,
    "success": true
}
```

# /api/lite/orders/shipped/report/no/delivery/statuses

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

/api/lite/orders/shipped/report/no/delivery/statuses

Возвращает список заказов, по которым с указанной в запросе даты была отгрузка но не было значимых статусов доставки более 24 часов (= заказ похоже не доехал до СЦ КС и проблемный)

Для выполнения запроса необходимо задать параметры:

date\_from - дата отгрузки заказов

  
Можно так же задать не обязательные параметры size(не больше 500) - порция получаемых данных, и page - страница. По умолчанию size= 20 и page=0.

Ответ - в формате стандартного списка заказов /api/lite/orders

Пример полного запроса

GET https://app.kak2c.ru/api/lite/orders/shipped/report/no/delivery/statuses?date\_from=2020-01-01T00:00:00

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

```JSON
{
    "orders": [
        {
            "c": "a0737972-c6bb-0759-35df-afd6bc2e6400",
            "codPayments": [
                {
                    "date": "2022-05-30 14:03:44",
                    "executionTime": "2022-05-30 14:30:00",
                    "paymentDocumentId": "BR0237-1",
                    "sum": 8857.00
                }
            ],
            "comment": "",
            "confirmStatus": "APPROVED",
            "createTs": "2022-05-30 14:04:18.900",
            "crossdockEditable": false,
            "currency": "RUB",
            "customerPaymentInProcess": false,
            "date": "2022-05-30 14:03:44",
            "delivery": {
                "address": {
                    "city": "Москва",
                    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "country": "Россия",
                    "countryCode": "RU",
                    "fullAddress": "Москва",
                    "rawData": "Москва",
                    "region": "Москва",
                    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "zip": "143582"
                },
                "code": "77e87a14-4e96-2ccb-3beb-4b1b33e466c8",
                "deliveryCode": "0ed6b628-288d-11e9-8989-002590923634",
                "deliveryComment": "",
                "desiredDeliveryDate": "2022-05-31",
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "18:00",
                "isDeliverySumLimitActive": false,
                "logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_pickpoint_left.svg",
                "pickupPointId": "5001-152",
                "pvzComment": "ПВЗ PickPoint, Код пункта выдачи: 5001-152, Адрес пункта выдачи: Невская ул., д. 704, График работы: Пн-Вс 10:00-22:00, Описание пункта выдачи: Постамат расположен в ТЦ Княжий двор. Перед ТЦ развязка общественного транспорта, остановка Памятник. От ж/д станции Нахабино - Транспорт: Автобус №20, 21. От метро Щукинская - Транспорт: Маршрутное такси №480\nВойти в ТЦ через центральный вход, подняться по лестнице на 2 этаж, повернуть направо, пройти прямо. С левой стороны вдоль стены расположен постамат.",
                "pvzInfo": {
                    "address": {
                        "city": "Москва",
                        "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Невская ул., д. 704",
                        "region": "Москва",
                        "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "zip": "143582"
                    },
                    "code": "5001-152",
                    "courier": "PickPoint",
                    "courierCode": "PICKPOINT",
                    "courierPostamatType": "АПТ",
                    "deliveryServices": [
                        "DAY_OFF_DELIVERY",
                        "CONTACTLESS_DELIVERY",
                        "TEMPERATURE_REGIME",
                        "TRYING",
                        "CHECK_CONTENT",
                        "DANGEROUS_CARGO",
                        "PARTIAL_DELIVERY",
                        "PERSONALLY_IN_HANDS",
                        "REVERSE"
                    ],
                    "description": "Постамат расположен в ТЦ Княжий двор. Перед ТЦ развязка общественного транспорта, остановка Памятник. От ж/д станции Нахабино - Транспорт: Автобус №20, 21. От метро Щукинская - Транспорт: Маршрутное такси №480\nВойти в ТЦ через центральный вход, подняться по лестнице на 2 этаж, повернуть направо, пройти прямо. С левой стороны вдоль стены расположен постамат.",
                    "latitude": "55.812358",
                    "longitude": "37.04213",
                    "maxSize": "64x40.5x35.8",
                    "maxWeight": 15,
                    "metroStation": "метро Щукинская",
                    "paymentMethods": [
                        "COD_CASH",
                        "COD_CARD"
                    ],
                    "type": "Postamat",
                    "workTime": "Пн-Вс 10:00-22:00"
                },
                "receiver": {
                    "address": {
                        "city": "Москва",
                        "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Москва",
                        "rawData": "Москва",
                        "region": "Москва",
                        "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                        "zip": "143582"
                    },
                    "alternativePhone": "",
                    "email": "mer@mer.mer",
                    "fullName": "Цу Йцу",
                    "name": "цу йцу",
                    "passport": {},
                    "personType": "CUSTOMER",
                    "phone": "74563464645",
                    "rawPhone": "74563464645"
                },
                "title": "PickPoint",
                "trackingNumber": "test333",
                "type": "PVZ"
            },
            "expenses": [],
            "externalId": "BR0237",
            "files": [],
            "id": "BR0237",
            "insuranceSum": 8857.00,
            "insuranceSumAutoCalculation": false,
            "isMarketplaceOrder": false,
            "items": [
                {
                    "barcode": "4211125637101",
                    "itemAmountState": {
                        "amountDELIVERED": 1,
                        "amountLOST": 0,
                        "amountORDERED": 1,
                        "amountPACKED": 1,
                        "amountRESERVED": 1,
                        "amountRETURNED": 0,
                        "amountRETURNED_AS_CLAIMS": 0,
                        "amountRETURNED_DEFECTIVE": 0,
                        "amountRETURNED_TO_CLIENT": 0,
                        "amountSHIPPED": 1
                    },
                    "itemDimensions": {
                        "depth": 26,
                        "height": 50,
                        "width": 42
                    },
                    "itemWeight": 5580,
                    "name": "Гидромассажная ванночка для ног Beurer FB50 белый",
                    "num": 1,
                    "price": 8000.00,
                    "productId": "1059034",
                    "productVariantCount": 1,
                    "quantity": 1,
                    "quantityAvailable": 0,
                    "skuType": "SKU",
                    "variantId": "1059034",
                    "vatRate": "VAT_20"
                },
                {
                    "barcode": "",
                    "name": "Доставка",
                    "num": 2,
                    "price": 857.00,
                    "quantity": 1,
                    "skuType": "SERVICE",
                    "variantId": "delivery",
                    "vatRate": "NO_VAT"
                }
            ],
            "legalEntity": {
                "id": "fa0d6c85-6e62-51fa-346e-e5433c92b2d8",
                "name": " Розничный покупатель",
                "type": "PERSON"
            },
            "manualDiscount": {
                "appliedDiscountValue": 0,
                "discountType": "FIX",
                "discountValue": 0,
                "isActive": false
            },
            "needCustomerPayment": false,
            "needReserve": true,
            "onlinePaymentSum": 8857.00,
            "operatorComment": "-",
            "orderType": "STANDARD",
            "packingOptions": [],
            "packings": [
                {
                    "barcode": "202749272704",
                    "files": [],
                    "items": [
                        {
                            "accountingAttributes": [],
                            "barcode": "4211125637101",
                            "itemDimensions": {
                                "depth": 26,
                                "height": 50,
                                "width": 42
                            },
                            "itemWeight": 5580,
                            "name": "Гидромассажная ванночка для ног Beurer FB50 белый",
                            "num": 1,
                            "price": 8000.00,
                            "productId": "1059034",
                            "productVariantCount": 1,
                            "quantity": 1,
                            "skuType": "SKU",
                            "variantId": "1059034",
                            "vatRate": "VAT_20"
                        }
                    ],
                    "measurements": {
                        "dimensions": {
                            "depth": 12,
                            "height": 12,
                            "width": 12
                        },
                        "success": true,
                        "weight": 5580
                    }
                }
            ],
            "paymentMethodCode": "cod-card",
            "paymentMethodName": "Оплата картой при получении",
            "paymentMethodType": "COD_CARD",
            "paymentStatus": "NOT_PAID",
            "permissionList": {
                "actionPermissions": [
                    {
                        "type": "CANCEL",
                        "value": false
                    },
                    {
                        "type": "CONFIRM",
                        "value": false
                    },
                    {
                        "type": "NEED_CONFIRM",
                        "value": false
                    },
                    {
                        "type": "PACK",
                        "value": false
                    },
                    {
                        "type": "COPY",
                        "value": true
                    },
                    {
                        "type": "PACK_CONTROL",
                        "value": false
                    },
                    {
                        "type": "UNPACK",
                        "value": false
                    },
                    {
                        "type": "SHIPPING",
                        "value": false
                    },
                    {
                        "type": "UNSHIPPING",
                        "value": false
                    },
                    {
                        "type": "REFRESH_RESERVE",
                        "value": false
                    },
                    {
                        "type": "RETURN_TO_DELIVERY",
                        "value": true
                    },
                    {
                        "type": "REVERT_RETURNS",
                        "value": false
                    },
                    {
                        "type": "DELIVER_SELF_PICKUP",
                        "value": false
                    },
                    {
                        "type": "DELIVER_COURIER",
                        "value": false
                    },
                    {
                        "type": "ACCEPT_RETURN",
                        "value": false
                    }
                ],
                "fieldPermissions": [
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "ITEMS_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "PAYMENT_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "IS_PAID_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "RECEIVER_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "DELIVERY_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "WAREHOUSE_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "COMMENTS_EDITABLE",
                        "value": false
                    },
                    {
                        "type": "OPERATOR_COMMENTS_EDITABLE",
                        "value": true
                    }
                ],
                "infoStatus": "ORDER_INFO_DELIVERED"
            },
            "plannedTakeOutDate": "2022-05-31 09:00:00",
            "readyForFFExport": true,
            "shortUrl": "http://r.kak2c.ru/yr99em9",
            "status": "ORDER_INFO_DELIVERED",
            "summaryItemAmountState": {
                "amountDELIVERED": 1,
                "amountLOST": 0,
                "amountORDERED": 1,
                "amountPACKED": 1,
                "amountRESERVED": 1,
                "amountRETURNED": 0,
                "amountRETURNED_AS_CLAIMS": 0,
                "amountRETURNED_DEFECTIVE": 0,
                "amountRETURNED_TO_CLIENT": 0,
                "amountSHIPPED": 1
            },
            "totalOrderSum": 8857.00,
            "updateTs": "2022-05-30 14:29:35.964",
            "warehouseCode": "2b0cde46-043f-cdc9-e2e4-aed4ff5a7d4f",
            "warehouseFFExportError": false,
            "warehouseFFExported": false,
            "warehouseFFSync": false,
            "warehouseName": "BR_K",
            "warehouseShippingOptions": {}
        },
        {
            "c": "451dd9fc-9347-e7e4-c51d-e7842d870e40",
            "codPayments": [
                {
                    "date": "2022-05-31 12:22:16",
                    "executionTime": "2022-05-31 13:15:00",
                    "paymentDocumentId": "BR0255-1",
                    "sum": 5486.00
                }
            ],
            "comment": "",
            "confirmStatus": "APPROVED",
            "createTs": "2022-05-31 12:22:16.171",
            "crossdockEditable": false,
            "currency": "RUB",
            "customerPaymentInProcess": false,
            "date": "2022-05-31 12:21:38",
            "delivery": {
                "address": {
                    "city": "Краснодар",
                    "cityFias": "7dfa745e-aa19-4688-b121-b655c11e482f",
                    "country": "Россия",
                    "countryCode": "RU",
                    "fullAddress": "Краснодарский, Краснодар",
                    "rawData": "Краснодарский, Краснодар",
                    "region": "Краснодарский",
                    "regionFias": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8",
                    "zip": "350016"
                },
                "code": "77e87a14-4e96-2ccb-3beb-4b1b33e466c8",
                "deliveryCode": "0ed6b628-288d-11e9-8989-002590923634",
                "deliveryComment": "",
                "desiredDeliveryDate": "2022-06-02",
                "desiredDeliveryTimeFrom": "09:00",
                "desiredDeliveryTimeTo": "18:00",
                "isDeliverySumLimitActive": false,
                "logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_pickpoint_left.svg",
                "pickupPointId": "2302-060",
                "pvzComment": "ПВЗ PickPoint, Код пункта выдачи: 2302-060, Адрес пункта выдачи: Карякина ул, д.25, График работы: Пн-Пт 10:00-20:00, Сб 10:00-17:00, Описание пункта выдачи: Пункт выдачи заказов расположен в отдельно стоящем здании. Транспорт: Автобус №36, 58, 96. Маршрутное такси №48, 56, 85. Остановка Черкасская ул.\nВойти через отдельный вход справа, на цокольном этаже расположен пункт выдачи",
                "pvzInfo": {
                    "address": {
                        "city": "Краснодар",
                        "cityFias": "7dfa745e-aa19-4688-b121-b655c11e482f",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Карякина ул, д.25",
                        "region": "Краснодарский",
                        "regionFias": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8",
                        "zip": "350016"
                    },
                    "code": "2302-060",
                    "courier": "PickPoint",
                    "courierCode": "PICKPOINT",
                    "courierPostamatType": "ПВЗ",
                    "deliveryServices": [
                        "TRYING",
                        "DANGEROUS_CARGO",
                        "PARTIAL_DELIVERY",
                        "PERSONALLY_IN_HANDS",
                        "REVERSE",
                        "CHECK_CONTENT",
                        "DAY_OFF_DELIVERY",
                        "CONTACTLESS_DELIVERY",
                        "TEMPERATURE_REGIME"
                    ],
                    "description": "Пункт выдачи заказов расположен в отдельно стоящем здании. Транспорт: Автобус №36, 58, 96. Маршрутное такси №48, 56, 85. Остановка Черкасская ул.\nВойти через отдельный вход справа, на цокольном этаже расположен пункт выдачи",
                    "latitude": "45.065947",
                    "longitude": "39.010823",
                    "maxSize": "180",
                    "maxWeight": 15,
                    "metroStation": "",
                    "paymentMethods": [
                        "COD_CASH",
                        "COD_CARD"
                    ],
                    "type": "PVZ",
                    "workTime": "Пн-Пт 10:00-20:00, Сб 10:00-17:00"
                },
                "receiver": {
                    "address": {
                        "city": "Краснодар",
                        "cityFias": "7dfa745e-aa19-4688-b121-b655c11e482f",
                        "country": "Россия",
                        "countryCode": "RU",
                        "fullAddress": "Краснодарский, Краснодар",
                        "rawData": "Краснодарский, Краснодар",
                        "region": "Краснодарский",
                        "regionFias": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8",
                        "zip": "350016"
                    },
                    "alternativePhone": "",
                    "email": "mer@mer.mer",
                    "fullName": "Цу Йцу",
                    "name": "цу йцу",
                    "passport": {},
                    "personType": "CUSTOMER",
                    "phone": "74563464645",
                    "rawPhone": "74563464645"
                },
                "title": "PickPoint",
                "trackingNumber": "222",
                "type": "PVZ"
            },
            "expenses": [],
            "externalId": "BR0255",
            "files": [],
            "id": "BR0255",
            "insuranceSum": 548.60,
            "insuranceSumAutoCalculation": false,
            "isMarketplaceOrder": false,
            "items": [
                {
                    "barcode": "4211125570354",
                    "itemAmountState": {
                        "amountDELIVERED": 1,
                        "amountLOST": 0,
                        "amountORDERED": 1,
                        "amountPACKED": 1,
                        "amountRESERVED": 1,
                        "amountRETURNED": 0,
                        "amountRETURNED_AS_CLAIMS": 0,
                        "amountRETURNED_DEFECTIVE": 0,
                        "amountRETURNED_TO_CLIENT": 0,
                        "amountSHIPPED": 1
                    },
                    "itemDimensions": {
                        "depth": 17,
                        "height": 7,
                        "width": 23
                    },
                    "itemWeight": 167,
                    "name": "Маникюрно-педикюрный набор Beurer MP62 белый",
                    "num": 1,
                    "price": 5000.00,
                    "productId": "1047872",
                    "productVariantCount": 1,
                    "quantity": 1,
                    "quantityAvailable": 0,
                    "skuType": "SKU",
                    "variantId": "1047872",
                    "vatRate": "VAT_20"
                },
                {
                    "barcode": "",
                    "name": "Доставка",
                    "num": 2,
                    "price": 486.00,
                    "quantity": 1,
                    "skuType": "SERVICE",
                    "variantId": "delivery",
                    "vatRate": "NO_VAT"
                }
            ],
            "legalEntity": {
                "id": "fa0d6c85-6e62-51fa-346e-e5433c92b2d8",
                "name": " Розничный покупатель",
                "type": "PERSON"
            },
            "manualDiscount": {
                "appliedDiscountValue": 0,
                "discountType": "FIX",
                "discountValue": 0,
                "isActive": false
            },
            "needCustomerPayment": false,
            "needReserve": true,
            "onlinePaymentSum": 5486.00,
            "operatorComment": "",
            "orderType": "STANDARD",
            "packingOptions": [],
            "packings": [
                {
                    "barcode": "202749561679",
                    "files": [],
                    "items": [
                        {
                            "accountingAttributes": [],
                            "barcode": "4211125570354",
                            "itemDimensions": {
                                "depth": 17,
                                "height": 7,
                                "width": 23
                            },
                            "itemWeight": 167,
                            "name": "Маникюрно-педикюрный набор Beurer MP62 белый",
                            "num": 1,
                            "price": 5000.00,
                            "productId": "1047872",
                            "productVariantCount": 1,
                            "quantity": 1,
                            "skuType": "SKU",
                            "variantId": "1047872",
                            "vatRate": "VAT_20"
                        }
                    ],
                    "measurements": {
                        "dimensions": {
                            "depth": 12,
                            "height": 12,
                            "width": 12
                        },
                        "success": true,
                        "weight": 1000
                    }
                }
            ],
            "paymentMethodCode": "cod-card",
            "paymentMethodName": "Оплата картой при получении",
            "paymentMethodType": "COD_CARD",
            "paymentStatus": "NOT_PAID",
            "permissionList": {
                "actionPermissions": [
                    {
                        "type": "CANCEL",
                        "value": false
                    },
                    {
                        "type": "CONFIRM",
                        "value": false
                    },
                    {
                        "type": "NEED_CONFIRM",
                        "value": false
                    },
                    {
                        "type": "PACK",
                        "value": false
                    },
                    {
                        "type": "COPY",
                        "value": true
                    },
                    {
                        "type": "PACK_CONTROL",
                        "value": false
                    },
                    {
                        "type": "UNPACK",
                        "value": false
                    },
                    {
                        "type": "SHIPPING",
                        "value": false
                    },
                    {
                        "type": "UNSHIPPING",
                        "value": false
                    },
                    {
                        "type": "REFRESH_RESERVE",
                        "value": false
                    },
                    {
                        "type": "RETURN_TO_DELIVERY",
                        "value": true
                    },
                    {
                        "type": "REVERT_RETURNS",
                        "value": false
                    },
                    {
                        "type": "DELIVER_SELF_PICKUP",
                        "value": false
                    },
                    {
                        "type": "DELIVER_COURIER",
                        "value": false
                    },
                    {
                        "type": "ACCEPT_RETURN",
                        "value": false
                    }
                ],
                "fieldPermissions": [
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "ITEMS_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "PAYMENT_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "IS_PAID_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "RECEIVER_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "DELIVERY_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "WAREHOUSE_EDITABLE",
                        "value": false
                    },
                    {
                        "reason": "Склад уже отгрузил заказ. Изменение заказа невозможно.",
                        "type": "COMMENTS_EDITABLE",
                        "value": false
                    },
                    {
                        "type": "OPERATOR_COMMENTS_EDITABLE",
                        "value": true
                    }
                ],
                "infoStatus": "ORDER_INFO_DELIVERED"
            },
            "plannedTakeOutDate": "2022-06-01 09:00:00",
            "readyForFFExport": true,
            "shortUrl": "http://r.kak2c.ru/h5llc00",
            "status": "ORDER_INFO_DELIVERED",
            "summaryItemAmountState": {
                "amountDELIVERED": 1,
                "amountLOST": 0,
                "amountORDERED": 1,
                "amountPACKED": 1,
                "amountRESERVED": 1,
                "amountRETURNED": 0,
                "amountRETURNED_AS_CLAIMS": 0,
                "amountRETURNED_DEFECTIVE": 0,
                "amountRETURNED_TO_CLIENT": 0,
                "amountSHIPPED": 1
            },
            "totalOrderSum": 5486.00,
            "updateTs": "2022-05-31 13:13:34.341",
            "warehouseCode": "2b0cde46-043f-cdc9-e2e4-aed4ff5a7d4f",
            "warehouseFFExportError": false,
            "warehouseFFExported": false,
            "warehouseFFSync": false,
            "warehouseName": "BR_K",
            "warehouseShippingOptions": {}
        }
    ],
    "recordsTotal": 2,
    "success": true
}
```

# /api/lite/orders/discounts

### Добавить скидку для заказа

/api/lite/orders/discounts

Позволяет добавить промокод или фиксированную скидку ко всему заказу в процентах или сумме

<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="height: 346px;" width="397"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 29px;"><td style="width: 132.05px; height: 29px;">**Поле**</td><td style="width: 132.05px; height: 29px;">**Тип / формат**</td><td style="width: 132.1px; height: 29px;">**Описание**</td></tr><tr role="row" style="height: 46px;"><td class="confluenceTd" style="width: 132.05px; height: 46px;">id</td><td class="confluenceTd" style="width: 132.05px; height: 46px;">string</td><td class="confluenceTd" style="width: 132.1px; height: 46px;">Идентификатор заказа</td></tr><tr role="row" style="height: 46px;"><td class="confluenceTd" style="width: 132.05px; height: 46px;">`promocode`</td><td class="confluenceTd" style="width: 132.05px; height: 46px;">string</td><td class="confluenceTd" style="width: 132.1px; height: 46px;">Промокод</td></tr><tr style="height: 46px;"><td class="align-left" style="width: 132.05px; height: 46px;"> **`manualDiscount`**</td><td style="width: 132.05px; height: 46px;">**object**</td><td style="width: 132.1px; height: 46px;">**Объект, описывающий скидку**</td></tr><tr style="height: 29px;"><td style="width: 132.05px; height: 29px;"> `isActive`</td><td style="width: 132.05px; height: 29px;">boolean</td><td style="width: 132.1px; height: 29px;">Флаг активности промокода</td></tr><tr style="height: 46px;"><td class="align-left" rowspan="3" style="width: 132.05px; height: 121px;">`discountType`</td><td style="width: 132.05px; height: 46px;">enum</td><td style="width: 132.1px; height: 46px;">Тип скидки</td></tr><tr style="height: 46px;"><td style="width: 132.05px; height: 46px;">FIX</td><td style="width: 132.1px; height: 46px;">Фиксированная</td></tr><tr style="height: 29px;"><td style="width: 132.05px; height: 29px;">PERCENT</td><td style="width: 132.1px; height: 29px;">в процентах</td></tr><tr style="height: 29px;"><td class="align-left" style="width: 132.05px; height: 29px;"> `discountValue`</td><td style="width: 132.05px; height: 29px;">double</td><td style="width: 132.1px; height: 29px;">Сумма скидки или процент</td></tr></tbody></table>

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

```JSON
{
    "id": "2502-124471",
    "promocode": "",
    "manualDiscount": {
        "isActive": true,
        "discountType": "FIX",
        "discountValue": "1000"
    }
}
```

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

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

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

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

# /api/lite/orders/upload_fbm_docs_ff

### Заказ - FBO. Подтверждение загрузки документов

/api/lite/orders/upload\_fbm\_docs\_ff

Подтверждение загрузки документов перемаркировки FBO.

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

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

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

#### **успех:**

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

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

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

# api/lite/export/order

## Инструкция по получению экспорта товаров в заказе

### 1. Назначение метода

Метод предназначен для получения файла экспорта товаров по конкретному заказу.  
В результате выполнения запроса возвращается ссылка на сформированный файл (например, `.xls`) и информация о результате операции.

---

### 2. Endpoint

**URL:**

```
GET https://app.kak2c.ru/api/lite/export/order/now

```

---

### 3. Метод запроса

```
GET

```

---

### 4. Параметры запроса

<table id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5"><thead><tr><th>Параметр</th><th>Тип</th><th>Обязательный</th><th>Описание</th></tr></thead><tbody><tr><td>`id`</td><td>string</td><td>Да</td><td>Идентификатор заказа</td></tr></tbody></table>

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

```
GET https://app.kak2c.ru/api/lite/export/order/now?id=4466-34568645

```

---

### 5. Пример ответа

```json
{
    "exportResults": [
        {
            "fileID": "export_order_5669-323434395",
            "fileUrl": "https://storage.yandexcloud.net/items-export-kak2c/export_orders_test@new-wms.ru_27.02.2026_09-00-31.xls",
            "rowsTotal": 1,
            "success": true
        }
    ],
    "recordsTotal": 1,
    "success": true
}

```

https://storage.yandexcloud.net/items-export-kak2c/export\_orders\_test@new-wms.ru\_27.02.2026\_11-22-49.xls

---

### 6. Описание полей ответа

#### Корневой объект

<table id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-ex"><thead><tr><th>Поле</th><th>Тип</th><th>Описание</th></tr></thead><tbody><tr><td>`exportResults`</td><td>array</td><td>Массив результатов экспорта</td></tr><tr><td>`recordsTotal`</td><td>integer</td><td>Общее количество сформированных экспортов</td></tr><tr><td>`success`</td><td>boolean</td><td>Статус выполнения запроса</td></tr></tbody></table>

---

#### Объект `exportResults`

<table id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-fi"><thead><tr><th>Поле</th><th>Тип</th><th>Описание</th></tr></thead><tbody><tr><td>`fileID`</td><td>string</td><td>Уникальный идентификатор файла экспорта</td></tr><tr><td>`fileUrl`</td><td>string</td><td>Прямая ссылка на скачивание файла</td></tr><tr><td>`rowsTotal`</td><td>integer</td><td>Количество строк (товаров) в экспортированном файле</td></tr><tr><td>`success`</td><td>boolean</td><td>Статус формирования конкретного файла</td></tr></tbody></table>

---

### 7. Логика работы

1. Клиент отправляет GET-запрос с параметром `id`.
2. Система формирует экспорт товаров по указанному заказу.
3. В случае успешного формирования:
    
    
    - возвращается `success: true`
    - в `fileUrl` передаётся ссылка на файл
4. Клиент может скачать файл по полученной ссылке.

---

### 8. Возможные сценарии

#### Успешный экспорт

- `success: true`
- `exportResults[0].success: true`
- `fileUrl` содержит корректную ссылку

#### Ошибка формирования

- `success: false`
- либо `exportResults[0].success: false`
- ссылка на файл отсутствует или невалидна

---

### 9. Особенности

- Экспорт формируется в момент выполнения запроса (`/now`).
- Формат файла — `.xls`.
- Ссылка `fileUrl` ведёт на внешний файловый storage.

# Поставка на склад (Заказы поставщику)

# /api/lite/purchase_orders

### Запрос списка поставок на склад (заказов поставщиков)

/api/lite/purchase\_orders

Метод возвращает список заказов с заданной фильтрацией.

Можно использовать как для получения списка, так и единичного заказа.

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

Для фильтрации есть следующие возможности:

- id - по номеру заказа
- filter\_states - по статусам заказов (можно указывать несколько через зяпятую)
- filter\_external\_id, filter\_external\_id\_2, filter\_external\_id\_3, filter\_external\_id\_4, filter\_external\_id\_5 - по внешним идентификаторам
- date\_from - по дате заказа, от. формат: <span style="color: #505050;">2020-02-19T12:35:31</span>
- date\_to - по дате заказа, до
- <span style="color: #505050;">updated\_from - по дате/времени изменения. </span>формат: <span style="color: #505050;">2020-02-19T12:35:31. Не суммируется с другими параметрами фильтрации</span>
- supllier\_id - по id поставщика
- consignor\_id - по id грузоотправителя
- date\_of\_accept\_from - по фактической дате приемки, от. формат <span style="color: #505050;">2020-02-19T12:35:31</span>
- date\_of\_accept\_to - по фактической дате приемки, до. формат <span style="color: #505050;">2020-02-19T12:35:31</span>
- arrival\_date\_from - по фактической дате прибытия поставки на склад, от. формат <span style="color: #505050;">2020-02-19T12:35:31</span>
- arrival\_date\_to - по фактической дате прибытия поставки на склад, до. формат <span style="color: #505050;">2020-02-19T12:35:31</span>
- statuses - список статусов поставки через запятую

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

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

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

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

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

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

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

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

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

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

- **date** (дата заказа)
- **id** (номер заказа)

По умолчанию используется сортировка по дате заказа по убыванию.

Полный комплект данных по заказам будет передан только если в запросе будет параметр full\_info=true

Точечное описание некоторых полей, которые возвращает запрос по поставкам

<table border="1" id="bkmrk-purchasearrivaldate-" style="border-collapse: collapse; width: 100%; height: 290px;"><tbody><tr style="height: 29px;"><td style="width: 50%; height: 29px;">purchaseArrivalDate формат 2021-04-02 15:50:48.032</td><td style="width: 50%; height: 29px;">фактическая дата прихода поставки на склад</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">finishlDate формат 2021-04-02 15:50:48.032 </td><td style="width: 50%; height: 29px;">фактическая дата закрытия поставки</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">date формат 2021-04-02 15:50:48.032 </td><td style="width: 50%; height: 29px;">дата создания поставки в лк Кактус</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">status</td><td style="width: 50%; height: 29px;">статус поставки</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">supplier</td><td style="width: 50%; height: 29px;">объект, содержит информацию о поставщике</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">consignor</td><td style="width: 50%; height: 29px;">объект, содержит информацию о грузоотправителе</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">files</td><td style="width: 50%; height: 29px;">список объектов, содержит информацию о файлах в поставке</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">warehouseName </td><td style="width: 50%; height: 29px;">название склада</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">warehouseCode</td><td style="width: 50%; height: 29px;">код склада</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">comment</td><td style="width: 50%; height: 29px;">комментарий к поставке</td></tr></tbody></table>

####  

##### Пример запроса по одному заказу и полными данными:

**<span style="color: #999999;">GET api/lite/purchase\_orders?id=1001&amp;full\_info=true</span>**

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

```JSON
{
    "purchaseOrders": [
        {
            "confirmStatus": "APPROVED",
            "currency": "RUB",
            "date": "2025-11-24 12:28:52",
            "factItems": [
                {
                    "article": "dvn",
                    "barcode": "127351263",
                    "batchAccountingAttributes": {
                        "batchAccountingNumber": "1-4",
                        "expirationDate": "2025-10-01",
                        "productionDate": "2022-10-02",
                        "useBatchAccounting": true,
                        "useExpiration": true
                    },
                    "factBatchAccountingAttributes": [
                        {
                            "batchAccountingNumber": "1-4",
                            "expirationDate": "2025-10-01",
                            "productionDate": "2022-10-02",
                            "useBatchAccounting": true,
                            "useExpiration": true
                        }
                    ],
                    "name": "Маска для волос Davines",
                    "num": 1,
                    "productId": "1256636009",
                    "quantity": 0,
                    "quantityDefective": 0,
                    "quantityFact": 20,
                    "quantityRaw": 20,
                    "skuType": "SKU",
                    "sum": 0,
                    "variantId": "566335809"
                }
            ],
            "files": [
                {
                    "fileExt": "pdf",
                    "fileName": "mx1.pdf",
                    "fileSource": "FULFILLMENT",
                    "fileType": "PDF",
                    "id": "e65bdeb6-a966-d0fd-3765-441334a536d9",
                    "success": true,
                    "url": "https://storage.yandexcloud.net/cactuswms/3b808083-7b6c-43ae-aa3e-48f5c161240d.pdf"
                },
                {
                    "fileExt": "pdf",
                    "fileName": "torg2.pdf",
                    "fileSource": "FULFILLMENT",
                    "fileType": "PDF",
                    "id": "19f46185-8fe7-f352-660e-b65aae210ad6",
                    "success": true,
                    "url": "https://storage.yandexcloud.net/cactuswms/c04781b1-4127-4a33-905f-5efe98d816f3.pdf"
                }
            ],
            "finishDate": "2025-11-24 12:31:54",
            "hasLinkedOrders": false,
            "id": "1006896419",
            "isTakeInDiff": true,
            "items": [
                {
                    "article": "dvn",
                    "barcode": "127351263",
                    "batchAccountingAttributes": {
                        "batchAccountingNumber": "1-4",
                        "expirationDate": "2025-10-01",
                        "productionDate": "2022-10-02",
                        "useBatchAccounting": true,
                        "useExpiration": true
                    },
                    "factBatchAccountingAttributes": [
                        {
                            "batchAccountingNumber": "1-4",
                            "expirationDate": "2025-10-01",
                            "productionDate": "2022-10-02",
                            "useBatchAccounting": true,
                            "useExpiration": true
                        }
                    ],
                    "name": "Маска для волос Davines",
                    "num": 1,
                    "productId": "1256636009",
                    "quantity": 0,
                    "quantityDefective": 0,
                    "quantityFact": 20,
                    "quantityRaw": 20,
                    "skuType": "SKU",
                    "sum": 0,
                    "variantId": "566335809",
                    "tag": "ROZNECHNIE_SETY"
                }
            ],
            "planItems": [
                {
                    "article": "dvn",
                    "barcode": "876543",
                    "factBatchAccountingAttributes": [],
                    "multiplicity": 10,
                    "name": "Маска для волос Davines (Квант 10 шт)",
                    "num": 1,
                    "optionsUsed": [],
                    "price": 2000.00,
                    "productId": "1256636009",
                    "quantity": 20,
                    "quantityDefective": 0,
                    "quantityFact": 0,
                    "quantityRaw": 0,
                    "skuType": "SKU",
                    "sum": 400000.00,
                    "variantId": "566335810",
                    "vatRate": "NO_VAT",
                    "tag": "ROZNECHNIE_SETY"
                }
            ],
            "purchaseArrivalDate": "2025-11-24 12:29:50",
            "status": "COMPLETED_WITH_DIFFERENCE",
            "supplier": {
                "id": "096e2fba-3cf9-2df1-f83c-50f51f1ffef4",
                "name": "Романова Виктория",
                "person": {
                    "address": {
                        "area": "",
                        "block": "",
                        "building": "",
                        "city": "",
                        "country": "Россия",
                        "countryCode": "RU",
                        "flat": "",
                        "house": "",
                        "region": "",
                        "settlement": "",
                        "street": "",
                        "zip": ""
                    },
                    "alternativePhone": "",
                    "fullName": "Романова Виктория",
                    "name": "Виктория",
                    "passport": {},
                    "phone": "79999999999",
                    "surname": "Романова"
                },
                "type": "PERSON"
            },
            "takeInType": "STANDARD",
            "totalFactOrderSum": 0,
            "totalFactQuantity": 20,
            "totalFactVATSum": 0,
            "totalOrderSum": 400000.00,
            "totalQuantity": 200,
            "totalVATSum": 0.00,
            "updateTs": "2025-11-24 12:32:33.610",
            "warehouseCode": "21ad85be-09a9-c4f8-72e1-4976f9d5bda6",
            "warehouseFFExportError": false,
            "warehouseFFExported": true,
            "warehouseFFSync": true,
            "warehouseFFSyncDate": "2025-11-24 12:28:55",
            "warehouseName": "NEW WMS!"
        }
    ],
    "recordsTotal": 1,
    "success": true
}
```

####  

Ниже — **официальное дополнение к текущей инструкции**.  
Текст оформлен так, чтобы его можно было **напрямую вставить** в существующий документ (рекомендуемое место — после раздела *«Точечное описание некоторых полей»* или перед примерами ответов).

---

# Дополнение. Плановые и фактические позиции поставки (planItems, factItems)

В ответе метода  
**GET /api/lite/purchase\_orders**  
(при использовании параметра `full_info=true`) для поставки могут возвращаться дополнительные наборы товарных строк:

- `planItems`
- `factItems`

Данные поля предназначены для разделения **плановых данных клиента** и **фактических данных складской приемки**.

---

## Общая схема данных поставки

Для одной поставки система может возвращать до трёх наборов товарных позиций:

<table id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-planit"><thead><tr><th>Поле</th><th>Описание</th></tr></thead><tbody><tr><td>`planItems`</td><td>План поставки — данные, переданные клиентом</td></tr><tr><td>`factItems`</td><td>Фактическая приемка — данные, зафиксированные складом</td></tr><tr><td>`items`</td><td>Текущее агрегированное состояние поставки</td></tr></tbody></table>

---

## planItems — план поставки

`planItems` содержит **плановые позиции поставки**, сформированные на основании данных, переданных клиентом при создании или редактировании заказа поставщику (`POST /api/lite/purchase_orders`).

### Характеристики planItems

- Формируются **только из данных клиента**
- Не изменяются складом
- Фиксируют исходные плановые количества и цены
- Используются как эталон для сравнения с фактической приемкой
- До начала приемки:
    
    
    - `quantityFact = 0`
    - `quantityRaw = 0`

### Назначение

- Анализ плановых поставок
- Сравнение план / факт
- Выявление расхождений при приемке

### Пример planItems

```json
"planItems": [
  {
    "num": 1,
    "variantId": "566335837",
    "productId": "1256636029",
    "barcode": "25704_1",
    "name": "Плакат 25704",
    "quantity": 2000,
    "price": 5.00,
    "vatRate": "NO_VAT",
    "quantityFact": 0,
    "quantityRaw": 0,
    "quantityDefective": 0,
    "sum": 10000.00,
    "skuType": "PACKING_MATERIAL_OTHER",
    "factBatchAccountingAttributes": [],
    "optionsUsed": [],
    "tag": "ROZNECHNIE_SETY"
  }
]

```

---

## factItems — факт приемки поставки

`factItems` содержит **фактически принятые складом товарные позиции**.

### Характеристики factItems

- Формируются **автоматически складской системой**
- Наполняются **в процессе приемки**, по мере сканирования и учета товара
- Могут отличаться от `planItems` по количеству
- Используются для расчета фактических итогов и расхождений

### Поведение factItems во времени

<table id="bkmrk-%D0%AD%D1%82%D0%B0%D0%BF-%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8-%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F"><thead><tr><th>Этап поставки</th><th>Состояние factItems</th></tr></thead><tbody><tr><td>До начала приемки</td><td>Отсутствуют или пустые</td></tr><tr><td>Приемка в процессе</td><td>Частично заполнены</td></tr><tr><td>Приемка завершена</td><td>Полностью отражают фактически принятый товар</td></tr></tbody></table>

### Пример factItems

```json
"factItems": [
  {
    "num": 1,
    "variantId": "566335837",
    "productId": "1256636029",
    "barcode": "25704_1",
    "name": "Плакат 25704",
    "quantity": 2000,
    "quantityFact": 2000,
    "quantityRaw": 2000,
    "quantityDefective": 0,
    "price": 5.00,
    "vatRate": "NO_VAT",
    "sum": 10000.00,
    "skuType": "PACKING_MATERIAL_OTHER",
    "tag": "ROZNECHNIE_SETY"
  }
]

```

---

## items — текущее состояние поставки

Поле `items` отражает **текущее агрегированное состояние** товарных строк поставки.

### Правила формирования

- До начала приемки — соответствует `planItems`
- В процессе приемки — отражает частично принятые данные
- После завершения приемки — как правило совпадает с `factItems`

### Рекомендации

- Для отображения текущего состояния поставки использовать `items`
- Для анализа и контроля расхождений использовать `planItems` и `factItems`

---

## Связь с статусами поставки

<table id="bkmrk-%D0%A1%D1%82%D0%B0%D1%82%D1%83%D1%81-%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8-plan"><thead><tr><th>Статус поставки</th><th>planItems</th><th>factItems</th></tr></thead><tbody><tr><td>`NEW`</td><td>Есть</td><td>Нет</td></tr><tr><td>`READY_TO_TAKE_IN`</td><td>Есть</td><td>Нет</td></tr><tr><td>`TAKE_IN_PROCESS`</td><td>Есть</td><td>Заполняются</td></tr><tr><td>`COMPLETED`</td><td>Есть</td><td>Есть</td></tr><tr><td>`COMPLETED_WITH_DIFFERENCE`</td><td>Есть</td><td>Есть (есть расхождения)</td></tr><tr><td>`DIFFERENCE`</td><td>Есть</td><td>Есть</td></tr><tr><td>`CANCELED`</td><td>Есть</td><td>Нет</td></tr></tbody></table>

#### **Пример запроса по списку поставок:**

<span style="color: #999999;">**GET /api/lite/purchase\_orders**</span>

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

```JSON
{
  "success": true,
  "recordsTotal": 2,
  "purchaseOrders": [
    {
      "id": "1001",
      "externalId": "extId",
      "externalId2": "extId2",
      "externalId3": "extId3",
      "externalId4": "extId4",
      "externalId5": "extId5",
      "date": "2021-04-02 15:50:41",
      "updateTs": "2021-04-02 15:50:48.032",
      "status": "COMPLETED",
      "totalOrderSum": 0,
      "comment": "",
      "totalQuantity": 100,
      "supplier": {
        "id": "da1686cf-0551-db1d-57b9-c04120309fae",
        "type": "PERSON",
        "role": null,
        "name": "Розничный покупатель",
        "organization": null,
        "person": {
          "name": "",
          "surname": "",
          "patronymic": "",
          "fullName": "Розничный Покупатель",
          "phone": "",
          "rawPhone": null,
          "alternativePhone": "",
          "email": null,
          "post": null,
          "personType": null,
          "address": {
            "country": null,
            "countryCode": null,
            "region": null,
            "area": null,
            "city": null,
            "settlement": null,
            "street": null,
            "house": null,
            "block": null,
            "building": null,
            "flat": null,
            "fullAddress": null,
            "fullCity": null,
            "rawData": null,
            "zip": null,
            "regionFias": null,
            "areaFias": null,
            "cityFias": null,
            "settlementFias": null
          }
        }
      },
      "items": [
        {
          "num": 1,
          "variantId": "1001",
          "productId": "1001",
          "name": "товар тест 3",
          "quantity": 100,
          "quantityFact": 100,
          "quantityRaw": 100,
          "quantityDefective": 0,
          "vatRate": "NO_VAT",
          "price": 0,
          "img": "https://storage.yandexcloud.net/images-k2c/05d7a992-1c61-4f39-87c6-1401405055e2.jpg",
          "skuType": "SKU",
          "barcode": "",
          "orderDocId": "5703-1013",
          "tag": "ROZNECHNIE_SETY"
        }
      ],
      "files": [
                {
                    "id": "43f79bac-0d82-2d82-f11d-abd1a53b26a0",
                    "fileType": "PDF",
                  	"fileSource": "FULFILLMENT", //ESHOP | USER
                    "fileName": "МХ1",
                    "fileExt": "pdf",
                    "url": "https://yadi.sk/d/BzKXkRigQZtVnB",
                    "printWhenPacking": true,
                    "copiesQty": 1
                }
           	 ],
      "warehouseName": "Свой склад",
      "warehouseCode": "373b1e28-a6d7-545f-9303-65af3a652d48",
      "confirmStatus": "APPROVED",
      "warehouseFFExported": false,
      "warehouseFFSync": false,
      "currency": "RUB"
    },
    
    {
      "id": "1002",
      "date": "2021-04-03 15:50:41",
      "updateTs": "2021-04-02 15:50:48.032",
      "status": "COMPLETED",
      "totalOrderSum": 0,
      "comment": "",
      "totalQuantity": 100,
      "supplier": {
        "id": "da1686cf-0551-db1d-57b9-c04120309fae",
        "type": "PERSON",
        "role": null,
        "name": "Розничный покупатель",
        "organization": null,
        "person": {
          "name": "",
          "surname": "",
          "patronymic": "",
          "fullName": "Розничный Покупатель",
          "phone": "",
          "rawPhone": null,
          "alternativePhone": "",
          "email": null,
          "post": null,
          "personType": null,
          "address": {
            "country": null,
            "countryCode": null,
            "region": null,
            "area": null,
            "city": null,
            "settlement": null,
            "street": null,
            "house": null,
            "block": null,
            "building": null,
            "flat": null,
            "fullAddress": null,
            "fullCity": null,
            "rawData": null,
            "zip": null,
            "regionFias": null,
            "areaFias": null,
            "cityFias": null,
            "settlementFias": null
          }
        }
      },
      "items": [
        {
          "num": 1,
          "variantId": "1001",
          "productId": "1001",
          "name": "товар тест 3",
          "quantity": 100,
          "quantityFact": 100,
          "quantityRaw": 100,
          "quantityDefective": 0,
          "vatRate": "NO_VAT",
          "price": 0,
          "img": "https://storage.yandexcloud.net/images-k2c/05d7a992-1c61-4f39-87c6-1401405055e2.jpg",
          "skuType": "SKU",
          "barcode": "",
          "tag": "ROZNECHNIE_SETY"
        }
      ],
      "files": [
                {
                    "id": "43f79bac-0d82-2d82-f11d-abd1a53b26a0",
                    "fileType": "PDF",
                  	"fileSource": "FULFILLMENT", //ESHOP | USER
                    "fileName": "МХ1",
                    "fileExt": "pdf",
                    "url": "https://yadi.sk/d/BzKXkRigQZtVnB",
                    "printWhenPacking": true,
                    "copiesQty": 1
                }
           	 ],
      "warehouseName": "Свой склад",
      "warehouseCode": "373b1e28-a6d7-545f-9303-65af3a652d48",
      "confirmStatus": "APPROVED",
      "warehouseFFExported": false,
      "warehouseFFSync": false,
      "currency": "RUB"
    }
  ]
}
```

###  

Возможные статусы заказа:  
NEW  
READY\_TO\_TAKE\_IN  
TAKE\_IN\_PROCESS  
COMPLETED  
COMPLETED\_WITH\_DIFFERENCE  
DIFFERENCE  
CANCELED

### Создание/редактирование поставки (заказа поставщику)

/api/lite/purchase\_orders

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

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

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

####  

<table border="1" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B" style="border-collapse: collapse; width: 100%; height: 899px;"><tbody><tr style="height: 29px;"><td style="width: 25%; height: 29px;">**Поле**</td><td style="width: 25%; height: 29px;">**Тип**</td><td style="width: 25%; height: 29px;">**Обязательный**</td><td style="width: 25%; height: 29px;">**Комментарий**</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">warehouseCode</td><td style="width: 25%; height: 29px;">string</td><td style="width: 25%; height: 29px;">да</td><td style="width: 25%; height: 29px;">Код склада на который будет поставка, из справочника складов аккаунта</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">supplier</td><td style="width: 25%; height: 29px;">Объект</td><td style="width: 25%; height: 29px;">да</td><td style="width: 25%; height: 29px;">Данные о поставщике из справочника контрагентов аккаунта</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">supplier.id</td><td style="width: 25%; height: 29px;">string</td><td style="width: 25%; height: 29px;">да</td><td style="width: 25%; height: 29px;">Код контрагента-поставщика из справочника контрагентов аккаунта.  
<span style="color: #999999;">Также можно использовать внешний код контрагента. Для этого нужно передавать его в поле extId. В таком случае поле id можно уже не передавть.</span>

</td></tr><tr style="height: 63px;"><td style="width: 25%; height: 63px;">consignor</td><td style="width: 25%; height: 63px;">Объект</td><td style="width: 25%; height: 63px;">нет</td><td style="width: 25%; height: 63px;">Данные о грузоотправителе из справочника контрагентов аккаунта</td></tr><tr style="height: 80px;"><td style="width: 25%; height: 80px;">consignor.id</td><td style="width: 25%; height: 80px;">string</td><td style="width: 25%; height: 80px;">нет</td><td style="width: 25%; height: 80px;">Код контрагента-грузоотправителя из справочника контрагентов аккаунта</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">items

</td><td style="width: 25%; height: 29px;">Объект</td><td style="width: 25%; height: 29px;">да</td><td style="width: 25%; height: 29px;">Текущее агрегированное состояние поставки</td></tr><tr data-end="784" data-start="765"><th class="align-left" data-col-size="sm" data-end="772" data-start="765" style="width: 25%;">planItems</th><th class="align-left" data-col-size="md" data-end="784" data-start="772" style="width: 25%;">Объект</th><td style="width: 25%; height: 35px;">да</td><td style="width: 25%; height: 35px;">План поставки — данные, переданные клиентом</td></tr><tr data-end="856" data-start="795"><td data-col-size="sm" data-end="809" data-start="795" style="width: 25%;">factItems</td><td style="width: 25%;">Объект</td><td style="width: 25%;">да</td><td style="width: 25%;">Фактическая приемка — данные, зафиксированные складом</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">items.num</td><td style="width: 25%; height: 29px;">integer</td><td style="width: 25%; height: 29px;">да</td><td style="width: 25%; height: 29px;">Номер строки (последовательно с 1, без пропусков)</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">items.quantity</td><td style="width: 25%; height: 29px;">integer</td><td style="width: 25%; height: 29px;">да</td><td style="width: 25%; height: 29px;">Количество товара (более 0)</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">items.price</td><td style="width: 25%; height: 29px;">money</td><td style="width: 25%; height: 29px;">да</td><td style="width: 25%; height: 29px;">Цена за шт</td></tr><tr style="height: 80px;"><td style="width: 25%; height: 80px;">items.vatRate</td><td style="width: 25%; height: 80px;">enum

Значения: NO\_VAT,

VAT\_0, VAT\_10, VAT\_20

</td><td style="width: 25%; height: 80px;">да</td><td style="width: 25%; height: 80px;">Ставка НДС</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">items.variantId</td><td style="width: 25%; height: 29px;">string</td><td style="width: 25%; height: 29px;">да (если настроен поиск по этому полю)</td><td style="width: 25%; height: 29px;">Код товара в аккаунте </td></tr><tr style="height: 46px;"><td style="width: 25%; height: 46px;">items.variantExtId</td><td style="width: 25%; height: 46px;">string</td><td style="width: 25%; height: 46px;">да (если настроен поиск по этому полю)</td><td style="width: 25%; height: 46px;">Внешний код товара в аккаунте </td></tr><tr style="height: 30px;"><td style="width: 25%; height: 30px;">items.tag</td><td style="width: 25%; height: 30px;">string</td><td style="width: 25%; height: 30px;">нет</td><td style="width: 25%; height: 30px;">Тег, присвоенный товару</td></tr><tr style="height: 130px;"><td style="width: 25%; height: 130px;">searchColumnType</td><td style="width: 25%; height: 130px;">enum:  
HUMANID - дефолтный, можно не передавать, если не требуется другой,  
EXTID,  
ARTICLE,  
BARCODE</td><td style="width: 25%; height: 130px;">Обязательный, если нужен поиск не по variantId</td><td style="width: 25%; height: 130px;"> </td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">items.orderDocId</td><td style="width: 25%; height: 29px;">string</td><td style="width: 25%; height: 29px;">нет</td><td style="width: 25%; height: 29px;">Для согласованных кроссдок поставок - номер привязанного заказа</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">items.batchAccountingAttributes</td><td style="width: 25%; height: 29px;">Объект</td><td style="width: 25%; height: 29px;">нет</td><td style="width: 25%; height: 29px;">Атрибуты партии для данного товара</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">confirmStatus</td><td style="width: 25%; height: 29px;">enum   
Значения: APPROVED, NEED\_CONFIRM,

CANCELED

</td><td style="width: 25%; height: 29px;">нет</td><td style="width: 25%; height: 29px;">Статус подтверждения. Только если статус = APPROVED - поставка выгружается на склад для приемки.</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">comment</td><td style="width: 25%; height: 29px;">string</td><td style="width: 25%; height: 29px;">нет</td><td style="width: 25%; height: 29px;">Комментарий к поставке для склада</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">dateOfDeliveryPlan</td><td style="width: 25%; height: 29px;">DateTime</td><td style="width: 25%; height: 29px;">нет</td><td style="width: 25%; height: 29px;">Ориентровочная дата поступления поставки</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">externalId - externalId5</td><td style="width: 25%; height: 29px;">string</td><td style="width: 25%; height: 29px;">нет</td><td style="width: 25%; height: 29px;">Внешние коды поставки из клиенстких систем</td></tr></tbody></table>

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

```JSON
{
  
  "id": "1006896489",
  "items": [
    {
      "article": "dvn",
      "barcode": "876543",
      "factBatchAccountingAttributes": [],
      "multiplicity": 10,
      "name": "Маска для волос Davines (Квант 10 шт)",
      "num": 1,
      "optionsUsed": [],
      "price": 2000,
      "productId": "1256636009",
      "quantity": 20,
      "quantityDefective": 0,
      "quantityFact": 0,
      "quantityRaw": 0,
      "skuType": "SKU",
      "sum": 400000,
      "variantId": "566335810",
      "vatRate": "NO_VAT",
      "tag": "ROZNECHNIE_SETY"
    }
  ],
  "paymentStatus": "NOT_PAID",
  "planItems": [
    {
      "num": 1,
      "variantId": "566335810",
      "productId": "1256636009",
      "name": "Маска для волос Davines ",
      "quantity": 20,
      "quantityRaw": 0,
      "price": 2000,
      "vatRate": "NO_VAT",
      "article": "dvn",
      "skuType": "SKU",
      "orderDocId": null,
      "shortName": "Маска для волос Davines",
      "tag": "ROZNECHNIE_SETY"
    },
    {
      "num": 2,
      "variantId": "121220209",
      "productId": "34563121212",
      "name": "Крем для волос Davines ",
      "quantity": 1,
      "quantityRaw": 0,
      "price": 3500,
      "vatRate": "NO_VAT",
      "article": "dvnwow6",
      "skuType": "SKU",
      "orderDocId": null,
      "shortName": "Крем для волос Davines",
      "tag": "ROZNECHNIE_SETY"
    }

```

####  

#### **В ответ возвращается:**

```JSON
{
    "success": true,
    "orderId": "111",
    "c": "2b92b631-7f1b-c52a-897e-30bc628f87e5"
}
```

####  

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

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

# /api/lite/purchase_orders/history

### Получение истории по заказу поставщика

/api/lite/purchase\_orders/history

Возвращает историю событий по указанному заказу.

Обязательный параметр: id заказа

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

```JSON
{
    "success": true,
    "events": [
        {
     
            "type": "Документы",
            "subType": "Изменения заказа",
            "orderDocStage": "Новый",
            "eventDate": "2020-01-31 10:12:51.128",
            "description": "",
            "changeSource": "Пользователь",
            "userLogin": "sale@djbag.ru-expert",
            "id": "f258808b-a3ee-ccf6-9d1b-30198f94166c",
            "level": "INFO",
            "eventParameters": null
        },
        {
            "type": "Документы",
            "subType": "Изменения заказа",
            "orderDocStage": "Новый",
            "eventDate": "2020-01-31 10:35:55.144",
            "description": "",
            "changeSource": "Пользователь",
            "userLogin": "sale@djbag.ru-expert",
            "id": "94dc3974-f558-239f-c1c4-72b2906120c4",
            "level": "INFO",
            "eventParameters": null
        }
    ]
}
```

# /api/lite/purchase_orders/confirm

### Заказ - подтверждение

/api/lite/purchase\_orders/confirm

Проставление статуса Подтверждения у заказа.

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

```JSON
{ 
    "id":"1234",
    "confirmStatus": "APPROVED" // HOLD/CANCELED/NEED_CONFIRM
}        
```

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

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

```JSON
{
    "success": true,
    "confirmStatus": "APPROVED" // HOLD/CANCELED 
}
```

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

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

# /api/lite/purchase_orders/accept_diff

### Заказ - подтверждение

/api/lite/purchase\_orders/accept\_diff

Проставление флага согласия с рахождениями приемки

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

```JSON
{ 
    "id":"1234",
    "accept": true  // false
}
```

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

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

```JSON
{
    "success": true,
    "accept": true   // false
}
```

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

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

# /api/lite/purchase_orders/set_in_process

### Заказ - вернуть в обработку (свой склад)

/api/lite/purchase\_orders/set\_in\_process

Для принятого или отмененного заказа - вернуть на приемку. Убирает с хранения все ранее принятые позиции

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

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

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

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

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

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

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

# /api/lite/purchase_orders/completed

### Заказ - завершить приемку (свой склад)

/api/lite/purchase\_orders/set\_in\_process

Для заказа по своему складу где есть ранее сформированный приходный ордер - завершает его приемку и добавляет товар на хранение

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

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

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

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

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

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

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

# /api/lite/purchase_orders/items/fact

### Заказ - задать число принятых товаров (свой склад)

/api/lite/purchase\_orders/items/fact

Для заказа на своем складе - простановка количества товаров в приемке перед закрытием

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

```JSON
 {
    "id": "1005",
    "items": [
    {
      "num": 1,
      "variantId": "1003", 
      "quantityRaw": 2,
      "vatRate": "NO_VAT",
      "price": 123
    },
      {
      "num": 2,
      "variantId": "1000", 
      "quantityRaw": 3,
      "vatRate": "NO_VAT",
      "price": 123
    }
  ]
 }
```

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

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

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

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

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

# /api/lite/purchase_orders/file

/api/lite/purchase\_orders/file

Добавляет файл к заказу.

Параметры передаются как form-data:

<table border="1" id="bkmrk-upfile-%D0%A4%D0%B0%D0%B9%D0%BB-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%B3%D1%80" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">upfile</td><td style="width: 50%;">Файл для загрузки</td></tr><tr><td style="width: 50%;">id</td><td style="width: 50%;">Идентификатор заказа (humanId)</td></tr><tr><td style="width: 50%;">print\_when\_packing</td><td style="width: 50%;">Печатать при упаковке</td></tr><tr><td style="width: 50%;">copies\_qty</td><td style="width: 50%;">Кол-во копий</td></tr></tbody></table>

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

```JSON
{
    "success": true,
    "id": "b233372d-cf7b-f07b-446b-128912be7c8a",
    "fileType": "JPG",
    "fileName": "IMG_20200822_101244",
  	"fileSource": "USER", //ESHOP | FULFILLMENT
    "fileExt": "jpg",
    "url": "https://storage.yandexcloud.net/order-files-kak2c/d0f03942-8d75-4456-93af-42ec518ef0a9.jpg",
    "printWhenPacking": false,
    "copiesQty": 1
}
```

/api/lite/purchase\_orders/file

Удаляет файл

В параметре id передается идентификатор файла.

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

DELETE [https://app.kak2c.ru/api/lite/purchase\_orders/file?id=b233372d-cf7b-f07b-446b-128912be7c8a](https://app.kak2c.ru/api/lite/purchase_orders/file?id=b233372d-cf7b-f07b-446b-128912be7c8a)

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

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

# /api/lite/purchase_orders/file/edit

/api/lite/purchase\_orders/file/edit

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

```JSON
{
    "id": "b9e3efdd-455e-af10-996f-2cf6f03d9775",
    "copiesQty": 2,
    "printWhenPacking": true
}
```

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

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

# /api/lite/purchase_orders/history/status

### Получение истории смены статусов по заказу поставщика

/api/lite/purchase\_orders/history/status

Возвращает историю смены статуса по указанному заказу поставщика

Обязательный параметр: id заказа

####  

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

```JSON
{
    "items": [
        {
            "date": "2023-07-18 12:31:13.960",
            "infoStatus": "COMPLETED"
        },
        {
            "date": "2023-07-18 12:31:09.973",
            "infoStatus": "TAKE_IN_PROCESS"
        },
        {
            "date": "2023-07-18 12:30:19.438",
            "infoStatus": "READY_TO_TAKE_IN"
        },
        {
            "date": "2023-07-18 12:29:58.319",
            "infoStatus": "TAKE_IN_PROCESS"
        },
        {
            "date": "2023-07-18 12:29:48.458",
            "infoStatus": "COMPLETED_WITH_DIFFERENCE"
        },
        {
            "date": "2023-07-18 12:29:36.275",
            "infoStatus": "TAKE_IN_PROCESS"
        },
        {
            "date": "2023-07-18 12:29:29.321",
            "infoStatus": "READY_TO_TAKE_IN"
        },
        {
            "date": "2023-07-18 12:29:28.835",
            "infoStatus": "TAKE_IN_PROCESS"
        },
        {
            "date": "2023-07-18 12:29:00.708",
            "infoStatus": "READY_TO_TAKE_IN"
        },
        {
            "date": "2023-07-18 12:28:37.077",
            "infoStatus": "COMPLETED"
        },
        {
            "date": "2023-07-18 12:28:31.183",
            "infoStatus": "TAKE_IN_PROCESS"
        },
        {
            "date": "2023-07-18 12:01:48.748",
            "infoStatus": "READY_TO_TAKE_IN"
        }
    ],
    "success": true
}
```

# Отгрузка заказов

# /api/lite/pickup_dates

### <span style="color: #000000;">Информация о возможных датах приезда курьера</span>

<span style="color: #000000;">/api/lite/pickup\_dates</span>

Возвращает информацию о ближайших возможных датах приезда курьера в указанный период.

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

<table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" 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-" role="grid" style="width: 99.9068%; padding: 0px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 33.3333%;">**Параметр**</td><td style="width: 33.3333%;">**Тип\\формат**</td><td style="width: 95.9271%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">from

</td><td class="confluenceTd" style="width: 33.3333%;">date</td><td class="confluenceTd" style="width: 95.9271%;">Дата, начиная с которой идет поиск плановых дат приезда курьера. Включительно.</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">to

</td><td class="confluenceTd" style="width: 33.3333%;">date</td><td class="confluenceTd" style="width: 95.9271%;">Дата, по которую идет поиск плановых дат приезда курьера. Включительно.

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

#### **Результат запроса:**

<table class="relative-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" 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--0" role="grid" style="width: 100.001%; padding: 0px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 33.3333%;">**Параметр**</td><td style="width: 33.3333%;">**Тип\\формат**</td><td style="width: 95.9271%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">dates

</td><td class="confluenceTd" style="width: 33.3333%;">array</td><td class="confluenceTd" style="width: 95.9271%;">Массив dates содержит только даты, в которые можно запланировать приезд курьера.

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

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

```JSON
{
    "success": true,
    "dates": [
        {
            "date":"2019-01-09",
            "planned": true,
            "intervals":[
                {          
                    "readableTimeInterval": "Весь день",   
                    "startDateTime":  "2018-02-22T09:00:00",               
                    "startTimeHour": 9,
                    "startTimeMinute": 0,      
                    "finishDateTime":  "2018-02-22T18:00:00",          
                    "finishTimeHour": 18,
                    "finishTimeMinute": 0,
                    "planned": true                
                },
                {          
                    "readableTimeInterval": "9 - 14",  
                    "startDateTime":  "2018-02-22T09:00:00",               
                    "startTimeHour": 9,
                    "startTimeMinute": 0,      
                    "finishDateTime":  "2018-02-22T14:00:00",          
                    "finishTimeHour": 14,
                    "finishTimeMinute": 0,
                    "planned": false
                }
            ]
        }
    ]
}
```

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

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

# /api/lite/pickup_dates/planned

### <span style="color: #000000;">Информация о запланированных датах приезда курьера</span>

<span style="color: #000000;">/api/lite/pickup\_dates/planned</span>

Возвращает информацию о всех запланированных датах приезда курьера - как будущих так и прошлых.

Результат отсортирован по датам начиная с самой свежей.

#### **Результат запроса:**

```JSON
{
    "success": true,
    "dates": [
        {
            "date":"2019-01-09",
            "planned": true,
            "intervals":[
                {          
                    "readableTimeInterval": "Весь день",   
                    "startDateTime":  "2018-02-22T09:00:00",               
                    "startTimeHour": 9,
                    "startTimeMinute": 0,      
                    "finishDateTime":  "2018-02-22T18:00:00",          
                    "finishTimeHour": 18,
                    "finishTimeMinute": 0,
                    "planned": true
                },
                {          
                    "readableTimeInterval": "9 - 14",  
                    "startDateTime":  "2018-02-22T09:00:00",               
                    "startTimeHour": 9,
                    "startTimeMinute": 0,      
                    "finishDateTime":  "2018-02-22T14:00:00",          
                    "finishTimeHour": 14,
                    "finishTimeMinute": 0,
                    "planned": false                   
                }
            ]
        }
    ]
}
```

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

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

# /api/lite/takeout_list

### <span style="color: #000000;">Получение перечня реестров отгрузки</span>

<span style="color: #000000;">/api/lite/takeout\_list</span>

Возвращает информацию о созданных реестрах отгрузки по данному клиенту.

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

<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-%C2%A0-%D0%A2%D0%B8%D0%BF%5C%D1%84%D0%BE%D1%80%D0%BC%D0%B0" role="grid" style="width: 812px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 102px;">**Параметр**</td><td style="width: 106px;">**Тип\\формат**</td><td style="width: 604px;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 102px;">date\_from

</td><td class="confluenceTd" style="width: 106px;">date</td><td class="confluenceTd" style="width: 604px;">Дата, начиная с которой идет поиск реестров. Включительно. (необязательный)</td></tr><tr role="row"><td class="confluenceTd" style="width: 102px;">date\_to

</td><td class="confluenceTd" style="width: 106px;">date</td><td class="confluenceTd" style="width: 604px;">Дата, по которую идет поиск реестров. Включительно.

(необязательный)

</td></tr><tr role="row"><td class="confluenceTd" style="width: 102px;">id</td><td class="confluenceTd" style="width: 106px;">String</td><td class="confluenceTd" style="width: 604px;">Номер конкретного реестра (необязательный)</td></tr><tr role="row"><td class="confluenceTd" style="width: 102px;">page</td><td class="confluenceTd" style="width: 106px;">Integer</td><td class="confluenceTd" style="width: 604px;">Страница (необязательный)</td></tr><tr role="row"><td class="confluenceTd" style="width: 102px;">size</td><td class="confluenceTd" style="width: 106px;">Integer</td><td class="confluenceTd" style="width: 604px;">Число элементов на странице (необязательный)</td></tr><tr role="row"><td class="confluenceTd" style="width: 102px;">order</td><td class="confluenceTd" style="width: 106px;">String</td><td class="confluenceTd" style="width: 604px;">Поле для сортировки (необязательный)</td></tr></tbody></table>

#### **Результат запроса**:

```JSON
{   
    
    "success": true,
    "recordsTotal": 59,
    "takeoutLists": [
        {
            "id": "1069",
            "date": "2020-04-16 22:34:30",
            "updateTs": "2020-04-16 23:21:03.435",
            "status": "SHIPPED",
            "orders": [
                {
                    "id": "3318-1166",
                    "date": "2020-04-11",
                    "customer": "Караваева Елена Олеговна"
                }
            ],
            "takeoutDate": "2020-05-10",
            "takeoutHourStart": "14:00",
            "takeoutHourEnd": "18:00",
            "gatherTrackingNum": "100065493",
            "gatherType": "COURIER", // SELF_PICKUP
            "gatherStatus": "AWAITING_CARGO", //CREATED, CARGO_SHIPPED, HOLD, CANCELED
            "warehouseName": "Свой склад",
            "warehouseCode": "776069fa-f578-9ceb-e773-db7b89968b5f",
            "deliveryCode": "ae12b4f1-c8e5-aa52-0a68-9d102d4624fe",
            "deliveryTitle": "Global Delivery",
            "gatherType": "COURIER",
            "comment": "комментарий",
            "availableForChanges": false,
            "warehouseManager": {
                "name": "Склада",
                "surname": "Менеджер",
                "patronymic": "",
                "fullName": "Осман Идракович Кишиев ",
                "phone": "+79264642812",
                "rawPhone": "+7 (926) 464 28 12",
                "alternativePhone": "",
                "email": "Info@mossmore.ru",
                "post": null,
                "personType": null
            }
        },
        {
            "id": "1067",
            "date": "2020-04-11 17:00:09",
            "updateTs": "2020-04-11 17:46:35.009",
            "status": "SHIPPED",
           "orders": [
                {
                    "id": "3318-1167",
                    "date": "2020-04-12",
                    "customer": "Караваева Елена Олеговна"
                }
            ],
            "takeoutDate": "2020-05-10",
            "takeoutHourStart": "09:00",
            "takeoutHourEnd": "14:00",
            "gatherTrackingNum": "100065493",
            "gatherType": "COURIER",
            "gatherStatus": "AWAITING_CARGO",
            "warehouseName": "Свой склад",
            "warehouseCode": "776069fa-f578-9ceb-e773-db7b89968b5f",
            "deliveryCode": "ae12b4f1-c8e5-aa52-0a68-9d102d4624fe",
            "deliveryTitle": "Global Delivery",
            "gatherType": "COURIER",
            "warehouseManager": {
                "name": "Склада",
                "surname": "Менеджер",
                "patronymic": "",
                "fullName": "Осман Идракович Кишиев ",
                "phone": "+79264642812",
                "rawPhone": "+7 (926) 464 28 12",
                "alternativePhone": "",
                "email": "Info@mossmore.ru",
                "post": null,
                "personType": null
            }
        }
    ]
}
```

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

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

### <span style="color: #000000;">Создание/редактирование реестра отгрузки</span>

<span style="color: #000000;"> /api/lite/takeout\_list</span>

Создает или редактирует (при наличии параметра id) реестр отгрузки

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

```JSON
{          
            "id": "1069",           
            "orders": [
                {
                    "id": "3318-1166"                   
                },
                {
                    "id": "3318-1167"                   
                }
            ],
            "takeoutDate": "2020-05-10",
            "takeoutHourStart": "14:00",
            "takeoutHourEnd": "18:00",
            "warehouseName": "Свой склад",
            "warehouseCode": "776069fa-f578-9ceb-e773-db7b89968b5f",          
            "gatherType": "COURIER",
            "comment": "комментарий"  
}
```

#### **Результат:** 

```JSON
{
"success": true,
"id": "1069"
"errors": []
}
```

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

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

###  

### <span style="color: #000000;">Удаление/отмена реестра отгрузки</span>

<span style="color: #000000;">/api/lite/takeout\_list</span>

Отменяет реестр отгрузки, все отправления в нем исключаются из реестра.

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

```JSON
{          
     "id": "1069"
}
```

#### **Результат:** 

```JSON
{
"success": true,
"id": "1069",
"errors": []
}
```

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

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

### <span style="color: #000000;">Получение ошибок выгрузки по реестру отгрузки</span>

<span style="color: #000000;">/api/lite/takeout\_list/commit-errors</span>

Параметр: id реестра

#### **Результат:** 

```JSON
{
"success": true,
"id": "1069",
"warnings": [
    "3318-1167: Некорректные данные получателя"
]
"errors": []
}
```

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

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

# /api/lite/takeout_list/print

### <span style="color: #000000;">Получение печатной формы реестра отгрузки</span>

<span style="color: #000000;">/api/lite/takeout\_list/print</span>

`/api/lite/takeout_list/print?id=[ид отгрузки]&form=act`

Получение печатной формы в pdf для указанного реестра отгрузки

Параметры: id - номер реестра

form - вид печатной формы, по умолчанию "act"

Например:

`/api/lite/takeout_list/print?id=1234&form=act`

Печатная форма возвращается в формате base64.

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

```JSON
{
  "success": true, 
  "content" : "base64data"
     
}
```

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

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

# Настройки аккаунта

# /api/lite/pub/settings/checkout

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

/api/lite/pub/settings/checkout

Метод возвращает настройки виджета чекаута

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

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

```JSON
{
    "success": true,
  	"freeDeliveryAmount": 400.00,
    "freeDeliveryRegion": "RU", // RU_SNG, ALL
    "findByExtID": false,
    "paymentMethods": [
        {
            "code": "no-cod",
            "name": "Предоплата",
          	"method": "NO_COD",
            "isDiscountActive": true,
            "discountType": "PERCENT",
            "discountValue": 10,
            "minApplyValue": 1000
        },
        {
            "code": "cod-card",
            "method": "COD_CARD",
            "name": "Оплата картой курьеру",
            "isDiscountActive": false
        },
        {
            "code": "cod-cash",
            "method": "COD_CASH",	
            "name": "Оплата наличными курьеру",
            "isDiscountActive": false,
            "discountType": "FIX",
            "discountValue": 50
        }
    ],
    "promocodesAllowed": true,
    "defaultVAT": "VAT_20",
    "uiRequiredFields": [
        "PHONE",
        "EMAIL"
    ],
    "onlySufficientOffers": true,
    "paymentProvider": "PAYU",  // "YANDEX", "ROBOKASSA"
    "policyCheckEnabled": true,
    "personalInfoPolicyLink": "http://example.link",
    "confidentialPolicyLink": "http://example.link",
   	"country": "RU",
    "currency": "RUB",
  	"successRedirectUrl": "http://example.link",
    "customersRegistrationEnabled": false,
  	"showConsentToNewsletter": true
}
```

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

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

# /api/lite/settings/organization

### Получение настроек организации аккаунта

<span style="color: #505050;">/api/lite/settings/organization</span>

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

```JSON
{  
  "success": true,
  "organization": {
    "success": true,
    "inn": "123",
    "ogrn": "123",
    "kpp": "1213",
    "bik": "123",
    "bankName": "ПАО Сбербанк",
    "bankAccountNum": "123",
    "bankCorrNum": "123",
    "name": "ООО «Продакшн»",
    "fullName": "Общество с ограниченной ответственностью «Продакшн»",
    "phones": "234343",
    "email": "",
    "address": {
      "country": "Россия",
      "countryCode": "RU",
      "region": "Москва",
      "area": null,
      "city": "Москва",
      "settlement": null,
      "street": "ул один",
      "house": "4Б",
      "block": "",
      "building": "",
      "flat": null,
      "fullAddress": "Москва, ул один, д 4Б",
      "fullCity": null,
      "rawData": null,
      "zip": "117405",
      "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "areaFias": null,
      "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "settlementFias": null
    },
    "postalAddress": {
      "country": "Россия",
      "countryCode": "RU",
      "region": "Москва",
      "area": null,
      "city": "Москва",
      "settlement": null,
      "street": "ул один",
      "house": "4Б",
      "block": "",
      "building": "",
      "flat": null,
      "fullAddress": "Москва, ул оодин, д 4Б",
      "fullCity": null,
      "rawData": null,
      "zip": "117405",
      "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "areaFias": null,
      "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "settlementFias": null
    },
    "persons": [
      {
        "name": null,
        "surname": null,
        "patronymic": null,
        "fullName": "Ирина Борисовна Мельник",
        "phone": "",
        "rawPhone": null,
        "alternativePhone": "",
        "email": null,
        "post": "Генеральный директор",
        "personType": "CHIEF"
      },
      {
        "name": null,
        "surname": null,
        "patronymic": null,
        "fullName": "",
        "phone": "",
        "rawPhone": null,
        "alternativePhone": "",
        "email": null,
        "post": "",
        "personType": "DELIVERY_RESPONSIBLE"
      }
    ],
    "shopUrl": "http://theroadwear.com/",
    "vat": -1,
    "needFulfillment": true,
    "archiveUrl": "",
    "orgLegalType": "ZAO",
    "orgRegisterDate": "2005-01-01",
    "equalAddresses": true
  }
}
```

### Редактирование настроек организации аккаунта

<span style="color: #505050;">/api/lite/settings/organization</span>

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

```JSON
{
  "organization": {
    "inn": "12345",
    "ogrn": "6789",
    "kpp": "66666",
    "bik": "777777",
    "bankName": "ПАО СБЕРБАНК г. Москва",
    "bankAccountNum": "12345",
    "bankCorrNum": "6789",
    "name": "My Shop",
    "fullName": "Индивидуальный предприниматель Иванов Иван Иванович",
    "phones": "7(495)111 11 11",
    "email": "info@myshop.ru",
    "address": {
      "country": "Russia",
      "countryCode": "RU",
      "region": "Москва",
      "area": null,
      "city": "Москва",
      "settlement": null,
      "street": "Полянка",
      "house": "1",
      "block": "1",
      "building": null,
      "flat": "1",
      "fullAddress": "Москва, Полянка, д 1, к 1, кв 1.",
      "fullCity": null,
      "rawData": null,
      "zip": null,
      "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "areaFias": null,
      "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "settlementFias": null
    },
    "postalAddress": {
      "country": "Russia",
      "countryCode": "RU",
      "region": "Москва",
      "area": null,
      "city": "Москва",
      "settlement": null,
      "street": "Полянка",
      "house": "1",
      "block": "1",
      "building": null,
      "flat": "1",
      "fullAddress": "Москва, Полянка, д 1, к 1, кв 1.",
      "fullCity": null,
      "rawData": null,
      "zip": null,
      "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "areaFias": null,
      "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "settlementFias": null
    },
    "persons": [
      {
        "fullName": "Петров Петр Петрович",
        "post": "ГЕНЕРАЛЬНЫЙ ДИРЕКТОР/ ГЛАВНЫЙ БУХГАЛТЕР",
        "personType": "CHIEF"
      },
      {
        "fullName": "Сидоров Иван Иванович",
        "post": "",
        "phone": "+79261111111",
        "personType": "DELIVERY_RESPONSIBLE"
      }
    ],
    "shopUrl": "myshop.ru",
    "vat": -1,
    "needFulfillment": false,
    "orgLegalType": "ZAO",
    "orgRegisterDate": "2005-01-01",
    "archiveUrl": "https://yadi.sk/d/testlink"
  }
}
```

#### **В ответ возвращается:**

```JSON
{
"success": true

}
```

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

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

# /api/lite/settings/catalog

### Получение текущего основного каталога

<span style="color: #505050;">/api/lite/settings/catalog/default</span>

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

```JSON
{
  "success": true,
  "name": "Каталог 1",
  "code": "1000",
  "items": [
    {
    "title": "Смартфоны iPhone",
    "code": null,
    "collectionId": "1026",
    "defaultImage": "https://items.s1.citilink.ru/811882_v03_s.jpg",
    "items": null
    }
]
}
```

### Получение всех каталогов пользователя

<span style="color: #505050;"><span style="color: #172b4d;">/api/lite/settings/catalog</span></span>

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

```JSON
{
"success": true,
"catalogs": [
  {
  "success": true,
  "name": "Каталог 1",
  "code": "1000",
  "items": [
    {
    "title": "Смартфоны iPhone",
    "code": null,
    "collectionId": "1026",
    "defaultImage": "https://items.s1.citilink.ru/811882_v03_s.jpg",
    "items": null
    }
  ]
  }
]
}
```

### Создание, Обновление каталога

<span style="color: #172b4d;">/api/lite/settings/catalog</span>

<span style="color: #172b4d;">Создает/обновляет каталог по его коду. </span>

- если указан code - загружает по этому коду каталог из базы. Иначе - создаёт новый
- анализ items из переданного dto: все упоминаемые коллекции должны существовать. иначе возвращает ошибку
- ограничение уровней вложенности на 5 уровней

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

```JSON
{
  "name": "Каталог 1",
  "code": "1000",
  "items": [
    {
      "title": "Смартфоны iPhone",
      "code": "1002",
      "collectionId": "1026",
      "defaultImage": "https://items.s1.citilink.ru/811882_v03_s.jpg",
      "items": null
    }
  ]
}
```

# /api/lite/settings/checkout

### Получение настроек работы виджета чекаута

/api/lite/settings/checkout

Метод возвращает настройки виджета чекаута

**orderSumMoreThan** - наценка/скидка применится только от суммы заказа свыше суммы параметра.

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

#### **успех:**

```JSON
{
    "success": true,
    "deliveryPremiumType": "PERCENT",
    "importOrderType": "APPROVED",
    "insurancePercent": 100,
    "freeDeliveryAmount": null,
    "freeDeliveryRegion": "RU", // RU_SNG, ALL
    "ownCourierTariff": null,
    "selfPickupTariff": null,
    "merchantId": null,
    "accountSecret": null,
    "ipnUrl": null,
  	"additionalIpnFailUrl": null,  // только для Робокассы
  	"additionalIpnSuccessUrl": null, // только для Робокассы
    "findByExtID": false, - режим поиска по ExtId
    "defaultCity": null,
    "paymentMethods": [
        {
            "code": "no-cod",
            "name": "Предоплата",
            "method": "NO_COD",
            "isDiscountActive": true,
            "discountType": "PERCENT",
            "discountValue": 10,
            "minApplyValue": 1000
        },
        {
            "code": "cod-card",
            "method": "COD_CARD",
            "name": "Оплата картой курьеру",
            "isDiscountActive": false
        }
    ],
    "promocodesAllowed": null,
    "defaultVAT": "VAT_20",
    "uiRequiredFields": [
        "PHONE",
        "EMAIL"
    ],
    "onlySufficientOffers": true,
    "disableCodSumInTariff": false, //Не учитывать тариф за наложку в сумме доставки
	"disableInsuranceSumInTariff": false, //Не учитывать тариф за страховку в сумме доставки
    "paymentProvider": "PAYU"  // "YANDEX", "ROBOKASSA",
	"paymentWithoutCommission": false,
    "defaultDeliveryServiceOptions": { // Услуги доставки, включенные у заказа по умолчанию. Если они не заданы, поле не отображается
        "GLOBAL_DELIVERY": "TRYING;PARTIAL_DELIVERY",
        "PICKPOINT": "PARTIAL_DELIVERY; TRYING; CHECK_CONTENT; PERSONALLY_IN_HANDS; DANGEROUS_CARGO; VERIFY; REVERSE"
    },
    "commercialAccount": true,
    "commercialAccountRequested": false,
    "isJurClient": null,
    "isPostfactumPaymentMode": null,
    "isContractOk": null,
    "accountantEmail": null,
    "allowSNG": null,
    "isSelfPpz": null,
    "disableCodSumInTariff": false,
    "disablePRRInTariff": false,
    "cdekSelfPpz": null,
    "orderSubType": null,
    "catalogCode": "1000",
    "defaultVAT": null,
    "policyCheckEnabled": true,
    "personalInfoPolicyLink": "http://example.link",
    "confidentialPolicyLink": "http://example.link",
 	"country": "RU",
    "currency": "RUB",
	"successRedirectUrl": "http://example.link",
    "customersRegistrationEnabled": false,
	"unlockOrderDuringOnlinePayment": false,
	"showConsentToNewsletter": true,
	"reserveAfterPayment": true,
	"showDeliveryOptions": true,
	"deliveryRegionSettings": {
        "commonSettings": [
            {
                "country": "RU",
                "region": "MOSCOW",
                "extraFeeFixValue": 100,
                "extraFeePercentValue": 0,  
                "orderSumMoreThan": 22000.00,
                "enabled": false,
                "tariffEnabled": true
            },
            {
                "country": "ALL",
                "region": "ALL_REGIONS",
                "extraFeeFixValue": 100,
                "extraFeePercentValue": -50,  
                "orderSumMoreThan": 22000.00,
                "enabled": true,
                "tariffEnabled": true
            },
            {
                "country": "SNG",
                "region": "ALL_REGIONS",
                "extraFeeFixValue": 100,
                "extraFeePercentValue": 0,     
                "orderSumMoreThan": 22000.00,
                "enabled": true,
                "tariffEnabled": true
            }
        ]
    }
}
```

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

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

###  

### Сохранение настроек работы виджета чекаута

/api/lite/settings/checkout

Запись/обновление настроек чекаута

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

```JSON
{   
    "deliveryPremiumAmount": 15.3, - размер наценки в процентах, дробное число в диапазоне [-100; +бесконечность]
    "deliveryPremiumFixAmount": 20 - - размер наценки в процентах, дробное число, можно применять как отдельно от deliveryPremiumAmount, так и               совместно
    "importOrderType": "NEED_CONFIRM", - загружать ли заказ подтверждённым? "APPROVED" | "NEED_CONFIRM"
    "insurancePercent": 100, - процент от суммы товаров для расчета страховой стоимости, дробное число, в диапазоне [0; 100]
    "freeDeliveryAmount": 1500, - сумма заказа для бесплатной доставки, если задана - то не менее 0
	"freeDeliveryRegion": "RU", - регион действия бесплатной доставки. "RU" | "RU_SNG" | "ALL"
    "ownCourierTariff": 150 - тариф на доставку своими курьерами, null -если доставки своими курьерами нет
    "selfPickupTariff": 200,  - тариф на самовывоз, null - если самовывоза нет
     "paymentMethods": [
        {
            "code": "no-cod",
            "name": "Предоплата",
            "isDiscountActive": true,
            "discountType": "PERCENT",
            "discountValue": 10,
            "minApplyValue": 1000
        }
    ],
    "findByExtID": true, - режим поиска по ExtId, (дублирование /api/lite/settings/offer-id-type)
    "defaultCity" : "Москва",
    "uiRequiredFields": ["PHONE", "EMAIL"], - перечень полей для которых чекаут должен включить обязательную валидацию непустого значения
    "onlySufficientOffers": true, - флаг для запрета покупки товаров без остатков
    "disableCodSumInTariff": false, //Не учитывать тариф за наложку в сумме доставки
	"disableInsuranceSumInTariff": false, //Не учитывать тариф за страховку в сумме доставки
    "paymentProvider": "PAYU",  // "YANDEX", "ROBOKASSA"    - подключенный провайдер эквайринга
 	"paymentWithoutCommission": false,
    //необязательный параметр. Услуги доставки, включенные у заказа по умолчанию. Ключ - внешний код службы доставки, например "PICKPOINT".
    //Значение - (DeliveryServiceOption) строковое перечисление с разделителем ";". Может быть переопределён, если передать значение deliveryServiceOptions в методе /api/lite/pub/order
    "defaultDeliveryServiceOptions": {
        "GLOBAL_DELIVERY": "TRYING;PARTIAL_DELIVERY",
        "PICKPOINT": "PARTIAL_DELIVERY; TRYING; CHECK_CONTENT; PERSONALLY_IN_HANDS; DANGEROUS_CARGO; VERIFY; REVERSE"
    },
    "catalogCode": "1005", - номер каталога, который станет основным
    "policyCheckEnabled": true,
    "personalInfoPolicyLink": "http://example.link",
    "confidentialPolicyLink": "http://example.link",
 	"country": "RU",
    "currency": "RUB",
	"successRedirectUrl": "http://example.link", 
    "customersRegistrationEnabled" : true - включение авторегистрации покупателей ,
	"unlockOrderDuringOnlinePayment" : false,
	"showConsentToNewsletter": true,
	"reserveAfterPayment": true,
	"showDeliveryOptions": true
}
```

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

#### **успех:**

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

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

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

# /api/lite/settings/counteragents

### Получение перечня контрагентов

<span style="color: #505050;">/api/lite/settings/counteragents</span>

Возвращает перечень контрагентов по роли или по id

Параметры запроса: id - для загрузки одного контрагента. иначе загружаются все контрагенты аккаунта

extId - для загрузки одного контрагента с заданным внешним ID.

query - строка для поиска по наименованию, ИНН, ОГРН по включению

Паджинация стандартная: page, size (10 элементов по умолчанию)

примеры:

<span style="color: #505050;">/api/lite/settings/counteragents?id=1647656c-080a-d01b-e2c4-362961f07e18</span>

<span style="color: #505050;">Виды контрагентов для поля role: CUSTOMER, FULFILLMENT\_SERVICE, DELIVERY\_SERVICE, CALLCENTER\_SERVICE, PRODUCT\_SUPPLIER</span>

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

```JSON
{     
    "success": true,
    "recordsTotal": 3,
    "counteragents": [
         {
            "id": "c82e2616-91e7-702e-d666-320534119a13",
            "extId": "externalSystemID-123",
            "type": "COMPANY",
            "role": "PRODUCT_SUPPLIER",
            "name": " ИП Петров А.В.",
            "organization": {
                "id": "f23b14bf-1151-dcb5-1b25-57a2b931e3ac",
                "name": "ИП Петров А.В.",
                "fullName": "ИП Петров А.В.",
                "phones": null,
                "inn": "5018081484",
                "kpp": null,
                "ogrn": null,
                "okpo": null,
                "persons": null,
                "orgLegalType": "SELF_EMPLOYED",
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": "Новоалексеевская",
                    "house": "18",
                    "block": "3",
                    "building": "",
                    "flat": null,
                    "fullAddress": "г Москва, Алексеевский р-н, ул Новоалексеевская, д 18 к 3",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "129626",
                    "regionFias": null,
                    "areaFias": null,
                    "cityFias": null,
                    "settlementFias": null
                },
                "email": null
            },
            "person": null
        },
          {
            "id": "e627aba4-bfe7-0ecf-14d8-b120233d9446",
            "type": "PERSON",
            "role": null,
            "name": "Вано",
            "organization": null,
            "person": {
                "name": "Вано",
                "surname": "",
                "patronymic": "",
                "fullName": "Вано о",
                "phone": "323232323232323434",
                "rawPhone": null,
                "alternativePhone": "",
                "email": null,
                "post": null,
                "personType": null,
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Алтайский",
                    "area": null,
                    "city": "Барнаул",
                    "settlement": null,
                    "street": "Барнаульская",
                    "house": "1",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Алтайский, Барнаул, Барнаульская, д 1",
                    "fullCity": null,
                    "rawData": "Алтайский, Барнаул, Барнаульская, д 1",
                    "zip": "",
                    "regionFias": null,
                    "areaFias": null,
                    "cityFias": null,
                    "settlementFias": null
                }
            }
        }
    ]
}
```

<span style="color: #505050;">/api/lite/settings/counteragents?extId=123-1234abc</span>

<span style="color: #505050;">Виды контрагентов для поля role: CUSTOMER, FULFILLMENT\_SERVICE, DELIVERY\_SERVICE, CALLCENTER\_SERVICE, PRODUCT\_SUPPLIER</span>

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

```JSON
{     
    "success": true,
    "recordsTotal": 3,
    "counteragents": [
         {
            "id": "c82e2616-91e7-702e-d666-320534119a13",
            "extId": "123-1234abc",
            "type": "COMPANY",
            "role": "PRODUCT_SUPPLIER",
            "name": " ИП Петров А.В.",
            "organization": {
                "id": "f23b14bf-1151-dcb5-1b25-57a2b931e3ac",
                "name": "ИП Петров А.В.",
                "fullName": "ИП Петров А.В.",
                "phones": null,
                "inn": "5018081484",
                "kpp": null,
                "ogrn": null,
                "okpo": null,
                "persons": null,
                "orgLegalType": "SELF_EMPLOYED",
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": "Новоалексеевская",
                    "house": "18",
                    "block": "3",
                    "building": "",
                    "flat": null,
                    "fullAddress": "г Москва, Алексеевский р-н, ул Новоалексеевская, д 18 к 3",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "129626",
                    "regionFias": null,
                    "areaFias": null,
                    "cityFias": null,
                    "settlementFias": null
                },
                "email": null
            },
            "person": null
        },
          {
            "id": "e627aba4-bfe7-0ecf-14d8-b120233d9446",
            "type": "PERSON",
            "role": null,
            "name": "Вано",
            "organization": null,
            "person": {
                "name": "Вано",
                "surname": "",
                "patronymic": "",
                "fullName": "Вано о",
                "phone": "323232323232323434",
                "rawPhone": null,
                "alternativePhone": "",
                "email": null,
                "post": null,
                "personType": null,
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Алтайский",
                    "area": null,
                    "city": "Барнаул",
                    "settlement": null,
                    "street": "Барнаульская",
                    "house": "1",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Алтайский, Барнаул, Барнаульская, д 1",
                    "fullCity": null,
                    "rawData": "Алтайский, Барнаул, Барнаульская, д 1",
                    "zip": "",
                    "regionFias": null,
                    "areaFias": null,
                    "cityFias": null,
                    "settlementFias": null
                }
            }
        }
    ]
}
```

###  

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

<span style="color: #505050;">/api/lite/settings/counteragents</span>

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

Поле *id* в контрагенте и в организации служит для поиска существующего контрагента/организации.

Поле *type* может иметь следующие значения:

- COMPANY
- PERSON

Поле *orgLegalType* может иметь следующие значения:

- SELF\_EMPLOYED
- COMPANY
- OOO
- AO
- ZAO
- PAO

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

```JSON
{   
            "id": "c82e2616-91e7-702e-d666-320534119a13",
            "extId": "externalSystemID-123",
            "type": "COMPANY",         
            "name": " ИП Петров А.В.",
            "organization": {
                "id": "f23b14bf-1151-dcb5-1b25-57a2b931e3ac",
                "name": "ИП Петров А.В.",
                "fullName": "ИП Петров А.В.",
                "phones": null,
                "inn": "5018081484",
                "kpp": null,
                "ogrn": null,
                "okpo": null,
                "persons": null,
                "orgLegalType": "SELF_EMPLOYED",
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": "Новоалексеевская",
                    "house": "18",
                    "block": "3",
                    "building": "",
                    "flat": null,
                    "fullAddress": "г Москва, Алексеевский р-н, ул Новоалексеевская, д 18 к 3",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "129626",
                    "regionFias": null,
                    "areaFias": null,
                    "cityFias": null,
                    "settlementFias": null
                },
                "postalAddress": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": "Новоалексеевская",
                    "house": "18",
                    "block": "3",
                    "building": "",
                    "flat": null,
                    "fullAddress": "г Москва, Алексеевский р-н, ул Новоалексеевская, д 18 к 3",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "129626",
                    "regionFias": null,
                    "areaFias": null,
                    "cityFias": null,
                    "settlementFias": null
                }
                "email": "abc@abc.ru"
            },
            "person": null
        }
```

Пример для физлица:

```JSON
{
            "id": "e627aba4-bfe7-0ecf-14d8-b120233d9446",
  			"extId": "externalSystemID-123",
            "type": "PERSON",
            "role": null,
            "name": "Вано",
            "organization": null,
            "person": {
                "name": "Вано",
                "surname": "",
                "patronymic": "",
                "fullName": "Вано о",
                "phone": "323232323232323434",
                "rawPhone": null,
                "alternativePhone": "",
                "email": null,
                "post": null,
                "personType": null,
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Алтайский",
                    "area": null,
                    "city": "Барнаул",
                    "settlement": null,
                    "street": "Барнаульская",
                    "house": "1",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Алтайский, Барнаул, Барнаульская, д 1",
                    "fullCity": null,
                    "rawData": "Алтайский, Барнаул, Барнаульская, д 1",
                    "zip": "",
                    "regionFias": null,
                    "areaFias": null,
                    "cityFias": null,
                    "settlementFias": null
                }
            }
        }
```

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

```JSON
{     
    "success": true,
    "id": "c82e2616-91e7-702e-d666-320534119a13"
}
```

###  

### Удаление контрагента

/api/lite/settings/counteragents?id=2fe48a36-b1fd-b6f3-417b-689ff672c50d

Удаляет контрагента по его id. Если контрагент уже где-то используется, то при удалении возникнет ошибка.

#### **Результат запроса:**

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

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

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

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

# /api/lite/settings/delivery-info-list

### Получение перечня способов доставки для аккаунта

<span style="color: #505050;">/api/lite/settings/delivery-info-list</span>

Возвращает перечень способов доставки с доступными доп. сервисами по каждому.

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

```JSON
{     
    "success": true,
    "deliveryInfoList": [
        {
            "code": "08141770-8c5d-2ee0-1ddc-6733c7b29f7c",
            "deliveryCode": "SELF_PICKUP",
            "title": "Самовывоз со склада",
            "product": null,
            "imgUrl": null,
            "courierTitle": null,
            "freeDeliveryLimit": {
                "deliverySumBelowLimitAmount": 23432432.00,
                "deliverySumLimitAmount": 324234.00,
                "isDeliverySumLimitActive": true
            },
            "type": "SELF_PICKUP",
          	"fbmType": "WILDBERRIES", //OZON
          	"fboDeliveryByCaсtus": false
            "availableServices": null,
            "active": true,
            "publicAvailable": false
        },
        {
            "code": "5e08e4d9-128d-ba3d-496a-d7b9c783f7d9",
            "deliveryCode": "GLOBAL_DELIVERY",
            "title": "GLOBAL_DELIVERY",
            "product": "Терминал-дверь(Стандарт)",
            "imgUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_global_delivery_left.svg",
            "courierTitle": "Global Delivery",
            "type": "COURIER",
          	"fbmType": null,
            "availableServices": [
                "CHECK_CONTENT",
                "TRYING",
                "PARTIAL_DELIVERY",
                "REVERSE"
            ],
            "active": true,
            "publicAvailable": true
        },
        {
            "code": "80429450-85a3-7ba9-2b92-56b459d29ed4",
            "deliveryCode": "PICKPOINT",
            "title": "PICKPOINT",
            "product": "PICKPOINT_STANDARD",
            "imgUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_pickpoint_left.svg",
            "courierTitle": "PickPoint",
            "type": "PVZ",
            "availableServices": null,
            "active": true,
            "publicAvailable": true
        },
        {
            "code": "8ca527c5-d1ed-0a96-bacf-b0d6d109311b",
            "deliveryCode": "CDEK_CDEK_PARCEL_W_D",
            "title": "CDEK_CDEK_PARCEL_W_D",
            "product": "Посылка склад-дверь",
            "imgUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_cdek_left.svg",
            "courierTitle": "СДЭК",
            "type": "COURIER",
          	"fbmType": null,
            "availableServices": [
                "PARTIAL_DELIVERY",
                "CHECK_CONTENT",
                "TRYING",
                "DANGEROUS_CARGO",
                "REVERSE"
            ],
            "active": true,
            "publicAvailable": true
        },
        {
            "code": "3c43624e-9d8e-365d-979d-7f2bacf681dc",
            "deliveryCode": "CDEK_CDEK_PARCEL_W_W",
            "title": "CDEK_CDEK_PARCEL_W_W",
            "product": "Посылка склад-склад",
            "imgUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_cdek_left.svg",
            "courierTitle": "СДЭК",
            "type": "PVZ",
            "availableServices": [
                "PARTIAL_DELIVERY",
                "CHECK_CONTENT",
                "TRYING",
                "DANGEROUS_CARGO",
                "REVERSE"
            ],
            "active": true,
            "publicAvailable": true
        },
        {
            "code": "2da5bac0-bfd0-2f77-7f52-498d64802c81",
            "deliveryCode": "RUSSIAN_POST_TEMPOLINE_ONLINE_PARCEL",
            "title": "RUSSIAN_POST_TEMPOLINE_ONLINE_PARCEL",
            "product": "Посылка-онлайн",
            "imgUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_russian_post_left.svg",
            "courierTitle": "Почта РФ (Темполайн)",
            "type": "RUSSIAN_POST",
          	"fbmType": null,
            "availableServices": null,
            "active": true,
            "publicAvailable": true
        }
    ]
}
```

###  

### Обновление способа доставки

<span style="color: #505050;">/api/lite/settings/delivery-info-list</span>

Можно для имеющегося канала доставки изменить название и флаги доступности и публичной доступности, а также опции лимита бесплатной доставки.

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

```JSON
{        
            "code": "08141770-8c5d-2ee0-1ddc-6733c7b29f7c",          
            "title": "Самовывоз со склада",          
            "active": true,
            "publicAvailable": false,
            "freeDeliveryLimit": {
                "deliverySumBelowLimitAmount": 23432432.00,
                "deliverySumLimitAmount": 324234.00,
                "isDeliverySumLimitActive": true
            }
}
```

#### **Результат запроса:** 

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

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

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

# /api/lite/settings/domainAlias

### Проверка доступности домена 3 уровня

/api/lite/settings/domainAlias

Метод возвращает флаг доступности запрошенного названия для домена 3 уровня (не используется никаким другим аккаунтом)

Запрос: Передать параметр domain, например: ?domain=foodshop

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

#### **успех:**

```JSON
{
"success": true,

"available": true

}
```

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

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

###  

### Обновление домена 3 уровня

/api/lite/settings/domainAlias

Метод обновляет домен 3 уровня на запрашиваемый

Запрос:

```JSON
{
"domain":"foodshop"
}
```

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

#### **успех:**

```JSON
{
"success": true только не смогу сделать заказ, денег на карте не хватит
}
```

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

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

# /api/lite/settings/email/order

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

/api/lite/settings/email/order

Метод возвращает тексты email с заголовком и подвалом для шаблона письма покупателю после оформления заказа.

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

#### **успех:**

```JSON
{
"success": true,

"header": "Спасибо за оформление заказа",

"footer": "Контакты для связи: 123456"

}
```

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

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

### Обновление текста заголовка и подвала для email оформления заказа

/api/lite/settings/email/order

Метод обновляет тексты email с заголовком и подвалом для шаблона письма покупателю после оформления заказа

Запрос:

#### **успех:**

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

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

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

# /api/lite/settings/email/personal

### Обновление данных по текущим настройкам почты

<span style="color: #505050;">/api/lite/settings/email/personal</span>

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

Отправляет тестовое письмо на тенантный адрес магазина. Если отправка удалась - сохраняет переданные настройки.

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

```JSON
{
    "email":"no-reply@kak2c.ru",
    "password":"ra$[dsa[/01gh",
    "host":"smtp.yandex.ru",
    "port":"587"
}
```

###  

### Получение данных по текущим настройкам почты

/<span style="color: #505050;">api/lite/settings/email/personal</span>

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

#### **Поля ответа:**

<table class="relative-table confluenceTable stickyTableHeaders tablesorter tablesorter-default" id="bkmrk-%D0%98%D0%BC%D1%8F-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-usernam" role="grid" style="width: 99.7806%; padding: 0px;"><tbody aria-live="polite" aria-relevant="all"><tr><td>**Имя**</td><td>**Описание**</td></tr><tr role="row"><td class="confluenceTd">username</td><td class="confluenceTd">Адрес почты</td></tr><tr role="row"><td class="confluenceTd">isActivePersonalEmail</td><td class="confluenceTd">Активна ли почта на данный момент</td></tr><tr role="row"><td class="confluenceTd">errorMessage</td><td class="confluenceTd">Описание ошибки, если почта перестала работать

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

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

```JSON
{
    "username": "no-reply@kak2c.ru",
    "password": "ra$[dsa[/01gh",
    "port": "587",
    "host": "smtp.yandex.ru",
    "isActivePersonalEmail": true,
    "errorMessage": ""
}
```

<div id="bkmrk-"><table class="relative-table confluenceTable stickyTableHeaders tablesorter tablesorter-default" role="grid" style="width: 99.7806%; padding: 0px;"><colgroup><col style="width: 8.74587%;"></col><col style="width: 80.033%;"></col></colgroup><thead class="tableFloatingHeaderOriginal" style="position: static; margin-top: 0px; left: 325px; z-index: 3; width: 892px; top: 121px;"></thead></table>

</div>

# /api/lite/settings/offer-id-type

### Задать тип поля - ключа для работы с предложениями

/api/lite/settings/offer-id-type

Задание поля HumanId или Внешний код - как ключевое для поиска товарных предложений для витрины/чекаута/создания заказа.

По умолчанию или при отсутствии значения используется поиск по HumanId

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

```JSON
{      
        "type": "EXT_ID"  // HUMAN_ID
         
}
```

#### **Результат запроса:** 

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

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

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

# /api/lite/settings/payment/payu

### Записать данные собственного аккаунта payU

/api/lite/settings/payment/payu

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

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

```JSON
{
  "merchantId": "abcd",
  "accountSecret": "abcd"
}
```

#### **Результат запроса:**

```JSON
{
  "success":true,
  "accountId": "abcd",
  "url": "abcd"
}
```

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

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

# /api/lite/settings/payment/robokassa

### Записать данные собственного аккаунта Робокасса

/api/lite/settings/payment/robokassa

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

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

```JSON
{
  "merchantId": "abcd",
  "accountSecret": "abcd",
  "accountSecret2": "abcd"
}
```

#### **Результат запроса:**

```JSON
{
  "success":true,
  "accountId": "abcd",
  "resultUrl": "abcd",  - основной адрес приема ipn уведомлений (только оплаченные)
  "failUrl": "abcd", - адрес приема ipn уведомлений (только неоплаченные/отказ покупателя)
  "successesUrl": "abcd"  - адрес редиректа в магазин после оплаты 
}
```

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

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

# /api/lite/settings/payment/yandex

### Записать данные собственного аккаунта Yandex Касса

/api/lite/settings/payment/yandex

Записать данные аккаунта Yandex для прямого зачисления оплат заказов покупателей

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

```JSON
{
  "merchantId": "abcd",
  "accountSecret": "abcd"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk-"><div><div><div></div></div></div></div>#### **Результат запроса:** 

```JSON
{
  "success":true,
  "accountId": "abcd",
  "url": "abcd"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>#### **Ошибка:**

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

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

# /api/lite/settings/payment-methods

### Получение перечня способов оплаты для аккаунта

<span style="color: #505050;">/api/lite/settings/payment-methods</span>

Возвращает перечень способов оплаты

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

```JSON
{ 
    "success": true,
    "paymentMethods": [
        {
            "paymentMethod": "COD_CARD",
            "name": "Оплата картой при получении",
            "code": "cod-card"
        },
        {
            "paymentMethod": "COD_CASH",
            "name": "Оплата наличными при получении",
            "code": "cod-cash"
        },
        {
            "paymentMethod": "ONLINE",
            "name": "Предоплата картой на сайте",
            "code": "online"
        }
    ]
}
```

###  

### Создать/изменить способ оплаты

/api/lite/settings/<span style="color: #505050;">payment-methods</span>

Создать / изменить способ оплаты.

Ключ для изменения - поле code - уникальное.

Все поля обязательны

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

```JSON
{
     "paymentMethod": "COD_CARD",
     "name": "Оплата картой при получении",
     "code": "cod-card"
}
```

####  

#### **Результат запроса:** 

```JSON
{
        "success": true,
        "name": "Оплата картой при получении",
        "code": "cod-card"     
}
```

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk-"><div><div><div></div></div></div></div>### Удалить способ оплаты

/api/lite/settings/<span style="color: #505050;">payment-methods</span>

<div id="bkmrk--0"></div>Удаление одного способа оплаты. Использовать параметр в url вида ?code=test

Если способ оплаты не использован в документах и заказах - удаление пройдет успешно.

#### **Результат запроса:** 

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%7B-%C2%A0%C2%A0%C2%A0%22success%22%3A-true"><div><div><div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div><div>`{`</div><div>`   ``"success"``: ``true`</div><div>`}`</div></div></td></tr></tbody></table>

</div></div></div></div>#### **Ошибка:**

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

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

# /api/lite/settings/pickup

### Сохранение настроек точки сбора

/api/lite/settings/pickup

Сохранение ФИО, телефона сотрудника на точке сбора, названия магазина и адреса точки

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

```JSON
{
    "person_full_name":"Петров Петр",
    "person_phone":"8(910)101-10-01",
    "shopName": "Зонты и сумки",
    "address":  {
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": "Озёрная",
                    "house": "4/9",
                    "block": "",
                    "building": "",
                    "flat": null,
                    "fullAddress": "г Москва, ул Озёрная, д 4/9",                                   
                    "zip": "119361",
                    "regionFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "areaFias":null,
                    "cityFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "settlementFias":null
                }
}
```

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

#### **успех:**

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

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

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

# /api/lite/settings/promocode

### Получить список промокодов аккаунта (/api/lite/settings/promocode)

/api/lite/settings/promocode

<div id="bkmrk-"></div>Загрузка списка неудаленных промокодов аккаунта

####  

#### **Результат запроса:**

```JSON
{ 
  "success": true,
  "recordsTotal": 2,
  "promocodes": [
    {
    "code": "leto",
    "isActive": true,
    "discountType": "PERCENT",
    "discountValue": 20,
    "conditions": null,
    'useCount":20
    },
    {
    "code": "test",
    "isActive": true,
    "discountType": "FIX",
    "discountValue": 12,
    "conditions": [ //Условия действия (опционально). null для промокода без условий.
                {
                    "type": "TIME_LIMIT",
                    "name": "Срок действия промокода",
                    "num": 0,
                    "mandatory": true,
                    "unsuccessMessage": "Срок действия акции истёк",
                    "applyDiscount": false,
                    "applyDeliveryDiscount": false,
                    "fromDate": "2018-10-08 16:21:57",
                    "toDate": "2019-10-08 16:21:57",
                    "maxNumberOfUse": 0
                },
                {
                    "type": "USE_LIMIT",
                    "name": "Максимальное кол-во использований промокода",
                    "num": 1,
                    "mandatory": true,
                    "unsuccessMessage": "Промокод более недействителен",
                    "applyDiscount": false,
                    "applyDeliveryDiscount": false,
                    "maxNumberOfUse": 100
                },
                {
                    "type": "ORDER_SUM",
                    "name": "Бесплатная доставка курьером при заказе от 5000 р",
                    "num": 2,
                    "mandatory": true,
                    "unsuccessMessage": "Сумма заказа меньше 5000 рублей",
                    "applyDiscount": false,
                    "applyDeliveryDiscount": true,
                    "deliveryDiscountType": "PERCENT",
                    "deliveryDiscountValue": 100,
                    "deliveryCodes": [
                        "GLOBAL_DELIVERY"
                    ],
                    "maxNumberOfUse": 0,
                    "fromSum": 5000,
                    "toSum": -1
                },
                {
                    "type": "ORDER_SUM",
                    "name": "Скидка 200р при заказе от 2000 р",
                    "num": 3,
                    "mandatory": true,
                    "unsuccessMessage": "Сумма заказа меньше 2000 рублей",
                    "applyDiscount": true,
                    "discountType": "FIX",
                    "discountValue": 200,
                    "applyDeliveryDiscount": false,
                    "maxNumberOfUse": 0,
                    "fromSum": 2000,
                    "toSum": -1
                },
                {
                    "type": "DELIVERY_LOCATION",
                    "name": "Скидка 10% на доставку по Москве при оплате онлайн",
                    "num": 4,
                    "mandatory": false,
                    "unsuccessMessage": "Данный промокод недействителен",
                    "applyDiscount": false,
                    "applyDeliveryDiscount": true,
                    "deliveryDiscountType": "PERCENT",
                    "deliveryDiscountValue": 10,
                    "paymentMethodCodes": [
                        "online"
                    ],
                    "maxNumberOfUse": 0,
                  	"fullAddress": "Москва" //В этом поле хранится текстовый адрес для отображения в ЛК
                    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"
                },
                {
                    "type": "SKU_COMBINATION",
                    "name": "2 + 1 Купи 2 товара, 3й в подарок",
                    "num": 5,
                    "mandatory": true,
                    "unsuccessMessage": "Промокод не применён. В корзине отсутствуют товары, соответствующие условию акции.",
                    "applyDiscount": true,
                    "discountType": "FIX",
                    "discountValue": 250,
                    "applyDeliveryDiscount": false,
                    "bonusSkus": [
                        {
                            "variantId": "1042",
                            "quantity": 1
                        }
                    ],
                    "maxNumberOfUse": 0,
                    "requiredSkus": [
                        {
                            "variantId": "1042",
                            "quantity": 1
                        }
                    ]
                },
      			{
					"type": "MULTI",
				    "anyOfSkus": [ //true, если пристутствует хотя бы 1 товар из списка (sku1 || sku2 || sku3)
                        {
                            "variantId": "1042",
                            "quantity": 1
                        },
                        {
                            "variantId": "1043",
                            "quantity": 1
                        }
                    ],
				    "applyDeliveryDiscount": false,	//Применять ли скидку на доставку
				    "applyDiscount": true,	//Применять ли скидку на товары
                  	"fullAddress": "Москва" //В этом поле хранится текстовый адрес для отображения в ЛК
				    "areaFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
				    "bonusSkus": [ 
                        {
                            "variantId": "1042",
                            "quantity": 1
                        }
                    ],
				    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
				    "deliveryCodes": [	//Коды служб доставки
				        "GLOBAL_DELIVERY"
				    ],
				    "deliveryDiscountType": "PERCENT", //FIX
				    "deliveryDiscountValue": 100,
				    "discountType": "PERCENT",
				    "discountValue": 13,
				    "fromDate": "2018-10-08 16:21:57",	//Дата, с которой действует промокод
				    "fromSum": 5000,	//Сумма, с которой действует промокод
				    "mandatory": false, //Обязательность условия. В случае MULTI не проверяется
				    "maxNumberOfUse": 100,	//Максимальное кол-во применений промокода
				    "minSkuCount": 2,	//Минимальное общее кол-во товаров в корзине 
                  	"maxSkuCount": 4	//Максимальное общее кол-во товаров в корзине 
				    "name": "",
				    "num": 6,
				    "paymentMethodCodes": [ //Коды способов оплаты
				        "online"
				    ],
				    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
				    "requiredSkus": [ //true, если пристутствуют все товары из списка  (sku1 && sku2 && sku3)
                        {
                            "variantId": "1042",
                            "quantity": 1
                        }
                    ],
				    "toDate": "2019-10-08 16:21:57", //Дата, до которой действует промокод
				    "toSum": -1,    //Сумма, с которой действует промокод. Отрицательное значение - без ограничений
				    "unwantedSkus": [ //true, если отсутствуют все товары из списка (!sku1 && !sku2 && !sku3)
                        {
                            "variantId": "1042",
                            "quantity": 1
                        }
                    ],
      				 "skusToApplyDiscount": [ //Товары, к которым примеяется скидка
                       {
                            "variantId": "1066",
                            "quantity": 1
                        }
                    ],
				}
            ],
      'useCount":100 //Счётчик использований
    }
]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div></div></div>#### **Пейджинация**

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

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

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

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

#### **Поиск по коду(неполное соответствие, регистронезависимый)**

параметр: codeSearch (часть наименования промокода , если передано, возвращается отфильтрованный список промокодов, аналогичный списку выше. Подробная информация по списку товаров также не возвращается).

например **/api/lite/settings/promocode?codeSearch=ET**

Поиск производится sql запросом вида: **code LIKE '%et%'**

Если параметр не задан(или пустой), возвращается полный список промокодов.

Пейджинация также есть.

#### **Поиск по коду(точное значение, регистронезависимый)**

параметр: code (наименование промокода , если передано, возвращается найденный промокод)

**например /api/lite/settings/promocode?code=LETO**

Возвращается всегда либо 1 промокод с подробными списками товаров (anyOfskus, bonusSkus, requiredSkus, unwantedSkus), либо ошибка <span style="color: #ff0000;">"Не найден промокод со значением: %сcode%"</span>

<span style="color: #000000;">Является приоритетным по отношению к параметру codeSearch. Если параметр code задан, поиск происходит только по его точному значению.</span>

**Положительный результат запроса:**

```JSON
{
   "success":true,
   "code":"leto20",
   "isActive":true,
   "useCount":241,
   "discountType":"FIX",
   "discountValue":0,
   "conditions":[
      {
         "type":"SKU_COMBINATION",
         "name":"Танк в подарок",
         "num":1,
         "mandatory":true,
         "unsuccessMessage":"В корзине отсутствует волшебный дрон.",
         "applyDiscount":true,
         "discountType":"FIX",
         "discountValue":399,
         "applyDeliveryDiscount":false,
         "bonusSkus":[
            {
               "variantId":"1041",
               "quantity":1,
               "product":{
                  "id":"1030",
                  "extId":"955-2",
                  "extId2":null,
                  "shortName":"волшебный дрон (синий)",
                  "description":"волшебный дрон (синий)",
                  "available":true,
                  "deleted":false,
                  "brandName":null,
                  "countryOfOrigin":null,
                  "tnvedCode":null,
                  "internationalDescription":null,
                  "additionalDescriptions":null,
                  "isBestseller":null,
                  "isNovelty":null,
                  "type":"SKU",
                  "vat":"NO_VAT",
                  "reviewScore":null,
                  "options":null,
                  "images":[
                     {
                        "success":true,
                        "url":"https://storage.yandexcloud.net/images-k2c/1ed9d2ee-1c3e-49cc-a798-2dfc93f30f79.jpg",
                        "id":"1ed9d2ee-1c3e-49cc-a798-2dfc93f30f79.jpg",
                        "pos":"0.000000000000000"
                     }
                  ],
                  "variants":[
                     {
                        "id":"1041",
                        "extId":"955-2",
                        "extId2":null,
                        "article":"",
                        "price":1390.00,
                        "oldPrice":null,
                        "stock":[
                           {
                              "warehouseCode":"8b57ff7a-e63f-ecf4-2adf-8cdb093cb2c3",
                              "stockTotal":553,
                              "stockAvailable":552,
                              "stockReserved":1
                           }
                        ],
                        "ordering":null,
                        "defaultImage":null,
                        "weight":300,
                        "dimensions":{
                           "height":15,
                           "width":16,
                           "depth":7
                        },
                        "barcodes":[
                           {
                              "value":"6900000138113",
                              "isDefault":false
                           },
                           {
                              "value":"6900000138129",
                              "isDefault":false
                           }
                        ],
                        "vat":"NO_VAT",
                        "type":"SKU",
                        "optionsUsed":null
                     }
                  ],
                  "collections":[
                     "1001"
                  ],
                  "attributes":null,
                  "collectionPos":null,
                  "anyPublicCollections":null
               }
            }
         ],
         "requiredSkus":[
            
         ],
         "anyOfSkus":[
            {
               "variantId":"1041",
               "quantity":1,
               "product":{
                  "id":"1030",
                  "extId":"955-2",
                  "extId2":null,
                  "shortName":"волшебный дрон (синий)",
                  "description":"волшебный дрон (синий)",
                  "available":true,
                  "deleted":false,
                  "brandName":null,
                  "countryOfOrigin":null,
                  "tnvedCode":null,
                  "internationalDescription":null,
                  "additionalDescriptions":null,
                  "isBestseller":null,
                  "isNovelty":null,
                  "type":"SKU",
                  "vat":"NO_VAT",
                  "reviewScore":null,
                  "options":null,
                  "images":[
                     {
                        "success":true,
                        "url":"https://storage.yandexcloud.net/images-k2c/1ed9d2ee-1c3e-49cc-a798-2dfc93f30f79.jpg",
                        "id":"1ed9d2ee-1c3e-49cc-a798-2dfc93f30f79.jpg",
                        "pos":"0.000000000000000"
                     }
                  ],
                  "variants":[
                     {
                        "id":"1041",
                        "extId":"955-2",
                        "extId2":null,
                        "article":"",
                        "price":1390.00,
                        "oldPrice":null,
                        "stock":[
                           {
                              "warehouseCode":"8b57ff7a-e63f-ecf4-2adf-8cdb093cb2c3",
                              "stockTotal":553,
                              "stockAvailable":552,
                              "stockReserved":1
                           }
                        ],
                        "ordering":null,
                        "defaultImage":null,
                        "weight":300,
                        "dimensions":{
                           "height":15,
                           "width":16,
                           "depth":7
                        },
                        "barcodes":[
                           {
                              "value":"6900000138113",
                              "isDefault":false
                           },
                           {
                              "value":"6900000138129",
                              "isDefault":false
                           }
                        ],
                        "vat":"NO_VAT",
                        "type":"SKU",
                        "optionsUsed":null
                     }
                  ],
                  "collections":[
                     "1001"
                  ],
                  "attributes":null,
                  "collectionPos":null,
                  "anyPublicCollections":null
               }
            },
            {
               "variantId":"1040",
               "quantity":1,
               "product":{
                  "id":"1029",
                  "extId":"955-1",
                  "extId2":null,
                  "shortName":"волшебный дрон (красный)",
                  "description":"волшебный дрон (красный)",
                  "available":true,
                  "deleted":false,
                  "brandName":null,
                  "countryOfOrigin":null,
                  "tnvedCode":null,
                  "internationalDescription":null,
                  "additionalDescriptions":null,
                  "isBestseller":null,
                  "isNovelty":null,
                  "type":"SKU",
                  "vat":"NO_VAT",
                  "reviewScore":null,
                  "options":null,
                  "images":[
                     {
                        "success":true,
                        "url":"https://storage.yandexcloud.net/images-k2c/99eec60a-a8a8-4393-9a72-0ea990e86114.jpg",
                        "id":"99eec60a-a8a8-4393-9a72-0ea990e86114.jpg",
                        "pos":"0.000000000000000"
                     }
                  ],
                  "variants":[
                     {
                        "id":"1040",
                        "extId":"955-1",
                        "extId2":null,
                        "article":"",
                        "price":1390.00,
                        "oldPrice":null,
                        "stock":[
                           {
                              "warehouseCode":"8b57ff7a-e63f-ecf4-2adf-8cdb093cb2c3",
                              "stockTotal":283,
                              "stockAvailable":283,
                              "stockReserved":0
                           }
                        ],
                        "ordering":null,
                        "defaultImage":null,
                        "weight":300,
                        "dimensions":{
                           "height":16,
                           "width":15,
                           "depth":7
                        },
                        "barcodes":[
                           {
                              "value":"6900000138120",
                              "isDefault":false
                           }
                        ],
                        "vat":"NO_VAT",
                        "type":"SKU",
                        "optionsUsed":null
                     }
                  ],
                  "collections":[
                     "1001"
                  ],
                  "attributes":null,
                  "collectionPos":null,
                  "anyPublicCollections":null
               }
            }
         ],
         "unwantedSkus":[
            
         ],
         "minSkuCount":1
      },
      {
         "type":"PAYMENT_METHOD",
         "name":"Способ оплаты",
         "num":2,
         "mandatory":true,
         "unsuccessMessage":"Промокод не применён. Способ оплаты не соответствует правилам акции",
         "applyDiscount":false,
         "applyDeliveryDiscount":false,
         "bonusSkus":[
            
         ],
         "requiredSkus":[
            
         ],
         "anyOfSkus":[
            
         ],
         "unwantedSkus":[
            
         ],
        "skusToApplyDiscount": [
        ],
         "paymentMethodCodes":[
            "online",
            "cod-card"
         ]
      }
   ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--1"><div><div><div></div></div></div></div>#### **Ошибка:**

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

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

### Создать/изменить промокод (/api/lite/settings/promocode)

/api/lite/settings/promocode

<div id="bkmrk--3"></div>Создать / изменить промокод.

Ключ для изменения - поле code - уникальное.

Регистр поля не имеет значения

все поля обязательны

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

```JSON
{
    "code": "leto",
    "isActive": true,
    "discountType": "PERCENT",
    "discountValue": 20,
    "conditions": [ //Условия действия (опционально). null для промокода без условий.
      		{
					"type": "MULTI",
				    "anyOfSkus": [ //true, если пристутствует хотя бы 1 товар из списка (sku1 || sku2 || sku3)
                        {
                            "variantId": "1042",
                            "quantity": 1
                        },
                        {
                            "variantId": "1043",
                            "quantity": 1
                        }
                    ],
				    "applyDeliveryDiscount": false,	//Применять ли скидку на доставку
				    "applyDiscount": true,	//Применять ли скидку на товары
                  	"fullAddress": "Москва" //В этом поле хранится текстовый адрес для отображения в ЛК
				    "areaFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
				    "bonusSkus": [ 
                        {
                            "variantId": "1042",
                            "quantity": 1
                        }
                    ],
				    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
				    "deliveryCodes": [	//Коды служб доставки
				        "GLOBAL_DELIVERY"
				    ],
				    "deliveryDiscountType": "PERCENT", //FIX
				    "deliveryDiscountValue": 100,
				    "discountType": "PERCENT",
				    "discountValue": 13,
				    "fromDate": "2018-10-08 16:21:57",	//Дата, с которой действует промокод
				    "fromSum": 5000,	//Сумма, с которой действует промокод
				    "mandatory": false, //Обязательность условия. В случае MULTI не проверяется
				    "maxNumberOfUse": 100,	//Максимальное кол-во применений промокода
				    "minSkuCount": 2,	//Минимальное общее кол-во товаров в корзине 
                  	"maxSkuCount": 4	//Максимальное общее кол-во товаров в корзине 
				    "name": "",
				    "num": 6,
				    "paymentMethodCodes": [ //Коды способов оплаты
				        "online"
				    ],
				    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
				    "requiredSkus": {   //Товары, каждый из которых должен присутствовать в заказе в заданном кол-ве (т1 и т2 и т3)
                "djburbanbackpack": 1
                  }
                  "anyOfSkus": { //Товары, хотя бы одни из которых должен присутствовать в заказе в заданном кол-ве (т1 || т2 || т3)
                      "1002": 2,
                      "1003": 1,
                      "1000": 1
                  },
                  "unwantedSkus": {   //Товары, присутствие хотя бы одного из которых в заданном кол-ве не подходит под условие (!т1 || !т2 || !т3)
                      "1005": 1
                  },
                  "bonusSkus": {  //Бонусные товары, добавляемые к заказу
                      "1000": 1
                  },
				    "toDate": "2019-10-08 16:21:57", //Дата, до которой действует промокод
				    "toSum": -1,    //Сумма, с которой действует промокод. Отрицательное значение - без ограничений
				   
      				 "skusToApplyDiscount": ["1066", "1067"], //Товары, к которым применяется скидка(например, скидка 20% только на товар 1066)
			},  
      		{
            "type": "SKU_COMBINATION",
            "name": "Рюкзак URBAN BACKPACK",
            "num": 0,
            "mandatory": true,
            "unsuccessMessage": "Промокод не применён. В корзине отстутствует товар: Рюкзак URBAN BACKPACK",
            "applyDiscount": true,
            "discountType": "FIX",
            "discountValue": 1500,
            "applyDeliveryDiscount": false,
            "maxNumberOfUse": 0,
            "requiredSkus": {   //Товары, каждый из которых должен присутствовать в заказе в заданном кол-ве (т1 и т2 и т3)
                "djburbanbackpack": 1
            }
            "anyOfSkus": { //Товары, хотя бы одни из которых должен присутствовать в заказе в заданном кол-ве (т1 || т2 || т3)
                "1002": 2,
                "1003": 1,
                "1000": 1
            },
            "unwantedSkus": {   //Товары, присутствие хотя бы одного из которых в заданном кол-ве не подходит под условие (!т1 || !т2 || !т3)
                "1005": 1
            },
            "bonusSkus": {  //Бонусные товары, добавляемые к заказу
                "1000": 1
            },
			"skusToApplyDiscount": ["1066", "1067"], //Товары, к которым применяется скидка(например, скидка 20% только на товар 1066)
            "minSkuCount" : 2   //Минимальное общее кол-во товаров, удовлетворяющих условию акции (сумма [товар • кол-во] всех позиций заказа)
        },
        {
            "type": "PAYMENT_METHOD",
            "name": "Обязательный способ оплаты",
            "num": 5,
            "mandatory": true,
            "unsuccessMessage": "Промокод действителен только по предоплате картой на сайте",
            "applyDiscount": false,
            "applyDeliveryDiscount": false,
            "maxNumberOfUse": 0,
            "paymentMethodCodes": [
                "online"
            ]
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--4"><div><div><div></div></div></div></div>#### **Результат запроса:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--5"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--6"><div><div><div></div></div></div></div>### Удалить промокод (/api/lite/settings/promocode)

/api/lite/settings/promocode

<div id="bkmrk--7"></div>Удаление одного промокода. Использовать параметр в url вида ?code=test

#### **Результат запроса:**

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

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

### Проверить действие промокода (публичный) (/api/lite/pub/promocode)

/api/lite/pub/promocode

<div id="bkmrk--9"></div>Проверка переданного промокода на активность

параметр: code

например /api/lie/pub/promocode?code=test

####  

#### **Положительный результат запроса:**

```JSON
{
    "success": true,
    "code": "test",
    "isActive": true,
    "discountType": "FIX",    //   FIX/PERCENT
    "discountValue": 13
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--10"><div><div><div></div></div></div></div>#### **Ошибка, если у промокода заданы условия:**

```JSON
{ 
   "success":false,
   "errors":[ 
      { 
         "code":1,
         "message":"У промокода заданы условия применения. Для валидации, воспользуйтесь методом /api/lite/pub/check-promocode-conditions/"
      }
   ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--11"><div><div><div></div></div></div></div>#### **Отрицательный результат запроса:**

```JSON
{
  "success": false,
  "errors": []
}
```

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

### Проверить действие промокода С УСЛОВИЯМИ (публичный)

/api/lite/pub/check-promocode-conditions

<div id="bkmrk--13"></div>Для валидации условий промокода, необходимо передать весь заказ целиком, с заполненным промокодом (аналогично /api/lite/pub/order)

####  

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--14"><div><div></div></div></div>```JSON
{
   "comment":"",
   "confirmStatus":"APPROVED",
   "paymentStatus":"NOT_PAID",
   "paymentMethodCode":"no-cod",
   "totalOrderSum":1590,
   "delivery":{
      "receiver":{
         "name":"",
         "phone":"",
         "alternativePhone":"",
         "email":"",
         "surname":"",
         "patronymic":""
      },
      "deliveryCode":"RUSSIAN_POST_TEMPOLINE",
      "timeFrom":"09:00",
      "timeTo":"20:00",
      "desiredDeliveryDate":null,
      "deliveryComment":"",
      "address":{
         "region":"Московская",
         "area":"Пушкинский",
         "city":"Пушкино",
         "settlement":null,
         "street":"",
         "house":"",
         "block":"",
         "building":"",
         "flat":"",
         "fullAddress":"",
         "zip":"",
         "regionFias":"29251dcf-00a1-4e34-98d4-5c47484a36d4",
         "areaFias":"2f88bc57-5096-4aee-bcfc-fe26d4dd3a26",
         "cityFias":"7f22cfa4-34fa-4fa0-bcb0-620cd8402cfa",
         "settlementFias":null,
         "country":"RU"
      },
      "pickupPointId":""
   },
   "items":[
      {
         "num":1,
         "id":"1000",
         "quantity":1,
         "variants":[
 
         ]
      },
      {
         "num":2,
         "id":"delivery"
      }
   ],
   "promocode":"CODE"
}
```

####  

#### **Результат запроса:**

```JSON
{ 
   "success":true,
   "code":"code",
   "isActive":true,
   "discountType":"FIX",
   "discountValue":836,
   "hasConditions":true,
   "deliveryDiscountValue":50, //Скидка на доставку в %
   "bonusSkus":{ 
      "1000":1  //Бонусные товары по промокоду в формате id : количество
   }
}
```

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

# /api/lite/settings/user_notification

### Сохранение настроек уведомлений

/api/lite/settings/user\_notification

Описание....

# /api/lite/settings/warehouses

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

<span style="color: #505050;">/api/lite/settings/warehouses</span>

Возвращает перечень складов аккаунта

operatorType: MANUAL/FULFILLMENT  
fulfillmentType: TEMPOLINE

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk-"><div><div><div></div></div></div></div>```JSON
{
    "success": true,
    "warehouses": [
        {
            "code": "c738ff57-424c-2a8c-aa47-5378a88dc7c9",
            "title": "Свой склад",
            "isDefault": true,
            "operatorType": "MANUAL",
            "fulfillmentType": null,
            "operationType": "STORAGE",
            "address": {
                "country": "Russia",
                "countryCode": "RU",
                "region": "Москва",
                "area": null,
                "city": "Москва",
                "settlement": null,
                "street": "Очаковская Б.",
                "house": "47А",
                "block": "1",
                "building": null,
                "flat": null,
                "fullAddress": "Москва, Очаковская Б., д 47А, к 1",
                "fullCity": null,
                "rawData": null,
                "zip": null,
                "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "areaFias": null,
                "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "settlementFias": null
            },
            "manager": {
                "name": "Не задано",
                "surname": "",
                "patronymic": "",
                "fullName": "Егор",
                "phone": "+79111111111",
                "rawPhone": "+7 (911) 111 11 11",
                "alternativePhone": "",
                "email": "easychshnurki@yandex.ru",
                "post": null,
                "personType": null
            }
        }
]
}
```

### Редактирование склада

<span style="color: #505050;">/api/lite/settings/warehouses</span>

На данном этапе реализовано только изменение имени склада ("title":"Свой склад"). [(задача 1669)](https://openproject.notasoft.ru/projects/cactus-core/work_packages/1669/activity)

склад ищется по GUID ("code":"418a1cb1-eb57-ecc8-8c8f-08efb978bd49").

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

```JSON
{
   "code":"418a1cb1-eb57-ecc8-8c8f-08efb978bd49",
   "title":"Свой склад",
   "isDefault":true,
   "operatorType":"MANUAL",
   "fulfillmentType":null,
   "fulfillmentSubType":null,
   "operationType":"STORAGE",
   "goodsCondition":"NORMAL",
   "parentCode":null,
   "address":{
      "country":"Россия",
      "countryCode":"RU",
      "region":"Москва",
      "area":null,
      "city":"Москва",
      "settlement":null,
      "street":"Проектируемый проезд № 1980",
      "house":"д. 4",
      "block":null,
      "building":null,
      "flat":null,
      "fullAddress":"Москва, Проектируемый проезд № 1980, д. 4",
      "fullCity":null,
      "rawData":null,
      "zip":null,
      "regionFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "areaFias":null,
      "cityFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
      "settlementFias":null
   },
   "manager":{
      "name":"Склада",
      "surname":"Менеджер",
      "patronymic":"",
      "fullName":"Менеджер склада",
      "phone":"+79011111111",
      "rawPhone":"+79011111111",
      "alternativePhone":"",
      "email":"778@q.qq",
      "post":null,
      "personType":null,
      "address":{
         "country":null,
         "countryCode":null,
         "region":null,
         "area":null,
         "city":null,
         "settlement":null,
         "street":null,
         "house":null,
         "block":null,
         "building":null,
         "flat":null,
         "fullAddress":null,
         "fullCity":null,
         "rawData":null,
         "zip":null,
         "regionFias":null,
         "areaFias":null,
         "cityFias":null,
         "settlementFias":null
      }
   }
}
```

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

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

<div id="bkmrk--0"><div><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>

# /api/lite/settings/price-types

### Получение перечня типов цен аккаунта

<span style="color: #505050;">/api/lite/settings/price-types</span>

<div id="bkmrk-"></div>Возвращает перечень типов цен

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

```JSON
{     
    "success": true,
    "priceTypes": [
        {
            "currency": "RUB",
            "name": "Розничная цена",
            "code": "Розничная цена",
            "isDefault": false
        },
        {
            "currency": "RUB",
            "name": "Цена со скидкой",
            "code": "Цена со скидкой",
            "isDefault": false
        },
        {
            "currency": "RUB",
            "name": "BERU",
            "code": "BERU",
            "isDefault": false
        },
        {
            "currency": "RUB",
            "name": "Цена до скидки BERU",
            "code": "Цена до скидки BERU",
            "isDefault": false
        },
        {
            "currency": "RUB",
            "name": "OZON",
            "code": "OZON",
            "isDefault": false
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>### Создание/редактирование типа цены(<span style="color: #505050;">/api/lite/settings/price-types</span>)

Создает / редактирует тип цены.

Ключевое поле - name

Для стандартные типов цен (Розничная цена, Цена до скидки) редактировать название и код нельзя.

<span style="color: #505050;">/api/lite/settings/price-types</span>

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--1"><div><div><div></div></div></div></div>```JSON
{    
"currency": "RUB",
"name": "Новая цена",
"code": "Новая цена",
"isDefault": false      
}
```

ответ

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

```JSON
{    
      "success": true,     
      "name": "Новая цена",
      "code": "Новая цена"     
}
```

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

# /api/lite/brief_report

### <span style="color: #000000;">Сводка по аккаунту</span> (/api/lite/brief\_report)

/api/lite/brief\_report

<div id="bkmrk-"></div>Сводка включает блоки статистики (весь функционал со стороны Кактуса взять готовый).

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://docs.kak2c.ru/download/thumbnails/23560524/image2019-1-11_19-47-21.png?version=1&modificationDate=1584366125171&api=v2)</span>

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://docs.kak2c.ru/download/attachments/23560524/image2019-1-11_19-47-34.png?version=1&modificationDate=1584366125158&api=v2)</span>

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://docs.kak2c.ru/download/attachments/23560524/image2019-1-11_19-47-52.png?version=1&modificationDate=1584366125142&api=v2)</span>

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://docs.kak2c.ru/download/attachments/23560524/image2019-1-11_19-48-5.png?version=1&modificationDate=1584366124924&api=v2)</span>

# /api/lite/settings/countries

### Получение списка стран

/api/lite/settings/countries

Метод возвращает список всех стран, поддерживаемых бэкендом

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

#### **успех:**

```JSON
{
    "success": true,
    "countries": [
        {
            "code": "RU",          
            "rusName": "Россия"
        },
        {
            "code": "BY",         
            "rusName": "Беларусь"
        },
      ....
      ]
}
```

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

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

# /api/lite/settings/payment/portmone

### Записать данные собственного аккаунта Portmone

/api/lite/settings/payment/portmone

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

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

```JSON
{
  "merchantId": "abcd",
  "payeeId": "abcd",
  "accountLogin": "login",
  "accountPassword": "password",
  "credentials":"credentials"
}
```

#### **Результат запроса:**

```JSON
{
  "success":true,
  "accountId": "abcd",
  "ipnUrl": "/portmone/result",  - основной адрес приема ipn уведомлений
}
```

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

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

# /api/lite/settings/email/templates

### Получение шаблона для email, которые можно настроить

/api/lite/settings/email/templates

Метод возвращает текст email в параметре body в кодировке Base64, а так же его тип и текущий язык письма.

#### **Параметры:**

- **<span style="color: #ff0000;">type</span> - обязательный, тип письма, указывать в верхнем регистре! На данный момент может принимать значения :**```
    <span style="color: #c4b300; font-weight: bold;">REGISTRATION_CUSTOMER</span>
    ```
    
    ```
    <span style="color: #c4b300; font-weight: bold;">PWDCHANGE_CUSTOMER</span>
    ```

Пример запроса /api/lite/settings/email/templates/?type=REGISTRATION\_CUSTOMER

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

#### **успех:**

<div data-lang="JSON" id="bkmrk-%7B-%22country%22%3A-%22ru%22%2C-%22"><textarea style="display: none;">{ "country": "RU", "body": "iAxMDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyIgd2lkdGg9IjE1OTUiPiA8L2E+PC9kaXY+CgkJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgoJCQkJCQkJCQkJCQkJCQkJCQk8L3R+Jm5ic3A7PC9wPg==", "type": "REGISTRATION\_CUSTOMER" }</textarea><div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1px; height: 1em; outline: currentcolor none medium;" tabindex="0" wrap="off"></textarea></div><div>```JSON
{<br></br>    "country": "RU",<br></br>    "body": "OiAxMDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyIgd2lkdGg9IjE1OTUiPiA8L2E+PC9kaXY+CgkJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgoJCQkJCQkJ+Jm5ic3A7PC9wPg==",<br></br>    "type": "REGISTRATION_CUSTOMER"<br></br>}
```

</div></div></div>#### **ошибка:** 

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

<div data-lang="JSON" id="bkmrk-"><textarea style="display: none;"></textarea><div><div><div></div></div></div></div>### Обновление текста письма

/api/lite/settings/email/templates

Метод обновляет тексты email

Тело запроса:

```JSON
{
    "country": "RU",
    "body": "MDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyIgd2lkdGg9IjE1OTUiPiA8L2E+PC9kaXY+CgkJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgoJCQkJCQkJCQkJwPg==",
    "type": "REGISTRATION_CUSTOMER"
}
```

- body - текст письма в Base64 закодированном виде
- type - тип письма для обновления данных, обязательный параметр. Указывается в верхнем регистре!
- country - параметр языка, игнорируется, он будет подставлен из настроек, изменять его нужно там же

#### **успех:**

<div data-lang="JSON" id="bkmrk-%7B-%22success%22%3A-true-%7D"><div data-lang="JSON"><div><div><div>```JSON
{
"success": true
}
```

</div></div></div></div></div>#### **ошибка:** 

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

</div><div><div></div></div></div></div></div>

# /api/lite/settings/email/templates/init

### Инициализация шаблонов по умолчанию

/api/lite/settings/email/order/init

Метод добавит шаблоны email на текущем языке для регистрации покупателя и восстановления пароля для покупателя из главных настроек. Если при вызове метода шаблоны уже существуют, они обновятся на дефолтные.

Нужен для существующих магазинов, чтобы проинициализировать шаблоны.

#### **успех:**

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

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

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

# /api/lite/settings/users/roles

/api/lite/settings/users/roles

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

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

```JSON
{
    "success": true,
    "roles": [
        {
            "id": "b37a0b62-0ec9-3984-8509-6ce33be54bf2",
            "name": "Администратор",
            "privileges": [
                "ADMIN"
            ],
            "users": [
                "test@test.ru",
                "test@test.ru-expert"
            ]
        },
        {
            "id": "597aa7c2-4da9-ed44-669a-9710e07d6d6c",
            "name": "Складская обработка",
            "privileges": [
                "ORDERS_READ",
                "ORDERS_WRITE",
                "PURCHASE_ORDERS_WRITE",
                "PURCHASE_ORDERS_READ"
            ],
            "users": []
        },
        {
            "id": "a84dcbb4-7fec-c55c-9761-be7a68057edb",
            "name": "Подтверждение заказа",
            "privileges": [
                "ORDERS_READ",
                "ORDERS_WRITE"
            ],
            "users": [
                "test@test.ru_callcenter"
            ]
        }
    ]
}
```

/api/lite/settings/users/roles

Обновляет или создает роль. Если указан id, то обновляет существующую роль, иначе создает новую

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

```JSON
{
    "id": "37a9dfae-c1b7-42a9-9db3-8e5015c6ae1e",
    "name": "Название роли",
    "privileges": ["DASHBOARD_DATA_READ"],
    "users": ["test-202-1@qqq.qq"]
}
```

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

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

/api/lite/settings/users/roles?id=9ad800a1-3eec-a1ea-988d-4e2c3e88e44f

Удаляет роль.

## Список возможных привилегий

DASHBOARD\_DATA\_READ  
PRODUCTS\_READ  
PRODUCTS\_WRITE  
ORDERS\_READ  
ORDERS\_WRITE  
PURCHASE\_ORDERS\_READ  
PURCHASE\_ORDERS\_WRITE  
SETTINGS\_READ  
SETTINGS\_WRITE  
SHOP\_TEMPLATE\_READ  
SHOP\_TEMPLATE\_WRITE  
ADMIN

# /api/lite/settings/users

/api/lite/settings/users

Метод возвращает пользователей, созданных для магазина.

Параметры:

query - поисковый запрос (по имени/фамилии/отчеству/логину/телефону);

size - количество результатов (по умолчанию 10).

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

```JSON
{
    "success": true,
    "users": [
        {
            "login": "test@test.ru",
          	"isSystemUser": true,
            "isRoot": true,
            "firstName": null,
            "lastName": null,
            "middleName": null,
            "phone": null,
            "roles": [
                {
                    "id": "b37a0b62-0ec9-3984-8509-6ce33be54bf2",
                    "name": "Администратор"
                }
            ]
        },
        {
            "login": "test@test.ru_callcenter",
          	"isSystemUser": true,
            "isRoot": false,
            "firstName": null,
            "lastName": null,
            "middleName": null,
            "phone": null,
            "roles": [
                {
                    "id": "a84dcbb4-7fec-c55c-9761-be7a68057edb",
                    "name": "Подтверждение заказа"
                }
            ]
        },
        {
            "login": "test@test.ru-expert",
          	"isSystemUser": true,
            "isRoot": false,
            "firstName": null,
            "lastName": null,
            "middleName": null,
            "phone": null,
            "roles": [
                {
                    "id": "b37a0b62-0ec9-3984-8509-6ce33be54bf2",
                    "name": "Администратор"
                }
            ]
        }
    ]
}
```

/api/lite/settings/users

Обновляет или создает пользователя. Если пользователь с указанным login существует, то обновляет его, иначе создает нового.

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

```JSON
{
    "login": "test@test.ru",
    "firstName": "Имя",
    "lastName": "Фамилия",
    "middleName": "Отчество",
    "phone": "+7 999 999 99 99",
    "password": "qqq222",
    "roles": ["a84dcbb4-7fec-c55c-9761-be7a68057edb"]
}
```

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

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

/api/lite/settings/users?login=test@test.ru

Удаляет пользователя

# /api/lite/settings/checkout/payment

### Получение настроек онлайн оплаты

/api/lite/settings/checkout/payment

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

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

```JSON
{
  	"merchantId": "111222",
    "accountSecret": "live_1234567890",
    "ipnUrl": "http://app.kak2c.ru/yandex/confirmPaid",
  	"additionalIpnFailUrl": null,  // только для Робокассы
  	"additionalIpnSuccessUrl": null, // только для Робокассы
}
```

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

# /api/lite/settings/checkout/delivery-region-settings

### Редактирование настроек регионов доставки

/api/lite/settings/checkout/delivery-region-settings

Обновление настроек регионов доставки

**orderSumMoreThan** - наценка/скидка применится только от суммы заказа свыше суммы параметра.

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

```JSON
{
    "commonSettings": [
        {
            "country": "ALL", // RU, SNG, OTHER
            "region": "ALL_REGIONS",
            "extraFeeFixValue": 100,
            "extraFeePercentValue": -50,          
            "orderSumMoreThan": 22000.00,
            "enabled": true,
            "tariffEnabled": true
        },
        {
            "country": "SNG",
            "region": "ALL_REGIONS",
            "extraFeeFixValue": 100,
            "extraFeePercentValue": 0,         
            "orderSumMoreThan": 22000.00,
            "enabled": true,
            "tariffEnabled": false
        },
         {
            "country": "RU",
            "region": "MOSCOW",
            "extraFeeFixValue": 100,
            "extraFeePercentValue": 0,         
            "orderSumMoreThan": 22000.00,
            "enabled": false,
            "tariffEnabled": true
        }
    ]
}
```

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

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

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

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

# /api/lite/settings/regions

### Получение списка регионов

/api/lite/settings/regions

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

```JSON
{
    "regions": [
        {
            "title": "Все регионы",
            "name": "ALL_REGIONS",
            "fias": "ALL_REGIONS"
        },
        {
            "title": "Республика Адыгея",
            "name": "ADYGEA_REPUBLIC",
            "fias": "d8327a56-80de-4df2-815c-4f6ab1224c50"
        },
        {
            "title": "Республика Алтай",
            "name": "ALTAI_REPUBLIC",
            "fias": "5c48611f-5de6-4771-9695-7e36a4e7529d"
        },
        ...
    ]
}
```

# /api/lite/settings/adAttachments

### Получение настроек допвложений

/api/lite/settings/adAttachments

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

```JSON
{
    "adAttachments": [
        {
            "comment": "При упаковке сложить вдвое",
            "deliveryInfoList": [
                "ca038ac9-b0b3-2a56-ed81-79332334f551"
            ],
            "id": "5cbce395-939e-1103-11b2-dead1fe6298f",
            "img": "https://storage.yandexcloud.net/images-k2c/882e0f85-d7a6-49bd-90af-d71ea3355168.jpg",
            "productId": "975616ae-106c-8fd9-ede1-35b0efb9e458",
            "quantity": 1,
            "shortName": "Допвложение. Буклет",
            "variantId": "2473"
        }
    ],
    "success": true
}
```

### Создание, Обновление настроек допвложений

/api/lite/settings/adAttachments

<span style="color: #172b4d;">Создает/обновляет настройки допвложений. </span>

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

```JSON
{
    "id": "5cbce395-939e-1103-11b2-dead1fe6298f", //Если не указан, создаётся новая настройка
    "variantId":"2473",    
    "quantity": 2,
    "comment":"При упаковке сложить вдвое",
    "deliveryInfoList":["ca038ac9-b0b3-2a56-ed81-79332334f551"]
}
```

### Удаление настроек допвложений

/api/lite/settings/adAttachments

Удаление одной настройки допвложений. Использовать параметр в url вида ?id=5cbce395-939e-1103-11b2-dead1fe6298f

# Тарификация

# Комментарии к использованию методов Тарификации

1\. Получение тарифов доставки (от Кактуса), для показа в процессе чекаута

Для получения тарифов на доставку, необходимо передать данные:

- Связка ФИАС guid-ов (для РФ): регион, район, город, населенный пункт
- Вес
- Объемный вес

У нас также есть возможность отправки за границу (в любую страну) с автоматической растаможкой, для этого надо передать код страны, адрес на латинице (кроме СНГ), а также передать к товарам код тнвэд и описание на английском.

Для первого этапа, можно ограничиться доставкой по России, но заложить последующую международную доставку.

Для получения ФИАС кодов, можно воспользоваться сервисом Dadata, либо вашим внутренним решением, либо нашим подсказчиком:

[/api/prompter/location](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/apiprompterlocation "Тарификация")  
Запрос позволяет получить подсказки по городу, в ответ возвращаются данные по ФИАС, которые необходимо сохранить и использовать в дальнейшем для получения тарифов.

Для определения габаритов коробки (объемного веса), можно использовать метод:

[/api/lite/pub/dimensions-by-package](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/apilitepubdimensions-by-package)

Для этого необходимо передать вес и габариты каждого товара в заказе.

Запрос на получения тарифов [/api/dlv/tariffs](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/apidlvtariffs)

в запросе необходимо указать:

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

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

Для выбора точек ПВЗ на карте следует использовать [скрипт вызова карты](https://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/%D0%BA%D0%B0%D1%80%D1%82%D0%B0-%D0%BF%D0%B2%D0%B7 "Карта ПВЗ")

Если при получении тарифов пришли тарифы в которых указан   
type: "PVZ"  
нужно дать возможность выбрать ПВЗ на карте.

  
Полученный результат выбора ПВЗ (код ПВЗ), стоимость доставки, и данные о локации сохранить в заказе, для передачи в сервис “Кактус” для Фулфилмент обработки.  
  
Некоторые ПВЗ не поддерживают оплату при получении, для таких ПВЗ следует ограничить возможность выбора способа оплаты в заказе только предоплатой. В случае если paymentMethods возвращает хотя бы 1 способ оплаты - значит в этом пункте выдачи можно оплатить при получении, если список в paymentMethods вернулся пустой, значит в этот ПВЗ можно отправить только предоплаченный заказ.

По всем методам апи этого раздела - авторизация работает по параметру Domain в header запросов.

Домен для всех аккаунтов генерируется автоматически при регистрации и его можно узнать в личном кабинете  
[https://lk2-test.kak2c.ru/settings](https://lk2-test.kak2c.ru/settings) в поле ID аккаунта. Нужно в запросах передавать Domain = {"shop" + ID аккаунта}

# /api/prompter/address

### <span style="color: #000000;">Подсказка полного адреса </span>(/api/prompter/address)

/api/prompter/address

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80">(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div>Для запроса необходимо выполнить следующий запрос

/api/prompter/address?query=москва1

Важно: При формировании объекта адреса доставки заказа необходимо в поле *delivery.address.block* передавать значение из поля *block\_value.*

Поле *block* в ответе может содержать как номер корпуса, так и номер строения, в зависимости от значения поля *block\_type\_full* *("корпус"/"строение")*, поэтому для сохранения обратной совместимости и однозначной интерпретации значений полей были введены 2 новых поля: *block\_value (всегда содержит номер корпуса)* и *building (всегда содержит номер строения)*.

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

#### **успех:**

```JSON
{
    "success": true,
    "suggestions": [
        {
            "value": "г Москва, ул Озёрная, д 33",
            "unrestricted_value": "г Москва, ул Озёрная, д 33",
            "data": {
                "postal_code": "119361",
                "country": "Россия",
                "region_fias_id": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "region_kladr_id": "7700000000000",
                "region_with_type": "г Москва",
                "region_type": "г",
                "region_type_full": "город",
                "region": "Москва",
                "area_fias_id": null,
                "area_kladr_id": null,
                "area_with_type": null,
                "area_type": null,
                "area_type_full": null,
                "area": null,
                "city_fias_id": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "city_kladr_id": "7700000000000",
                "city_with_type": "г Москва",
                "city_type": "г",
                "city_type_full": "город",
                "city": "Москва",
                "city_area": null,
                "city_district": null,
                "city_district_fias_id": null,
                "city_district_kladr_id": null,
                "city_district_with_type": null,
                "city_district_type": null,
                "city_district_type_full": null,
                "settlement_fias_id": null,
                "settlement_kladr_id": null,
                "settlement_with_type": null,
                "settlement_type": null,
                "settlement_type_full": null,
                "settlement": null,
                "street_fias_id": "2de05e24-76f3-490f-9770-c0b923e0cf80",
                "street_kladr_id": "77000000000211100",
                "street_with_type": "ул Озёрная",
                "street_type": "ул",
                "street_type_full": "улица",
                "street": "Озёрная",
                "house_fias_id": "5e8674fb-14d4-4d24-9bf5-872d03ea5a36",
                "house_kladr_id": "7700000000021110080",
                "house_type": "д",
                "house_type_full": "дом",
                "house": "33",
                "block_type": null,
                "block_type_full": null,
                "block": null,
                "block_value": null,
                "building": null,
                "flat_type": null,
                "flat_type_full": null,
                "flat": null,
                "flat_area": null,
                "square_meter_price": null,
                "flat_price": null,
                "postal_box": null,
                "fias_id": "5e8674fb-14d4-4d24-9bf5-872d03ea5a36",
                "fias_level": "8",
                "kladr_id": "7700000000021110080",
                "capital_marker": "0",
                "okato": "45268579000",
                "oktmo": "45323000",
                "tax_office": "7729",
                "tax_office_legal": "7729",
                "timezone": null,
                "geo_lat": null,
                "geo_lon": null,
                "beltway_hit": null,
                "beltway_distance": null,
                "qc_geo": null,
                "qc_complete": null,
                "qc_house": null,
                "unparsed_parts": null,
                "qc": null,
                "history_values": null,
                "source": null
            }
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk-"><div><div><div></div></div></div></div>#### **ошибка:** 

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

# /api/prompter/street

### <span style="color: #000000;">Подсказка улицы для заданного населенного пункта</span>

<span style="color: #000000;"> /api/prompter/street</span>

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80"><div><div>(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div></div></div>Для запроса необходимо передать название населенного пункта из метода /prompter/location и введенные пользователем буквы искомой улицы (для магазинов в России):

/api/prompter/street?query=г москва Ленинс

Для магазинов в Украине необходимо передать значение settlement\_fias\_id из метода /prompter/location в параметре settlementFiasCode и введенную часть улицы в параметре streetQuery:

/api/prompter/street?settlementFiasCode=e718a680-4b33-11e4-ab6d-005056801329&amp;streetQuery=Незал

#### **параметры запроса:**

<table border="1" id="bkmrk-query-%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%2C-%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B0" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">query</td><td style="width: 50%;">Запрос, включающий название населенного пункта и введенную часть искомой улицы</td></tr><tr><td style="width: 50%;">city</td><td style="width: 50%;">Название города</td></tr><tr><td style="width: 50%;">cityFiasCode</td><td style="width: 50%;">Код города</td></tr><tr><td style="width: 50%;">settlement</td><td style="width: 50%;">Название населенного пункта</td></tr><tr><td style="width: 50%;">settlementFiasCode</td><td style="width: 50%;">Код населенного пункта</td></tr><tr><td style="width: 50%;">streetQuery</td><td style="width: 50%;">Введенная часть искомой улицы</td></tr></tbody></table>

В ответ возвращаются варианты улицы (использовать значение value)

#### **успех:**

```JSON
{
    "success": true,
    "suggestions": [
        {
            "value": "ул Ленинский проспект",
            "unrestricted_value": "г Москва, Ленинский проспект",
            "data": {
                .... прочие детали варианта
            }
        }
    ]
}
```

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

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

# /api/prompter/location

### <span style="color: #000000;">Подсказка населенного пункта</span>

<span style="color: #000000;">/api/prompter/location</span>

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80">(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div>Для запроса необходимо выполнить следующий запрос

/api/prompter/location?query=москва

опциональный параметр - include\_foreign=true/false - позволяет искать только по России или включая зарубежные страны (если поиск по зарубежью активирован для данной учетной записи)

опциональный параметр - country=FR - позволяет искать, например, только по Франции. Для зарубежных стран при этом подсказка будет выдаваться на латинице. Если параметр не передан, то поиск происходит только по России.

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

#### **успех:**

```JSON
{
    "success": true,
    "suggestions": [
        {
            "value": "г Магадан",
            "unrestricted_value": "Магаданская обл, г Магадан",
            "data": {
                "postal_code": "685000",
                "country": "Россия",
                "region_fias_id": "9c05e812-8679-4710-b8cb-5e8bd43cdf48",
                "region_kladr_id": "4900000000000",
                "region_with_type": "Магаданская обл",
                "region_type": "обл",
                "region_type_full": "область",
                "region": "Магаданская",
                "area_fias_id": null,
                "area_kladr_id": null,
                "area_with_type": null,
                "area_type": null,
                "area_type_full": null,
                "area": null,
                "city_fias_id": "cb8ae35a-93df-4133-b377-50f3698c8b5e",
                "city_kladr_id": "4900000100000",
                "city_with_type": "г Магадан",
                "city_type": "г",
                "city_type_full": "город",
                "city": "Магадан",
                "city_area": null,
                "city_district": null,
                "city_district_fias_id": null,
                "city_district_kladr_id": null,
                "city_district_with_type": null,
                "city_district_type": null,
                "city_district_type_full": null,
                "settlement_fias_id": null,
                "settlement_kladr_id": null,
                "settlement_with_type": null,
                "settlement_type": null,
                "settlement_type_full": null,
                "settlement": null,
                "street_fias_id": null,
                "street_kladr_id": null,
                "street_with_type": null,
                "street_type": null,
                "street_type_full": null,
                "street": null,
                "house_fias_id": null,
                "house_kladr_id": null,
                "house_type": null,
                "house_type_full": null,
                "house": null,
                "block_type": null,
                "block_type_full": null,
                "block": null,
                "flat_type": null,
                "flat_type_full": null,
                "flat": null,
                "flat_area": null,
                "square_meter_price": null,
                "flat_price": null,
                "postal_box": null,
                "fias_id": "cb8ae35a-93df-4133-b377-50f3698c8b5e",
                "fias_level": "4",
                "kladr_id": "4900000100000",
                "capital_marker": "2",
                "okato": "44401000000",
                "oktmo": "44701000001",
                "tax_office": "4900",
                "tax_office_legal": "4900",
                "timezone": null,
                "geo_lat": "59.5681332",
                "geo_lon": "150.8084956",
                "beltway_hit": null,
                "beltway_distance": null,
                "qc_geo": "4",
                "qc_complete": null,
                "qc_house": null,
                "unparsed_parts": null,
                "qc": null,
                "history_values": null,
                "source": "Магадан, Магаданская обл"
            }
        }
    ]
}
```

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

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

# /api/prompter/iplocation

### <span style="color: #000000;">Определение населенного пункта по IP адресу</span>

<span style="color: #000000;">/api/prompter/iplocation</span>

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80"><div><div>(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div></div></div>Для запроса необходимо выполнить следующий запрос

/api/prompter/iplocation?ip=<span style="color: #505050;">87.250.250.242</span>

<span style="color: #505050;">параметр ip - опциональный, если не задан, то определяется на сервере автоматически</span>

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

#### **успех:**

```JSON
{
    "success": true,
    "ip": "87.250.250.242", //ip из параметра
    "sourceIp": "87.250.250.242", //ip, определённый сервером
    "suggestions": [
        {
            "value": "г Москва",
            "unrestricted_value": "101000, г Москва",
            "data": {
                "postal_code": "101000",
                "country": "Россия",
                "countryCode": "RU",
                "region_fias_id": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "region_kladr_id": "7700000000000",
                "region_with_type": "г Москва",
                "region_type": "г",
                "region_type_full": "город",
                "region": "Москва",
                "area_fias_id": null,
                "area_kladr_id": null,
                "area_with_type": null,
                "area_type": null,
                "area_type_full": null,
                "area": null,
                "city_fias_id": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "city_kladr_id": "7700000000000",
                "city_with_type": "г Москва",
                "city_type": "г",
                "city_type_full": "город",
                "city": "Москва",
                "city_area": null,
                "city_district": null,
                "city_district_fias_id": null,
                "city_district_kladr_id": null,
                "city_district_with_type": null,
                "city_district_type": null,
                "city_district_type_full": null,
                "settlement_fias_id": null,
                "settlement_kladr_id": null,
                "settlement_with_type": null,
                "settlement_type": null,
                "settlement_type_full": null,
                "settlement": null,
                "street_fias_id": null,
                "street_kladr_id": null,
                "street_with_type": null,
                "street_type": null,
                "street_type_full": null,
                "street": null,
                "house_fias_id": null,
                "house_kladr_id": null,
                "house_type": null,
                "house_type_full": null,
                "house": null,
                "block_type": null,
                "block_type_full": null,
                "block": null,
                "flat_type": null,
                "flat_type_full": null,
                "flat": null,
                "flat_area": null,
                "square_meter_price": null,
                "flat_price": null,
                "postal_box": null,
                "fias_id": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "fias_level": "1",
                "kladr_id": "7700000000000",
                "capital_marker": "0",
                "okato": "45000000000",
                "oktmo": "45000000",
                "tax_office": "7700",
                "tax_office_legal": "7700",
                "timezone": null,
                "geo_lat": "55.7540471",
                "geo_lon": "37.620405",
                "beltway_hit": null,
                "beltway_distance": null,
                "qc_geo": "4",
                "qc_complete": null,
                "qc_house": null,
                "unparsed_parts": null,
                "qc": null,
                "history_values": null,
                "source": null
            }
        }
    ]
}
```

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

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

# /api/lite/pub/check_pickup_location

### <span style="color: #000000;">Проверка адреса сбора на возможность обслуживания (публичный)</span>

<span style="color: #000000;">/api/lite/pub/check\_pickup\_location</span>

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80">(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div>####  

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

<div id="bkmrk-"><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 58.1654%; padding: 0px;"><colgroup><col></col><col></col><col></col></colgroup><thead class="tableFloatingHeaderOriginal" style="position: static; margin-top: 0px; left: 325px; z-index: 3; width: 520px; top: 40px;"></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 confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 100.001%; padding: 0px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 33.3333%;">**Параметр<span style="color: #505050;">  
</span>**</td><td style="width: 33.7579%;">**Тип\\формат**</td><td style="width: 105.096%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;">regionFias

</td><td class="confluenceTd" style="width: 33.7579%;">string</td><td class="confluenceTd" style="width: 105.096%;">Код региона населенного пункта по базе ФИАС. Получается ранее из поля region\_fias\_id подсказки (см. метод /api/prompter/location).</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;"><span style="color: #505050;">areaFias</span>

</td><td class="confluenceTd" style="width: 33.7579%;">string</td><td class="confluenceTd" style="width: 105.096%;">Код области населенного пункта по базе ФИАС. Получается ранее из поля area\_fias\_id подсказки</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;"><span style="color: #505050;">cityFias</span>

</td><td class="confluenceTd" style="width: 33.7579%;">string</td><td class="confluenceTd" style="width: 105.096%;">Код города населенного пункта по базе ФИАС. Получается ранее из поля city\_fias\_id подсказки</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;"><span style="color: #505050;">settlementFias</span>

</td><td class="confluenceTd" style="width: 33.7579%;">string</td><td class="confluenceTd" style="width: 105.096%;">Код населенного пункта населенного пункта по базе ФИАС. Получается ранее из поля settlement\_fias\_id подсказки</td></tr><tr role="row"><td class="confluenceTd" style="width: 33.3333%;"><span style="color: #505050;">fullAddress</span>

</td><td class="confluenceTd" style="width: 33.7579%;">string</td><td class="confluenceTd" style="width: 105.096%;">Полное название населенного пункта по базе ФИАС. Получается ранее из поля unrestricted\_value подсказки</td></tr></tbody></table>

</div>####  

#### **Результат запроса**

<div id="bkmrk--0"><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 0%; padding: 0px; height: 5px;"><colgroup><col></col><col></col><col></col></colgroup><thead class="tableFloatingHeaderOriginal" style="position: fixed; margin-top: 0px; left: 325px; z-index: 3; width: 520px; top: 40px;"></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--0"><div><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 100.001%; padding: 0px;"><tbody aria-live="polite" aria-relevant="all"><tr><td style="width: 34.6913%;">**Параметр<span style="color: #505050;">  
</span>**</td><td style="width: 32.3999%;">**Тип\\формат**</td><td style="width: 105.096%;">**Описание**</td></tr><tr role="row"><td class="confluenceTd" style="width: 34.6913%;">pickup\_point\_available

</td><td class="confluenceTd" style="width: 32.3999%;">boolean</td><td class="confluenceTd" style="width: 105.096%;">Флаг доступности указанного в запросе населенного пункта для сбора заказов

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

</div></div>####  

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

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

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

# /api/lite/pub/products/dimensions

### Получение габаритов условного минимального упакованного места

 /api/lite/pub/products/dimensions

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80">(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div><div id="bkmrk-"></div>Получение габаритов минимальной условной коробки, в которую поместятся указанные товары с указанным количеством.

Не привязано к возможными габаритам типовых коробок или другим параметрам. Только математическое моделирование коробки с предпочтительным соотношением сторон 3:3:2

Поиск идет сначала по variantId, если он непустой, затем по variantExtId

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

```JSON
{
    "items":[
        {           
            "variantId":"1060",
            "variantExtId":"1060",
            "quantity": 22
        },
        {            
            "variantId":"1182",
          	"variantExtId":"1182",
            "quantity": 3
        }
    ]
     
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%83%D1%81%D0%BF%D0%B5%D1%88%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BE%D1%82%D0%B2"><div><div><div>**Пример успешного ответа**</div></div></div></div>```JSON
{
    "success": true,
    "weight": 223,
    "dimensions": {
        "height": 40,
        "width": 40,
        "depth": 20
    }
}
```

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

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Не найден id 555"
        }
    ],
    "weight": null,
    "dimensions": null
}
```

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

# /api/lite/pub/dimensions (deprecated)

### Получение габаритов упаковки товаров (deprecated)

новый метод: [/api/lite/pub/products/dimensions](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apilitepubproductsdimensions)

/api/lite/pub/dimensions

<div id="bkmrk-"></div>По перечню товаров получает примерные габариты и массу упакованного места для указанного перечня

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

```JSON
{
"items": [
            {               
                "id": "1002",
                "quantity": 1               
            },
            {               
                "id": "1003",
                "quantity": 3               
            }
         ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>#### **Успех:**

```JSON
{
    "success": true,
    "weight": 357,
      "dimensions": {
        "height": 12,
        "width": 20,
        "depth": 23
      }
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--1"><div><div><div></div></div></div></div>#### **Ошибка:**

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

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

# /api/lite/pub/dimensions-by-package

### Получение габаритов упаковки товаров по перечню параметров упаковок

/api/lite/pub/dimensions-by-package

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80">(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div><div id="bkmrk-"></div>По перечню упаковок получает примерные габариты и массу упакованного места

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

```JSON
{
"items": [
            {
                "weight": 357, // в граммах
                "quantity": 2, // в штуках
                "dimensions": {
                    "height": 12, // в сантиметрах
                    "width": 20,
                    "depth": 23
                }
            },
            {
                "weight": 680,
                "quantity": 1,
                "dimensions": {
                    "height": 3,
                    "width": 20,
                    "depth": 4
                }
            }
         ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>#### **Успех:**

```JSON
{
    "success": true,
    "weight": 357,
      "dimensions": {
        "height": 12,
        "width": 20,
        "depth": 23
      }
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--1"><div><div><div></div></div></div></div>#### **Ошибка:**

```JSON
{
  	"success": false,
	"errors": [
 		{
           "code": 0,
           "message": "Значение поля quantity во всех позициях должно быть > 0"
 		}
	]
}
```

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

# /api/dlv/tariffs

### Расчет тарифов (/api/dlv/tariffs)

/api/dlv/tariffs

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80"><div><div>(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div></div></div>Выполняет расчет доставки от пункта сбора заказов до указанного в виджете адреса доставки (в виде fias кодов) по указанным параметрам. Если sourceRegionFias, sourceAreaFias, sourceCityFias и sourcePostalCode не заданы - адрес отправления берётся **из настроек точки сбора**

fromTempoline - Заказ будет отправлен с нашего склада.

Для тарификации по России - нужны Фиас коды адреса получателя, для тарификации зарубежных адресов доставки - компоненты адреса Код страны, регион, город, населенный пункт.

<p class="callout info">При поиске тарифов для зарубежного города обязательно передавать поля country, region, city (также area, settlement, если есть).</p>

####  

#### **Пример**

```JSON
{
    "fromTempoline": false,
    "sourceRegionFias": null,
    "sourceAreaFias": null,
    "sourceCityFias": null,
    "sourceSettlementFias": null,
    "sourcePostalCode": null,
    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
    "areaFias": null,
    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
    "settlementFias": null,
    "postalCode": "123456",
    "weight": 1450,
    "insuranceSum": 500, // оценочная стоимость товара для расчета суммы страховки (чаще всего передают 100% от стоимости товара)
    "codSum": 500, // сумма наложенного платежа, которую курьерская компания возьмёт с покупателя, следует передавать стоимость доставки+ стоимость товаров в случае если оплата при получении.
    "dimensions": {
        "height": 10,
        "width": 8,
        "depth": 8
    },
    "deliveryServices": [
        "PARTIAL_DELIVERY",
        "TRYING"
    ], //опциональный список требующихся допуслуг: Частичный выкуп, Примерка, Погрузо-разгрузочные работы на руках (ПРР).
    "floor": 15 //Этаж подъёма для ПРР. В случае, если указан "LIFT_TO_DOOR_MANUAL" в deliveryServices, этаж нужно указывать обязательно
}
```

<div id="bkmrk-"><div><div data-hasbody="true" data-macro-name="code"><div><div><div></div></div></div></div></div></div>#### **Успех:**

```JSON
{
    "success": true,
    "tariffs": [
        {
            "minDeliveryTime": 5, // минимальный срок доставки после передачи заказа курьерской службе (в днях)
            "maxDeliveryTime": 6, // максимальный срок доставки после передачи заказа курьерской службе (в днях)
            "courier": "PickPoint", // наименование курьерской службы для покупателя
            "deliveryCode": "123456", // код тарифа 
          	"courierCode": "PICKPOINT",  // код курьерской службы (из справочника)
            "contractNumber": "443-12", // доп. код тарифа
            "type": "PVZ", // тип доставки (курьером или в ПВЗ)  // COURIER, RUSSIAN_POST, SELF_PICKUP
            "price": 817.1, // суммарная стоимость доставки для отправителя
            "codPrice": 0,  //стоимость агентского вознаграждения курьерской службы за перевод денежных средств за наложенный платёж
            "deliveryPrice": 742.1, // тариф за доставку в место назначение с учётом веса/габаритов
             "deliveryServices": [
                {
                    "price": 956.64,
                    "service": "BOX_NEEDED"
                },
                {
                    "price": 0,
                    "service": "TRYING"
                },
                {
                    "price": 0,
                    "service": "REVERSE"
                },
                {
                    "price": 0,
                    "service": "LIFT_TO_DOOR"
                },
                {
                    "price": 0,
                    "service": "LIFT_TO_DOOR_MANUAL"
                },
                {
                    "price": 40,
                    "service": "CHECK_CONTENT"
                }
            ], //доп.услуги доставки, если есть // могут включать PERSONALLY_IN_HANDS, REVERSE, CONTACTLESS_DELIVERY, DELIVERY_DATE_APPROVE, DANGEROUS_CARGO, WAITING_ON_ADDRESS, TEMPERATURE_REGIME, VERIFY, DAY_OFF_DELIVERY, PARTIAL_DELIVERY, LIFT_TO_DOOR, TRYING, CHECK_CONTENT, LIFT_TO_DOOR_MANUAL
            "insurancePrice": 75, // стоимость страховки для заказа у курьерской службы
          	"paymentMethods": ["COD_CARD", "ONLINE"]  // доступные способы оплаты
        },
        {
            "minDeliveryTime": 1,  
            "maxDeliveryTime": 1, 
            "courier": "Почта России",
            "courierCode": "RUSSIAN_POST_TEMPOLINE", 
            "deliveryCode": "RUSSIAN_POST_TEMPOLINE",
          	"contractNumber": "s-2333",
            "type": "RUSSIAN_POST",
            "price": 1736.6,
            "codPrice": 0,
            "deliveryPrice": 1733.6,
            "deliveryServices": [],
            "insurancePrice": 3,
          	"paymentMethods": ["COD_CARD"]
        }        
    ]
}
```

<div id="bkmrk--0"><div><div data-hasbody="true" data-macro-name="code"><div><div><div></div></div></div></div></div></div>#### **Ошибка:**

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

# /api/dlv/delivery_points

### Список постаматов / ПВЗ

/api/dlv/delivery\_points

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80"><div><div>(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div></div></div>Выполняет поиск постаматов/ПВЗ в указанном в виджете адресе города/населенного пункта (в виде fias кодов)

####  

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

<div id="bkmrk-"><div><div data-hasbody="true" data-macro-name="code"><div><div><div></div></div></div></div></div></div>```JSON
{
    "regionFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
    "areaFias": null,
    "cityFias":"0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
    "settlementFias": null,
  	"countryCode": "RU",
    "region": null, // Заполняется, если countryCode задан и не RU
    "area": null, // Заполняется, если countryCode задан и не RU
    "city": null, // Заполняется, если countryCode задан и не RU
    "settlement": null, // Заполняется, если countryCode задан и не RU
    "courierCode": "PickPoint", - опциональный параметр для запроса ПВЗ/постаматов только по данной КС. 
    "dimensions":{  - опционально фильтр по доступным габаритам в ПВЗ
      "height":50,   - в см
      "width":50,
      "depth":50
      },
	"weight": 6505,   - в граммах - опционально фильтр по доступной предельной массе груза в ПВЗ
	"codSum": 1234, - в рублях - опционально - сумма наложенного платежа, если ненулевая
	"deliveryServices":["PARTIAL_DELIVERY", "TRYING"] - опциональный список требущихся допуслуг: Частичный выкуп, Примерка.
}
```

####  

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

<div id="bkmrk--0"><div><div data-hasbody="true" data-macro-name="code"><div><div><div></div></div></div></div></div></div>```JSON
{
    "success": true,
    "list": [
        {
            "address": {
                "regionFias":"18133adf-90c2-438e-88c4-62c41656de70",
                "areaFias":"b502ae45-897e-4b6f-9776-6ff49740b537",
                "cityFias":"",
                "settlementFias":"",
                "country": "RU",
                "region": "Москва",
                "area": "",
                "city": "Москва",
                "settlement": "",
                "street": "Боровское ш.",
                "house": "20",
                "block": "",
                "building": "",
                "flat": "120",
                "fullAddress": "Москва, Боровское ш., 20, 120",
                "zip": ""
                }
            "metroStation": "Боровское шоссе",
            "latitude": "54.508904",
            "longitude": "36.262823",
            "code": "4005-002",
            "courier": "PickPoint",            
            "description": "Постамат расположен в супермаркете Фикс-Прайс,  вотдельно стоящем здании. Транспорт: Автобус №12, 61, 85, 97; Троллейбус №5, 12; Маршрутное такси №95, 97.            Остановка Библиотека им. Белинского.\nВойти в здание через центральный вход. Постамат и терминал расположен на 2 этаже в супермаркете Фикс-Прайс.",
            "maxSize": "43x23.4x34",
            "maxWeight": 1500,
            "courierCode": "PICKPOINT",
            "workTime": "Пн-Вс 10:00-19:00, Обед 10:00-19:00",
            "paymentMethods": ["COD_CARD", "ONLINE"],
  			"deliveryServices":["PARTIAL_DELIVERY", "TRYING"],
  			"type": "Postamat"
        }      
    ]
}
```

####  

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

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

# /api/dlv/delivery_point

### Данные по одному ПВЗ

/api/dlv/delivery\_point

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80"><div><div>(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div></div></div>Выполняет поиск одного ПВЗ по коду курьерской службы и коду ПВЗ

####  

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

```JSON
{
"courierCode": "PickPoint",
"pvzCode":"7302-015"
}
```

<div id="bkmrk-"><div><div data-hasbody="true" data-macro-name="code"><div><div><div></div></div></div></div></div></div>#### **Успех:**

```JSON
{
    "success": true,
    "list": [
        {
            "address": {
                "country": "Россия",
                "countryCode": "RU",
                "region": "Ульяновская",
                "area": null,
                "city": "Ульяновск",
                "settlement": null,
                "street": null,
                "house": null,
                "block": null,
                "building": null,
                "flat": null,
                "fullAddress": "Рябикова ул., д. 21, стр. 1",
                "fullCity": null,
                "rawData": null,
                "zip": "432045",
                "regionFias": "fee76045-fe22-43a4-ad58-ad99e903bd58",
                "areaFias": null,
                "cityFias": "bebfd75d-a0da-4bf9-8307-2e2c85eac463",
                "settlementFias": null
            },
            "metroStation": "",
            "latitude": "54.284595",
            "longitude": "48.30217",
            "code": "7302-015",
            "courier": "PickPoint",
            "description": "Пункт выдачи заказов расположен в ТЦ Вавилон. Транспорт: Маршрутное такси №4, 5, 43, 50, 52, 61, 71, 77, 81, 88, 96. Остановка Улица Станкостроителей.\nВойти в ТЦ Вавилон через центральный вход, на 2 этаже расположен пункт выдачи заказов.",
            "maxSize": "180",
            "maxWeight": 15,
            "workTime": "Пн-Пт 11:00-18:30, Сб 12:00-16:00",
            "paymentMethods": [
                "COD_CASH",
                "COD_CARD"
            ]
        }
    ]
}
```

<div id="bkmrk--0"><div><div data-hasbody="true" data-macro-name="code"><div><div><div></div></div></div></div></div></div>#### **Ошибка:**

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

# /api/lite/tariffs

### Расчет тарифов приватный

/api/lite/tariffs

<div id="bkmrk-"></div>Метод тарификации для вызова из ЛК (приватного доступа).

Сигнатура полностью идентична публичному методу api/dlv/tariffs

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

В этом методе доступно поле dlvPrice, содержащее исходную цену от DLV

# /api/lite/delivery_points

### Список постаматов / ПВЗ

/api/lite/delivery\_points

<div id="bkmrk-"><div><div></div></div></div>Метод списка ПВЗ для вызова из ЛК (приватного доступа).

Сигнатура полностью идентична публичному методу api/dlv/delivery\_points

# /api/lite/delivery_point

### Данные по одному ПВЗ

/api/lite/delivery\_point

<div id="bkmrk-"><div><div></div></div></div>Метод загрузки одного ПВЗ для вызова из ЛК (приватного доступа).

Сигнатура полностью идентична публичному методу api/dlv/delivery\_point

# /api/prompter/region

### <span style="color: #000000;">Подсказка улицы для заданного населенного пункта</span>

<span style="color: #000000;"> /api/prompter/region</span>

<div id="bkmrk-%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82-%D0%B0%D0%B2%D1%82%D0%BE%D1%80"><div><div>(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))</div></div></div>Для запроса необходимо передать введенные пользователем буквы искомого региона:

/api/prompter/region?query=Рязан

В ответ возвращаются варианты улицы (использовать значение value)

#### **успех:**

```JSON
{
    "success": true,
    "suggestions": [
        {
            "value": "Рязанская область",
            "unrestricted_value": "Рязанская область",
            "data": {
                .... прочие детали варианта
            }
        }
    ]
}
```

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

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

# /api/prompter/countries

### Список стран

/api/prompter/countries

(метод требует [авторизации по домену](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/avtorizatsiya-po-domenu-v-publichnykh-metodakh-api))

Выводит список стран с их кодами

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

```JSON
{
    "countries": [
        {
            "title": "Россия",
            "code": "RU"
        },
        {
            "title": "Беларусь",
            "code": "BY"
        },
        {
            "title": "Казахстан",
            "code": "KZ"
        },
        ...
    ]
}
```

# Описание методов (old)

# Описание методов (old)

### <span style="color: #000000;">Запрос данных аккаунта (публичный)</span>

<span style="color: #000000;">/api/lite/pub/account\_info</span>

Документация обновляется.

### <span style="color: #000000;">Получение информации по предзаказу (публичный)</span>

<span style="color: #000000;"> /api/lite/pub/order</span>

Документация обновляется.

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

/api/lite/offer

создает или обновляет (если задан sku.humanID) товарное предложение

####  

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

```JSON
{
     "sku": {    
                "id": "12345",  - опциональный параметр, только для обновления существующего предложения. значение генерируется при создании предложения.           
                "shortName": "краткое наименование",
                "fullName": "полное наименование",
                "article": "234234",
                "description": "описание"
            },  
     "price": 33.45,  
     "discountPrice": 20,
     "weight": 357,  - единица измерения: грамм
     "dimensions":{
                "height":12,  - единица измерения: сантиметр
                "width":20,  - единица измерения: сантиметр
                "depth":8  - единица измерения: сантиметр
                },
     "enabled":true,
     "pos": 123.456            
}
```

<div data-lang="JSON" id="bkmrk-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%22sku%22%3A-%7B%C2%A0%C2%A0%C2%A0%C2%A0-"><textarea style="display: none;">{ "sku": { "id": "12345", - опциональный параметр, только для обновления существующего предложения. значение генерируется при создании предложения. "shortName": "краткое наименование", "fullName": "полное наименование", "article": "234234", "description": "описание" }, "price": 33.45, "discountPrice": 20, "weight": 357, - единица измерения: грамм "dimensions":{ "height":12, - единица измерения: сантиметр "width":20, - единица измерения: сантиметр "depth":8 - единица измерения: сантиметр }, "enabled":true, "pos": 123.456 }</textarea><div><div></div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1px; height: 1em; outline: currentcolor none medium;" tabindex="0" wrap="off"></textarea>В ответ возвращается</div></div></div>#### **Успех:**

```JSON
{
"success": true,

"humanId": "12345"

}
```

<div data-lang="JSON" id="bkmrk-%7B-%22success%22%3A-true%2C-%22-0"><textarea style="display: none;">{ "success": true, "humanId": "12345" }</textarea></div>####  

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

/api/lite/offer/pos

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

###  

### Обновление позиции товарного предложения

/api/lite/offer/pos

<div id="bkmrk-"></div>Обновляет значение позиции для сортировки предложений в списке

####  

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

```JSON
{
  "id": "1002",
  "pos": 123.456
}
```

####  

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

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

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

### Создание картинки к товарному предложению

/api/lite/offer/image

<div id="bkmrk--3"></div>Загружает на сервер картинку и привязывает изображение к товару.

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

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

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

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

- Сохраняется оригинал картинки (но с ограничением в максимальное количество пикселей) - original
- Сохраняется обрезанное изображение 1х1 (ближе к центру) - cropper
- Сохраняется миниатюра обрезанного изображения - thumbnail

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

####  

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

```JSON
{
  "success": true,
  "image": {
    "orig": "https://img.kak2c.ru/g/d/123abc.jpg",
    "crop": "https://img.kak2c.ru/g/d/123abc_crop.jpg",
    "prev": "https://img.kak2c.ru/g/d/123abc_p.jpg",
    "id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
    "pos": 123.456,
    "crop_p": [
      10,
      500,
      400,
      150
    ]
  }
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--4"><div><div><div></div></div></div></div>Параметры:

- orig - прямая ссылка на оригинал картинки
- crop - прямая ссылка на кропнутое изображение
- prev - прямая ссылка
- id - идентификатор картинки (для последующего обновления или удаления)
- crop\_p - координаты кропнутого изображения относительно оригинала (topLeftX, topLeftY, bottomRightX, bottomRightY)

####  

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

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

### Загрузка картинки без привязки к предложению

 /api/lite/image

<div id="bkmrk--5"></div>Загружает на сервер картинку в исходных размерах без сжатия.

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

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

- upfile - картинка

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

- Сохраняется оригинал картинки (без ограничений) - original

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

####  

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

```JSON
{
  "success": true,
  "orig": "https://img.kak2c.ru/g/d/123abc.jpg"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--6"><div><div><div></div></div></div></div>Параметры:

- orig - прямая ссылка на оригинал картинки

####  

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

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

### Обновление кропа картинки к товарному предложению

/api/lite/offer/image/crop

<div id="bkmrk--7"></div>Обновляет параметры кропа (обрезки) у картинки товарного предложения.

####  

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

```JSON
{
  "id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
  "crop_p": [
    10,
    500,
    400,
    150
  ]
}
```

В ответ возвращается результат операции, id обновленной картинки и новый url на кропнутое изображение и превью.

####  

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

```JSON
{
  "success": true,
  "id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF",
  "crop": "https://img.kak2c.ru/g/d/123abc_cropped.jpg",
  "prev": "https://img.kak2c.ru/g/d/123abc_preview.jpg"
}
```

####  

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--8"><div><div><div></div></div></div></div>### Удаление картинки у товарного предложения

/api/lite/offer/image

<div id="bkmrk--9"></div>Для удаления метки, выполняется следующий POST запрос с указанием идентификатора картинки.

####  

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

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

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

####  

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

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

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

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--12"><div><div><div></div></div></div></div>### Обновление позиции картинки

/api/lite/offer/image/pos

<div id="bkmrk--13"></div>Обновляет значение позиции для сортировки картинок в списке

####  

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--14"><div><div><div></div></div></div></div>####   
**Ответ:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk--16"><div><div><div></div></div></div></div>```JSON
{
  "success": true
}
```

####  

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--17"><div><div><div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

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

/api/lite/order

<div id="bkmrk--20"></div>Создает новый заказ в системе Кактус или обновляет существующий.

Доставка выгружается как позиция в items (id = "delivery").

Цены позиций задаются в запросе.

####  

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

```JSON
{
    "order": {
        "comment": "",
        "confirmStatus": "NEED_CONFIRM",
        "paymentStatus": "NOT_PAID",
        "paymentMethodCode": "online",
        "totalOrderSum": 1212,
        "delivery": {
            "receiver": {
                "name": "Олег",
                "surname": "Коробов",
                "patronymic": "",
                "phone": "9153112255",
                "alternativePhone": "",
                "email": "korobov.oleg@gmail.com"
            },
            "deliveryCode": "courier",
            "timeFrom": "10:30",
            "timeTo": "20:00",
            "desiredDeliveryDate": "2018-10-18",
            "deliveryComment": "",
            "address": {
                "regionFias":"18133adf-90c2-438e-88c4-62c41656de70",
                "areaFias":"b502ae45-897e-4b6f-9776-6ff49740b537",
                "cityFias":"",
                "settlementFias":"",
                "country": "RU",
                "region": "Москва",
                "area": "",
                "city": "Москва",
                "settlement": "",
                "street": "Боровское ш.",
                "house": "20",
                "block": "",
                "building": "",
                "flat": "120",
                "fullAddress": "",
                "zip": ""
            },
            "pickupPointId": ""
        },
        "items": [
            {
                "num":1,
                "id": "48488",
                "quantity": 1,
                "price": 1212
            }
        ]
    }
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--21"><div><div><div></div></div></div></div>В ответ возвращается

#### **успех:**

```JSON
{
"success": true,

"orderId": "12345"

}
```

####  

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

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

###  

### Заказ → обновление контактной информации получателя

/api/lite/order/receiver

<div id="bkmrk--23"></div>Возможность обновить только контактную информацию

####  

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

```JSON
{
     "orderId": "1234", 
     "name": "Олег",
     "surname": "Коробов",
     "patronymic": "",
     "phone": "9153112255",
     "alternativePhone": "",
     "email": "korobov.oleg@gmail.com"
            
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--25"><div><div><div></div></div></div></div>В ответ возвращается

#### **успех:**

```JSON
{
"success": true

}
```

####  

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

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

###  

### Заказ → обновление товарной части

/api/lite/order/items

<div id="bkmrk--26"></div>Возможность обновить только табличную часть заказа

Необходимо в запросе передать новое желаемое состояние табличной части в виде непустого перечня позиций

####  

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

```JSON
{
    "orderId": "1234",  
    "items": [
            {
                "num":1,
                "id": "48488",
                "quantity": 1,
                "price": 1212
            }
        ]
            
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--27"><div><div><div></div></div></div></div>В ответ возвращается

#### **успех:**

```JSON
{
"success": true

}
```

####  

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

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

### Заказ → отменить

 /api/lite/order/cancelled

<div id="bkmrk--29"></div>Производит отмену заказа.

####  

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

```JSON
{ 
"orderId":"1029" 
}
```

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

#### **успех:**

```JSON
{
"success": true

}
```

####  

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

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

### <span style="color: #ff0000;">Заказ → пометить оплаченным получателем</span>

/api/lite/order/payment

<div id="bkmrk--31"></div>Ставит статус оплаты покупателем.

####  

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

```JSON
{ 
"orderId":"1029" 
}
```

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

#### **успех:**

```JSON
{
"success": true

}
```

####  

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

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

### <span style="color: #ff0000;">Заказ → снять пометку оплаты заказа получателем</span>

<span style="color: #000000;">/api/lite/order/payment</span>

<div id="bkmrk--32"></div>Снимает статус оплаты покупателем.

####  

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

```JSON
{ 
"orderId":"1029" 
}
```

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

#### **успех:**

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

####  

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

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

####  

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

Документация обновляется.

<div data-hasbody="false" data-macro-name="code" id="bkmrk--33"><div></div><div></div><div><div><div></div></div></div></div>### Заказ → получить акт приема передачи

/api/lite/order/takeout\_list

<div id="bkmrk--34"></div>Получение печатной формы в pdf для указанного списка заказов

Печатная форма возвращается в формате base64.

####  

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

```JSON
{
  "orders": ["1001", "1002", "1003"]
}
```

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--36"><div><div><div></div></div></div></div>```JSON
{
  "success": true,  
  "content" : "base64data"
     
}
```

####  

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

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

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

### Оплатить доставку заказа/заказов

 /api/lite/order\_delivery\_payment

<div id="bkmrk--38"></div>Производит списание средств за доставку указанных заказов.

После успешного списания - создает заявку на сбор курьером на указанную дату. Если заявка уже есть - новая не создается. Если на указанную дату заявку оформить уже нельзя (опоздал) - автоматом создается заявка на ближайшую возможную дату.

```JSON
{
  "orders": ["1005", "1008"],
  "date": "2018-01-01", - обязательные для всех способов отгрузки кроме Своих курьеров
  "timeFrom": "09:00", - см выше
  "timeTo": "14:00", - см выше
  "courierId": "aa23s" - обязательный только для способа отгрузки Свои курьеры  
}
```

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

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

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

```JSON
{
  "success": true,
  "date": "2018-01-01",
  "timeFrom": "09:00",
  "timeTo": "14:00"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--40"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--42"><div><div><div></div></div></div></div>### Отменить оплату доставки заказа/заказов

/api/lite/order\_delivery\_payment

<div id="bkmrk--43"></div>Пока не реализуем этот метод.

Вариант:

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

### Оформить вызов курьера

/api/lite/courier\_call

<div id="bkmrk--44"></div>Создает заявку на сбор курьером на указанную дату. Если заявка уже есть - возвращает ошибку, что заявка уже есть.

####  

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

```JSON
{
  "date": "2018-01-01",
  "timeFrom": "09:00",
  "timeTo": "14:00"
}
```

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

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

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

####  

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

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

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

### Отменить вызов курьера

/api/lite/courier\_call

<div id="bkmrk--47"></div>Отменяет заявку на вызов курьера, если заявка на эту дату и интервал есть. если заявки нет - возвращает ошибку.

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

```JSON
{
  "date": "2018-01-01",
  "timeFrom": "09:00",
  "timeTo": "14:00"
}
```

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

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--49"><div><div><div></div></div></div></div>#### **Ошибка:**

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

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

### Получить список транзакций

/api/lite/transaction

<div id="bkmrk--51"></div>Получение списка транзакций баланса аккаунта.

####  

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

```JSON
{
  "transactions":[
        {
            "date": "2019-03-01 17:53:23.538",
            "sum": 1500.50,
            "documentId": "1003",
            "documentType": "PAYMENT",
            "description": "Пополнение баланса по счету", // из справочника         
            "orderId": null
        },
        {
            "date": "2019-03-02 19:57:23.538",
            "sum": -265.57,
            "documentId": "1050",
            "documentType": "ORDER_PAYMENT_DOC_FACT",
            "description": "Оплата доставки заказа 1024 (доставка)", // в скобках - справочник статей расхода: доставка, страховка, наложенный платеж           
            "orderId": "1024"
        }
    ]
}
```

####  

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

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

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

### Получить список транзакций по заказу

 /api/lite/order/transaction

<div id="bkmrk--53"></div>Получение списка транзакций баланса оплаты доставки и услуг указанного заказа

запрос должен содержать параметр orderId с номером заказа, например

?orderId=1020

####  

#### **Результат запроса:**

```JSON
{
  "transactions":[  
        {
            "date": "2019-03-02 19:57:23.538",
            "sum": -265.57,
            "documentId": "1050",
            "documentType": "ORDER_EXPENSE_PAYMENT_DOC",
            "description": "Списание по расходам на оплату услуг заказа 1020 (доставка)",
            "orderId": "1020"
        },  
        {
            "date": "2019-03-02 19:57:23.538",
            "sum": 265.57,
            "documentId": "1052",
            "documentType": "ORDER_PAYMENT_DOC_FACT",
            "description": "Оплата доставки заказа 1020 (доставка)",            
            "orderId": "1020"
        }
         
    ]
}
```

####  

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

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

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

### Создать счет на оплату и получить информацию для оплаты

/api/lite/payment

####  

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

```JSON
{
    "sum" : "222"
}
```

####  

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

```JSON
{
    "success": true,
    "errors": [],
    "redirectData": {
        "data": {
            "entries": [
                {
                    "num": 0,
                    "name": "MERCHANT",
                    "value": "kaktwocr"
                },
                {
                    "num": 1,
                    "name": "ORDER_REF",
                    "value": "25567175-8d84-e371-90fa-8a6e86a69aa4"
                },
                {
                    "num": 2,
                    "name": "ORDER_DATE",
                    "value": "2019-03-11 17:09:35"
                },
                {
                    "num": 3,
                    "name": "ORDER_PNAME[]",
                    "value": "Пополнение баланса аккаунта №6419855"
                },
                {
                    "num": 4,
                    "name": "ORDER_PCODE[]",
                    "value": "balance"
                },
                {
                    "num": 5,
                    "name": "ORDER_PRICE[]",
                    "value": "222.00"
                },
                {
                    "num": 6,
                    "name": "ORDER_QTY[]",
                    "value": "1"
                },
                {
                    "num": 7,
                    "name": "ORDER_VAT[]",
                    "value": "0"
                },
                {
                    "num": 8,
                    "name": "PRICES_CURRENCY",
                    "value": "RUB"
                },
                {
                    "num": 9,
                    "name": "DESTINATION_CITY",
                    "value": ""
                },
                {
                    "num": 10,
                    "name": "DESTINATION_STATE",
                    "value": ""
                },
                {
                    "num": 11,
                    "name": "DESTINATION_COUNTRY",
                    "value": ""
                },
                {
                    "num": 12,
                    "name": "PAY_METHOD",
                    "value": "CCVISAMC"
                },
                {
                    "num": 13,
                    "name": "ORDER_PRICE_TYPE[]",
                    "value": "GROSS"
                },
                {
                    "num": 14,
                    "name": "ORDER_HASH",
                    "value": "6fe466d056fcc82836a861c322070381"
                },
                {
                    "num": 15,
                    "name": "BILL_FNAME",
                    "value": "Петр"
                },
                {
                    "num": 16,
                    "name": "BILL_LNAME",
                    "value": "Петров"
                },
                {
                    "num": 17,
                    "name": "BILL_EMAIL",
                    "value": "abc3@abc.ru"
                },
                {
                    "num": 18,
                    "name": "BILL_PHONE",
                    "value": "111111"
                },
                {
                    "num": 19,
                    "name": "BILL_COUNTRYCODE",
                    "value": "RU"
                },
                {
                    "num": 20,
                    "name": "BACK_REF",
                    "value": ""
                },
                {
                    "num": 21,
                    "name": "LANGUAGE",
                    "value": "RU"
                },
                {
                    "num": 22,
                    "name": "CURRENCY",
                    "value": "RUB"
                }
            ],
            "url": "https://sandbox.payu.ru/order/lu.php"
        },
        "paymentProvider": "PAYU"
    }
}
```

Для работы в песочнице PayU использовать карты из [https://secure.payu.ru/docs/integration-sandbox/ru/](https://secure.payu.ru/docs/integration-sandbox/ru/)

####  

#### **Пример формы, которую нужно сгенерировать на клиенте:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk--55"><div><div><div></div></div></div></div>```HTML
<html>
    <head></head>
    <body>
        <form name="example" method="POST" action="https://sandbox.payu.ru/order/lu.php">
            <input type="hidden" name="MERCHANT" value="kaktwocr">
            <input type="hidden" name="ORDER_REF" value="25567175-8d84-e371-90fa-8a6e86a69aa4">
            <input type="hidden" name="ORDER_DATE" value="2019-03-11 17:09:35">
            <input type="hidden" name="ORDER_PNAME[]" value="Пополнение баланса аккаунта №6419855">
            <input type="hidden" name="ORDER_PCODE[]" value="balance">
            <input type="hidden" name="ORDER_PRICE[]" value="222.00">
            <input type="hidden" name="ORDER_QTY[]" value="1">
            <input type="hidden" name="ORDER_VAT[]" value="0">
            <input type="hidden" name="PRICES_CURRENCY" value="RUB">
            <input type="hidden" name="DESTINATION_CITY" value="">
            <input type="hidden" name="DESTINATION_STATE" value="">
            <input type="hidden" name="DESTINATION_COUNTRY" value="">
            <input type="hidden" name="PAY_METHOD" value="CCVISAMC">
            <input type="hidden" name="ORDER_PRICE_TYPE[]" value="GROSS">
            <input type="hidden" name="ORDER_HASH" value="6fe466d056fcc82836a861c322070381">
            <input type="hidden" name="BILL_FNAME" value="Петр">
            <input type="hidden" name="BILL_LNAME" value="Петров">
            <input type="hidden" name="BILL_EMAIL" value="abc3@abc.ru">
            <input type="hidden" name="BILL_PHONE" value="111111">
            <input type="hidden" name="BILL_COUNTRYCODE" value="RU">
            <input type="hidden" name="BACK_REF" value="">
            <input type="hidden" name="LANGUAGE" value="RU">
            <input type="hidden" name="CURRENCY" value="RUB">
            <button type="submit">Оплатить</button>
        </form>
    </body>
</html>
```

### Получить список своих курьеров

/api/lite/own\_courier

<div id="bkmrk--56"></div>Получение списка своих курьеров.

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

```JSON
{
  "couriers":[
        {
            "id": "123456abc",
            "fullName": "Василий",
            "phone": "+7(901)1122121"
        },
        {
            "id": "123457abc",
            "fullName": "Петр",
            "phone": "+7(901)1122122"
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--57"><div><div><div></div></div></div></div>#### **Ошибка:**

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

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

### Создать/обновить своего курьера

/api/lite/own\_courier

<div id="bkmrk--59"></div>Создание или обновление (если задан id) своего курьера

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

```JSON
{
  "id": "123456abc",
  "fullName": "Василий",
  "phone": "+7(901)1122121"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--61"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--63"><div><div><div></div></div></div></div>### Удаление курьера

/api/lite/<span style="letter-spacing: 0.0px;">own\_courier</span>

<div id="bkmrk--64"></div>Для удаления курьера, выполняется следующий POST запрос с указанием идентификатора курьера.

####  

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--65"><div><div><div></div></div></div></div>  
В ответ возвращается результат операции

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--66"><div><div><div></div></div></div></div>#### **В случае ошибки:**

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

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

### Заказ - отметить доставку

/api/lite/delivery\_result

<div id="bkmrk--68"></div>Для доставки своими курьерами - простановка результата доставки: доставлен/отказ/утеря.

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

```JSON
{
  "orderId": "123456abc",
  "result": "DELIVERED", //LOST,RETURNING,RETURNED
  "comment": "abcd"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--69"><div><div><div></div></div></div></div>#### **Ошибка:**

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

####  

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

Документация обновляется.

####  

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

Документация обновляется.

<div data-hasbody="false" data-macro-name="code" id="bkmrk--70"><div><div><div></div></div></div></div>###  

### Записать данные собственного аккаунта Робокасса

/api/lite/settings/payment/robokassa

<div id="bkmrk--71"></div>Записать данные аккаунта робокасса для прямого зачисления оплат заказов покупателей.

####  

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

```JSON
{
  "merchantId": "abcd",
  "accountSecret": "abcd",
  "accountSecret2": "abcd"
}
```

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

#### **Результат запроса:** 

```JSON
{
  "success":true,
  "accountId": "abcd",
  "resultUrl": "abcd",  - основной адрес приема ipn уведомлений (только оплаченные)
  "failUrl": "abcd", - адрес приема ipn уведомлений (только неоплаченные/отказ покупателя)
  "successesUrl": "abcd"  - адрес редиректа в магазин после оплаты  
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--73"><div><div><div></div></div></div></div>#### **Ошибка:**

Документация обновляется.

###  

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

 /api/lite/pub/settings/template

<div id="bkmrk--74"></div>Получение макета витрины магазина аккаунта, в формате, предназначенном для ui витрины

#### **Результат запроса:** 

```JSON
{
  "templates" : [
        {
            "id": "123456",
            "isDefault": true,
            "htmlContent": "<html>...."
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--75"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--76"><div><div><div></div></div></div></div>### Получить макеты витрин

/api/lite/settings/template

<div id="bkmrk--77"></div>Получение перечня макетов витрин магазинов аккаунта, в формате, предназначенном для ui конструктора витрины

Для получения одного макета по id - использовать параметр в url вида ?id=123456

#### **Результат запроса:** 

```JSON
{
  "templates" : [
        {
            "id": "123456",
            "isDefault": true,
            "content": "contentData...."
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--78"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--79"><div><div><div></div></div></div></div>### Создать/обновить макет витрины

/api/lite/settings/template

<div id="bkmrk--80"></div>Создание/обновление данных о макете витрины в формате для ui конструтора

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

```JSON
{       
        "id": "123456",  // при наличии параметра - обновляет существующий макет по его id
        "isDefault": true,
        "content": "contentData....",
        "htmlContent": "html content Data"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--81"><div><div><div></div></div></div></div>#### **Результат запроса:** 

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--82"><div><div><div></div></div></div></div>#### **Ошибка:**

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

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

### Удалить макет витрины

/api/lite/settings/template

<div id="bkmrk--84"></div><span style="letter-spacing: 0.0px;">Удаление одного макета. Использовать параметр в url вида ?id=123456</span>

#### **Результат запроса:** 

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--85"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--86"><div><div><div></div></div></div></div>### Получить общие макеты витрин

/api/lite/settings/template/general

<div id="bkmrk--87"></div>Получение перечня стандартных макетов витрин магазинов в формате, предназначенном для ui конструктора витрины

Для получения одного макета по id - использовать параметр в url вида ?id=123456

#### **Результат запроса:** 

```JSON
{
  "templates" : [
        {
            "id": "123456",
            "isDefault": true,
            "content": "contentData...."
        }
    ]
}
```

####  

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

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--88"><div><div><div></div></div></div></div>### Получить общие шаблоны блоков витрин

/api/lite/settings/template/block

<div id="bkmrk--89"></div>Получение перечня стандартных блоков витрин магазинов в формате, предназначенном для ui конструктора витрины

Для получения одного блока по id - использовать параметр в url вида ?id=123456

#### **Результат запроса:** 

```JSON
{
    "blocks": [
        {
            "id": "f4173840-f409-424d-a000-24542b391c5d",
            "name": "block name",
            "content": "contentData...."
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--90"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--91"><div><div><div></div></div></div></div>### Получить заявки на сбор

/api/lite/gather

<div id="bkmrk--92"></div>Получение списка заявок на сбор, сортировка - свежие по полю date - сначала

#### **Результат запроса:** 

```JSON
{
    "gathers": [
        {
            "success": true,
            "comment": null,
            "id": "1000-GD",
            "date": "2019-03-07 12:37:18",          
            "desiredDate": "2019-03-15",
            "desiredHourStart": "09:00",
            "desiredHourEnd": "14:00",
            "status": "AWAITING_CARGO",   //CREATED,CARGO_SHIPPED,HOLD,CANCELED
            "trackingNumber": "100039439"
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--93"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--94"><div><div><div></div></div></div></div>### Получить варианты курьерских пакетов

/api/lite/pub/courier\_pack

<div id="bkmrk--95"></div>Получение списка доступных типов курьерских пакетов с размерами

####  

#### **Результат запроса:** 

```JSON
{
    "courier_packs": [
        {
            "success": true,
            "type": "PACKET", // PAPERBOX
            "sizeType": "S",  // M/L
            "cargoWeight": 1500,  // максимальный вес содержимого в граммах           
            "dimensions": {
                "height": 12,
                "width": 20,
                "depth": 8
            }
        }
    ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--96"><div><div><div></div></div></div></div>#### **Ошибка:**

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

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

### Создать пользователя для Expert

 /api/lite/settings/go-expert

<div id="bkmrk--98"></div>Метод только для админов системы. Генерирует для аккаунта Lite нового пользователя чтобы под ним можно было рабоатть в интерфейсе Expert.

Логин равен логину исходного аккаунта (тенанта) + суффикс "-expert", например: <manager@shop.ru-expert>

Пароль равен паролю исходного аккаунта. При смене пароля исходного пользователя - expert логин останется с прошлым паролем.

Параметр URL: ?с=123 - проверочный код.

####  

#### **Результат запроса:** 

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--99"><div><div><div></div></div></div></div>#### **Ошибка:**

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

<div data-hasbody="true" data-macro-name="code" id="bkmrk--100"><div><div><div></div></div></div></div></body></html>

# /api/lite/pub/settings/catalog

### Получение текущего основного каталога

<span style="color: #505050;"><span style="color: #172b4d;">/api/lite/pub/settings/catalog</span></span>

####  

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

```JSON
{
  "success": true,
  "name": "Каталог 1",
  "code": "1000",
  "items": [
    {
    "title": "Смартфоны iPhone",
    "code": null,
    "collectionId": "1026",
    "defaultImage": "https://items.s1.citilink.ru/811882_v03_s.jpg",
    "items": null
    }
]
}
```

# Методы API для системы "Кактус"

api/lite/courier\_callЧасть методов представлена из "надстройки" – Кактус Лайт (/api/lite/\*), часть методов относится к работе подсказок (/api/prompter/\*), а часть к работе механизма по доставкам.

<p class="callout warning">Необходимо во всех вызовах, содержащих /pub, /dlv, /prompter, кроме регистрации и авторизации, (например /api/lite/pub/order) указывать имя текущего домена в заголовках запроса (Header) в параметре Domain. Если в вызове нет /pub, /dlv, /prompter - (например /api/lite/offer) - то нужно указывать токен доступа, полученный в методе регистрации/авторизации.</p>

<div id="bkmrk-%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81-%D0%9C%D0%B5%D1%82%D0%BE%D0%B4-%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7"><table class="relative-table wrapped confluenceTable" style="width: 1362px;"><tbody><tr><th class="confluenceTh" style="width: 237px;">**Запрос**</th><th class="confluenceTh" style="width: 220px;">**Метод**</th><th class="confluenceTh" colspan="1" style="width: 87px;">**Авторизация**</th><th class="confluenceTh" style="width: 350px;">**Описание**</th><th class="confluenceTh" colspan="1" style="width: 98px;">**Разработано**</th><th class="confluenceTh" colspan="1" style="width: 370px;">**Комментарии для бэкенда**</th></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Создание нового аккаунта Кактус Lite</span></td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/pub/register</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;"><span style="color: #000000;">public</span></td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Запрос на сброс пароля Кактус Lite</span></td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/pub/password\_reset</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;"><span style="color: #000000;">public</span></td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Сброс пароля</span></td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/pub/password\_reset\_confirm</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">public, защита по временному токену сброса пароля

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="highlight-green confluenceTd" colspan="6" data-highlight-colour="green" style="width: 1362px;">Методы для автоподсказок по вводу адресов</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Подсказка населенного пункта

</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/prompter/location</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">По переданной части населенного пункта, возвращает варианты возможных населенных пунктов</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Подсказка полного адреса</span></td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/prompter/address</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">По переданной части адреса, возвращает варианты адресов</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="highlight-blue confluenceTd" colspan="6" data-highlight-colour="blue" style="width: 1362px;">Методы для работы CMS составляющий Кактус Лайт</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Запрос данных аккаунта  
</span>(публичный)</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/pub/account\_info</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет

</td><td class="confluenceTd" colspan="1" style="width: 350px;">По указанному имени домена получает информацию об аккаунте - только данные для публичного использования. Например, настройки виджета.

Также используется для проверки домена на доступность.

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh3.googleusercontent.com/P5V85_Z2unVdpfDLtmzLnCwq263LoDL3J-S6whajmQszY2r20opGmmVR91-fl3QQqo5MGnfkxh7JBWtdUDpBJOcCwD2VabzRZG4FGLbjKVJLfaV3f5ebdgYYVUYrt1P8MXMGx2sV)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">для проверки доступности домена и его присвоения есть отдельный метод:

/api/lite/settings/domainAlias - работает по токену доступа

-публичные настройки виджета: порог бесплатной доставки

2

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Получение информации по заказу</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/pub/order</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">По указанному домену и номеру заказа, возвращает текущее состояние заказа и публичную информацию</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-по новой dto заказа

?требуется маппинг инфостатусов заказа и статусов lite

6

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Получение информации по предзаказу</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/pub/preorder</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">Получает информацию по предзаказу (метод доступен только если заказ еще в состоянии предзаказа)</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">-по новой dto заказа

2

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Проверка адреса сбора на возможность обслуживания</span></td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/pub/check\_pickup\_location</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">По указанному населенному пункту (код по базе ФИАС), возвращает возможность указание данного адреса как точки сбора.

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh5.googleusercontent.com/iAccbd9Hk1kvUUdaXH75ilp8EDK8irWEq6qcFzsfTsj8ixEoowf4LFmhBdHdy7TLleimSrAGHGDVdcJtKCMkPBDFwf5oDqh4jt4hz4JoNQJDVA8XHmZ89Q3CH7VUpyAugYM3CHx2)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">в кактусе - нетенантная таблица с фиас кодами доступных городов сбора и опциональными часами сбора

залить данные от gd

8

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Список товарных предложений/предложение</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/pub/offer</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">Возвращает список товаров + цены + фото

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh4.googleusercontent.com/b2ccWBO5vRgiVnOHMl1pE1nMHuFni3WwFWqhG58sDj7O4ss2QEul53Vio9Efin1i5SaRKPZy93ys6qDt7q1qDwBo4CHKTG0IWXqWlgqwmLc5LsIrLDZpk4MN-cKoSZgJAy6p40nx)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-добавить фото

1

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Создание заказа для виджета</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/pub/order</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">Для указанного домена, возможность оформить заказ из виджета обычному покупателю</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-по новой dto

4

</td></tr><tr><td class="highlight-yellow confluenceTd" colspan="6" data-highlight-colour="yellow" style="width: 1362px;">Методы для административного интерфейса Кактус Лайт</td></tr><tr><td class="confluenceTd" style="width: 237px;"><span style="color: #000000;">Авторизация</span></td><td class="confluenceTd" style="width: 220px;">POST /api/lite/auth</td><td class="confluenceTd" colspan="1" style="width: 87px;">–</td><td class="confluenceTd" style="width: 350px;">Создает новую пользовательскую сессию, получая токен.

С данным токеном возможно последующее обращение к API.

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Запрос данных аккаунта  
</span>(админский)</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/account\_info</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Возвращает сведения о текущем аккаунте – имя аккаунта, баланс, настройки и т.п.

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://docs.kak2c.ru/download/thumbnails/23560422/image2019-1-6_12-47-33.png?version=1&modificationDate=1584359466668&api=v2)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Информация о датах приезда курьера</span></td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/pickup\_dates</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Возвращает информацию о датах приезда курьера за указанный период.

<span style="color: #000000;"><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh6.googleusercontent.com/RG51UibBkvQkYlyZkPNDQRv7Y5suHnsuMjglz-ZvUEa3t4SzPD3bf655cPjTPQsAHAzUUjf63JUOE7JpaCoG0StSb4tvipJSbZ0UxQ2c7l5ofgFnOeznDBG0BrreH-dBqDhXdWN9)</span></span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">-в кактусе из настроек заявок на сбор выбираются ближайшие доступные дни. с учетом города сбора и доступного времени сбора - стоит скопировать реализацию настроек в части календаря в нетенантую область чтобы можно было разом для всех учетных записей лайта править

часы сбора и географию брать в той же таблице как в методе /api/lite/pub/check\_pickup\_location

5

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Перечень уведомлений для пользователя</span></td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/notifications</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Возвращает информацию об уведомлениях для пользователя. Либо по с фильтрацией по последним (с глубиной выборки), либо по определенному ID сообщения.</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">отложили

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;"><span style="color: #000000;">Сводка по аккаунту</span></td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/brief\_report</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Возвращает срез отчетности по аккаунту.

Например, информация о заказах (общая).

</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">-рефакторинг в отдельный сервис имеющихся методов отчетов DevApiController: reportGetOrderCount, reportGetOrderMeanBill, reportGetOrderSum

-вызов этих методов из апи лайта

8

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Запрос списка заказов / определенного заказа

</td><td class="confluenceTd" colspan="1" style="width: 220px;"><span style="color: #505050;">GET /api/lite/order</span></td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Возвращает информацию о списке заказов, или о конкретном заказе. Возможно задавать фильтрацию, а также требуемый набор полей.

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-по новой dto или ее расширенной версии для админа магазина

-фильтрация по статусам, меткам, строке(номер заказа, телефон покупателя, фио покупателя)

-набор полей, задаваемый в запросе пока не делаем

4

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Сохранение настроек точки сбора</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/settings/pickup</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Сохраняет информацию об адресе и контактах для сбора заказов

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh6.googleusercontent.com/hJDP4WT19XdEH5OPOZV5DOS5nyB4hxqaJghmbq5g0zMEcXzReWBths6NYYLBks3YxvGUqGJ3NpC-wPmUL_AgQ8uVSpv0dzh5UonUWQRscsvlx53Da7C5DQE44nbuU-0RL0wyRJ8p)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Проверка доступности домена 3 уровня</td><td class="confluenceTd" colspan="1" style="width: 220px;"><span style="color: #505050;">GET </span>/api/lite/settings/domainAlias</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Проверка свободного желаемого домена 3 уровня</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Обновление домена 3 уровня</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/settings/domainAlias</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Обновление текущего домена 3 уровня (помимо автосозданного)</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Сохранение настроек уведомлений</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/settings/user\_notification</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Сохраняет настройки уведомлений пользователя о событиях

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh6.googleusercontent.com/PbxdcBpMBvBxaJxdAQuW1YZPRGfiHiljnS9MO72mha0E-EKb1AtuqHCnfYOOTKuSOqR44VjZHKTXTa076ykQT3DAiWP6uAV91oTioSaqw-BsWzBTsZyeBTWIK7DYhqaMy7afk6yc)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">отложили</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Запрос настроек виджета чекаута</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/settings/checkout</td><td class="confluenceTd" colspan="1" style="width: 87px;"> </td><td class="confluenceTd" colspan="1" style="width: 350px;">Выводит настройки виджета чекаута</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Сохранение настроек работы виджета чекаута</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/settings/checkout</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Сохраняет настройки виджета чекаута

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh3.googleusercontent.com/gfwAsicNg0-qyHZwuh7DGbkcHRfEizjK8T-7b8LeEs54ts26fjQO5Voj1sl863uWI3axQBESuHO1IVQ5NQcqXRwtkZSUuBLYMnaC0nMqOM_e8sZDEPd7aUzsN8Ds7VLltIyoKfSF)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-добавить тенантую сущность настроек виджета с указанными полями

2

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Список товарных предложений/предложение</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/offer</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Возвращает список товаров + цены + фото

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh4.googleusercontent.com/b2ccWBO5vRgiVnOHMl1pE1nMHuFni3WwFWqhG58sDj7O4ss2QEul53Vio9Efin1i5SaRKPZy93ys6qDt7q1qDwBo4CHKTG0IWXqWlgqwmLc5LsIrLDZpk4MN-cKoSZgJAy6p40nx)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Создание / обновление товарного предложения</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/offer</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Обновление полей товара, цен, веса, отображения в каталоге

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh4.googleusercontent.com/cQbd8zl5CzLmXk8ji8F9gV8cexVSScvPwQyn5I1JvCwXYOb1zM3-SkkiwXNfYBILkif_hk2ESZn_gbWrm2F8I7kAvQu8-Ta_9-QBBCSQNdKODc5u-CC4SlkjDACc5GL0XibXtsK1)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">3

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Создание/удаление картинки к товару</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/offer/image

DELETE /api/lite/offer/image

</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">создание картинки к товару с ресайзом / удаление указанной картинки</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-интеграция с хранилищем картинок + ресайз картинок

8

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Обновление параметров кропа картинки к товару</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/offer/image/crop</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Обновляет параметры кропа (обрезки) картинки</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;"> </td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Создание/редактирование/удаление метки</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/tag

DELETE /api/lite/tag

</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Редактирование меток для заказов</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">4

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Получение списка меток</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/tag</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Получить все созданные метки заказов</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">1</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Создание заказа</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/order</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Возможность создать новый заказ.

Также, возможность создать заказ в статусе “Предзаказ”, когда только указана табличная часть, а все остальное должен заполнить покупатель

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-если полный заказ: копия метода публичного создания заказа

-если предзаказ: не проверять данные заказа не относящиеся к табличной части в OrderDocManager (по наличию домена определить что учетка - лайт и не проверять)

3

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → обновление контактной информации получателя

</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/order/receiver</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Имя, телефон, email

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh5.googleusercontent.com/CGPzdraMyDWwJdP3XZCSk_0s0MHBB7xJmtDtulPPw3Kipt2t2IkTkfDWovn86w3ZBFSc940ea6q5uvp6Q4zrbjqkQBbYrY_L1o7gh3YkEDDH7_5vfu02LGqQf6K2aPskfP0pSI4u)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">-используется новая dto заказа

-обрабатывается только та ее часть которая относится к указанным данным: в заказе не обновлются никакие иные поля

2

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → обновление товарной части</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/order/items</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Обновить только товарную часть заказа</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">-аналогично

2

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → упаковать</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/order/packing</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Помечает заказ упакованным</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-вызывается быстрая упаковка в одно место

4

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → распаковать</td><td class="confluenceTd" colspan="1" style="width: 220px;">DELETE /api/lite/order/packing</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Удаляет упаковку заказа</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-распроводит все имеющиеся упакованные места

2

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → пометить оплаченным получателем</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/order/payment</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Помечает заказ полностью оплаченным</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-ставит статус PAID в заказе

1

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → снять пометку оплаты заказа получателем</td><td class="confluenceTd" colspan="1" style="width: 220px;">DELETE /api/lite/order/payment</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Удаляет оплату заказа

![(warning)](https://docs.kak2c.ru/s/ru_RU/8100/a516614738a0811691ee4368be900fdd7a640552/_/images/icons/emoticons/warning.svg)*имеется ввиду отметка об оплате заказа со стороны покупателя (расчеты между покупателем и пользователем системы), не путать с оплатой доставки заказа (расчеты между пользователем системы и Кактус Лайт) - для этого есть отдельный метод.*

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-ставит статус PAID в заказе

0

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → установить метку на заказе</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/order/tag</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Устанавливает метку на заказ</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">2</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → снять метку с заказа</td><td class="confluenceTd" colspan="1" style="width: 220px;">DELETE /api/lite/order/tag</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Снимает метку с заказа</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">2</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Заказ → получить инвойс + стикер к заказу</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/order/invoice\_and\_stiker</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Получает инвойс для заказа (также содержит стикер)</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-dlv - сделать слепленную ПФ (инвойс + стикер), добавить в enum запроса ПФ

-кактус: вызывать при упаковке места ПФ с указанным enum

-по вызову данного метода апи - возвращение base64 с данными ПФ

3

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Оплатить доставку заказа/заказов</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/order\_delivery\_payment</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Блокирует средства с баланса для указанного перечня заказов.

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh5.googleusercontent.com/EhJbIwJopa6u55NYUvlJo7CdAxe-i8ma2npa36GZRBhpoWe43EO2TDE4UJv9pFu5oy7iRjQtj1YRORNvO-GR4IIV6qmr6Esu6OwYBJkGY2gM0VuEGvJQmlLky9-g7LO487r6f5Bh)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">-реализовать регистр баланса аккаунта (16)

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

?требуется описание схемы работы

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Отменить оплату доставки заказа/заказов</td><td class="confluenceTd" colspan="1" style="width: 220px;">DELETE /api/lite/order\_delivery\_payment</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Отменяет оплату заказа</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">?требуется описание схемы работы</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Оформить вызов курьера</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/courier\_call</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Создает в системе заявку на вызов курьера</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">- не делаем. заявка на вызов курьера автоматом делается при успешной оплате доставки указанных заказов в методе order\_delivery\_payment</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Отменить вызов курьера</td><td class="confluenceTd" colspan="1" style="width: 220px;">DELETE /api/lite/courier\_call</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Удаляет заявку на вызов курьера</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">-удаляет по humanId

2

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Получить список транзакций</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/lite/transaction</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">С фильтрацией по дате, номеру заказу (или номеру трекинга)</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">?требуется описание схемы работы</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Создать счет на оплату и получить информацию для оплаты</td><td class="confluenceTd" colspan="1" style="width: 220px;">POST /api/lite/payment</td><td class="confluenceTd" colspan="1" style="width: 87px;">session token</td><td class="confluenceTd" colspan="1" style="width: 350px;">Создает новый счет к оплате на указанную сумму, затем возвращает данные для последующей оплаты (PayU)

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://lh3.googleusercontent.com/1t8nF-jt60LjEbgexMVjY8Xr60w-cIZVKL3cKX3xLOKYwyYpJl-ddCvSbF6k9uGKRCGs8mNhGJt7hXm_fvTaqk5owMoQZDwb3b3XP6Pxqu5-7Mv0QsawxZ4SA_6Wy2wPng4HEfCt)</span>

</td><td class="confluenceTd" colspan="1" style="width: 98px;"> </td><td class="confluenceTd" colspan="1" style="width: 370px;">?требуется описание схемы работы</td></tr><tr><td class="highlight-yellow confluenceTd" colspan="6" data-highlight-colour="yellow" style="width: 1362px;">Методы для работы с доставкой (в большей степени требуются для работы чекаута)</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Получить тарифы и способы доставки для указанного населенного пункта</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/dlv/tariffs</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">с фильтрацией по городу (guid ФИАС) - запрос тарифа от точки сбора до указанной точки</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-добавить fias код в сущность адреса

-авторизация по домену

-добавить проксирование в кактусе с возможностью на лету

в тарифы добавить процентную и фиксированную часть из настроек виджета данного клиента

4

</td></tr><tr><td class="confluenceTd" colspan="1" style="width: 237px;">Получить список пунктов выдачи заказов</td><td class="confluenceTd" colspan="1" style="width: 220px;">GET /api/dlv/delivery\_points</td><td class="confluenceTd" colspan="1" style="width: 87px;">нет</td><td class="confluenceTd" colspan="1" style="width: 350px;">с фильтрацией по городу (guid ФИАС) / по курьерской службе, получает доступный список пунктов выдачи заказов.

Возможно запрашивать краткий и полный списки, с фильтрацией по ID пункта выдачи.

</td><td class="confluenceTd" colspan="1" style="width: 98px;"><span style="color: #222222;">✓</span></td><td class="confluenceTd" colspan="1" style="width: 370px;">-авторизация по домену

-прокси до dlv по методу запроса постаматов и фильтром по городу (фиас), коду постамата

4

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

</div>

# /api/lite/pub/order

### <span style="color: #000000;">Получение информации по заказу (публичный)</span>

<span style="color: #000000;">/api/lite/pub/order</span>

Метод получает информацию о заказе, доступную покупателю. например по ссылке из email

Обязательный параметр: query - содержащий номер (id) заказа.

например, <span style="color: #505050;">?id=FF6Z-000017</span>

####  

#### **Результат запроса**

<span style="color: #505050;">Найденный заказ, по форамату аналогичный методу добавления заказа (POST /api/lite/pub/order)</span>

```JSON
{
    "orders": [
        {
            "success": true,
            "comment": "",
            "id": "FF6Z-000017",
            "date": "2019-06-25 16:48:36",
            "updateTs": "2019-06-25 16:48:44.180",
            "confirmStatus": "APPROVED",
            "paymentStatus": "NOT_PAID",
            "status": "NEW",
            "paymentMethodCode": "no-cod",
            "trackingNumber": null,
            "customData": null,
            "totalOrderSum": 3715,
            "delivery": {
                "deliveryCode": "GLOBAL_DELIVERY",
                "timeFrom": "09:00",
                "timeTo": "20:00",
                "desiredDeliveryDate": null,
                "deliveryComment": "",
                "pickupPointId": "",
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": "",
                    "house": "",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Москва",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "",
                    "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "areaFias": null,
                    "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                    "settlementFias": null
                },
                "receiver": {
                    "name": "Тест4",
                    "surname": "",
                    "patronymic": "",
                    "phone": "9151321211",
                    "alternativePhone": "",
                    "email": ""
                },
                "type": "COURIER",
                "courier": "Global Delivery",
                "trackingLink": "https://global-delivery.ru/monitoring/",
                "logoUrl": "https://app.kak2c.ru/VAADIN/themes/valo-oms/img/logos/delivery-resized/global_delivery.png"
            },
            "items": [
                {
                    "num": 1,
                    "id": "1001",
                    "quantity": 8,
                    "price": 237,
                    "name": "Lavazza Passionale",
                    "img": "https://img.kak2c.ru/i/c/H/lQS7nFGe_c.png?1561052854",
                    "variants": null
                },
                {
                    "num": 2,
                    "id": "1002",
                    "quantity": 5,
                    "price": 289,
                    "name": "Lavazza Bio Organic",
                    "img": "https://img.kak2c.ru/i/C/f/jhqOneIC_c.png?1561052854",
                    "variants": null
                },
                {
                    "num": 3,
                    "id": "delivery",
                    "quantity": 1,
                    "price": 374,
                    "name": "Доставка",
                    "img": null,
                    "variants": null
                }
            ],
            "tags": [],
            "packings": null,
            "expenses": null,
            "needCustomerPayment": false,
            "customerPaymentInProcess": false,
            "promocode": "testpercent",
            "promocodeAppliedDiscount": 1169,
            "c": "29726802-015c-3c2b-14d2-9f84e1a8be9a"
        }
    ]
}
```

# Копия /api/lite/file/image

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

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

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

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

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

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

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

[![image-1592078071688.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/scaled-1680-/image-1592078071688.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-06/image-1592078071688.png)

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

```JSON
{
    "success": true,
    "url": "https://storage.yandexcloud.net/images-k2c/66ac26ec-08b2-4d4a-ae22-44c182847984.jpg",
    "id": "66ac26ec-08b2-4d4a-ae22-44c182847984.jpg"
}
```

# Импорт/экспорт

Импорт и экспорт номенклатуры, заказов, итд

# /api/lite/import/upload

### Загрузка файла номенклатуры (/api/lite/import/upload)

<div id="bkmrk-post%C2%A0%2Fapi%2Flite%2Fimpor"><div><table class="relative-table wrapped confluenceTable"><colgroup><col></col></colgroup><tbody><tr><th class="highlight-yellow confluenceTh" data-highlight-colour="yellow"><span class="status-macro aui-lozenge aui-lozenge-success conf-macro output-inline" data-hasbody="false" data-macro-name="status">POST</span> /api/lite/import/upload

</th></tr></tbody></table>

</div></div>/api/lite/import/upload

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

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

- templateType - Тип шаблона (SKU, ORDER) - обязательный параметр. Для номенклатуры - значение SKU
- upfile - файл с номенклатурой

Параметры должны быть переданы именно как **form-data**

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

**Положительный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div>```JSON
{
   "success":true,
   "id":"1002",
   "rowsCount":8,
   "totalRows":9,
   "lastParsedRow":8,
   "headerRow":0,
   "header":[
      {
         "matchedId":"id",
         "title":"Код в Kak2c",
         "id":"0"
      },
      {
         "matchedId":"extId",
         "title":"Внешний код",
         "id":"1"
      },
      {
         "matchedId":"article",
         "title":"Артикул",
         "id":"2"
      },
      {
         "matchedId":"shortName",
         "title":"Наименование",
         "id":"3"
      },
      {
         "matchedId":null,
         "title":"Полное наименование",
         "id":"4"
      },
      {
         "matchedId":null,
         "title":"Штрихкоды",
         "id":"5"
      },
      {
         "matchedId":"defaultImage",
         "title":"URL картинки",
         "id":"6"
      },
      {
         "matchedId":null,
         "title":"Код варианта",
         "id":"7"
      },
      {
         "matchedId":null,
         "title":"Код родительского варианта",
         "id":"8"
      },
      {
         "matchedId":null,
         "title":"Цвет",
         "id":"9"
      },
      {
         "matchedId":null,
         "title":"Размер",
         "id":"10"
      },
      {
         "matchedId":"VAT",
         "title":"Ставка НДС",
         "id":"11"
      },
      {
         "matchedId":null,
         "title":"Количество (GLOBAL_DELIVERY)",
         "id":"12"
      },
      {
         "matchedId":null,
         "title":"Количество (Tempoline)",
         "id":"13"
      },
      {
         "matchedId":"price",
         "title":"Розничная цена",
         "id":"14"
      },
      {
         "matchedId":null,
         "title":"Цена до скидки",
         "id":"15"
      },
      {
         "matchedId":null,
         "title":"OZON",
         "id":"16"
      },
      {
         "matchedId":null,
         "title":"GOODS",
         "id":"17"
      },
      {
         "matchedId":null,
         "title":"BERU",
         "id":"18"
      }
   ],
   "body":[
      {
         "rowNum":1,
         "rowBody":{
            "0":"1067",
            "1":"300212295",
            "2":"4620771200101-4",
            "3":"#Спрут_экстра от сорняков, Спрут Экстра ВР, Октябрина Апрелевна 100 мл",
            "4":"#Спрут_экстра от сорняков, Спрут Экстра ВР, Октябрина Апрелевна 100 мл",
            "5":"4620771200100",
            "6":"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Solomin_field.JPG/1200px-Solomin_field.JPG",
            "7":"20%",
            "8":"0",
            "9":"0",
            "10":"",
            "11":"",
            "12":"",
            "13":"100",
            "14":"257.00",
            "15":"",
            "16":"",
            "17":"",
            "18":""
         }
      },
      {
         "rowNum":2,
         "rowBody":{
            "0":"1049",
            "1":"300204695",
            "2":"4620771201909-1",
            "3":"#Садовый_вар дезинфекция ран, Октябрина Апрелевна 150 гр",
            "4":"#Садовый_вар дезинфекция ран, Октябрина Апрелевна 150 гр",
            "5":"4620771201893",
            "6":"https://img2.wbstatic.net/big/new/9240000/9243894-1.jpg",
            "7":"20%",
            "8":"0",
            "9":"0",
            "10":"",
            "11":"",
            "12":"",
            "13":"100",
            "14":"77.00",
            "15":"",
            "16":"",
            "17":"",
            "18":""
         }
      }
   ],
   "fieldMatching":{
      "isNovelty":"новинка",
      "available":"доступен",
      "VAT":"ставка ндс",
      "description":"описание",
      "stockAvailable":"остаток",
      "price":"цена",
      "id":"id",
      "extId":"внешний id",
      "variantId":"ид варианта",
      "barcode":"штрихкод",
      "defaultImage":"url картинки",
      "height":"высота",
      "brandName":"бренд",
      "stockReserved":"резерв",
      "productId":"ид продукта",
      "oldPrice":"старая цена",
      "weight":"вес",
      "isBestseller":"хит",
      "article":"артикул",
      "deleted":"удален",
      "depth":"глубина",
      "width":"ширина",
      "countryOfOrigin":"страна производитель",
      "shortName":"наименование",
      "price$Цена до скидки":"цена: цена до скидки",
      "price$Розничная цена":"цена: розничная цена",
      "attribute$material":"атрибут: материал",
      "feature$color":"свойство: цвет",
      "feature$size":"свойство: размер"
   },
   "columnMatching":{
      "0":"id",
      "11":"VAT",
      "1":"extId",
      "2":"article",
      "3":"shortName",
      "14":"price",
      "6":"defaultImage"
   },
   "importMethod":"UPDATE",
   "replacePictures":false,
   "searchField":"ID"
}
```

<div id="bkmrk-"></div><div id="bkmrk--0"></div>**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div>**Пример ошибки**</div></div>```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]  
}
```

<div id="bkmrk--1"></div><div id="bkmrk--2"></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--3"><div><div><div></div></div></div></div>

# /api/lite/import/preview

###  

### Получить первые N строк загруженного файла (/api/lite/import/preview)

<div id="bkmrk-"><div></div></div>/api/lite/import/preview

параметр: id (Идентификатор загруженного файла)

например api/lite/import/preview?id=1001

параметр count (количество строк документа. Если не передан, то по умолчанию - 25)

например api/lite/import/preview?id=1001&amp;count=10

**Положительный результат запроса:**

```JSON
{
   "success":true,
   "id":"1001",
   "rowsCount":1,
   "totalRows":9,
   "lastParsedRow":0,
   "headerRow":0,
   "header":[
      {
         "matchedId":"id",
         "title":"Код в Kak2c",
         "id":"0"
      },
      {
         "matchedId":"extId",
         "title":"Внешний код",
         "id":"1"
      },
      {
         "matchedId":"article",
         "title":"Артикул",
         "id":"2"
      },
      {
         "matchedId":"shortName",
         "title":"Наименование",
         "id":"3"
      },
      {
         "matchedId":null,
         "title":"Полное наименование",
         "id":"4"
      },
      {
         "matchedId":null,
         "title":"Штрихкоды",
         "id":"5"
      },
      {
         "matchedId":"defaultImage",
         "title":"URL картинки",
         "id":"6"
      },
      {
         "matchedId":null,
         "title":"Код варианта",
         "id":"7"
      },
      {
         "matchedId":null,
         "title":"Код родительского варианта",
         "id":"8"
      },
      {
         "matchedId":null,
         "title":"Цвет",
         "id":"9"
      },
      {
         "matchedId":null,
         "title":"Размер",
         "id":"10"
      },
      {
         "matchedId":"VAT",
         "title":"Ставка НДС",
         "id":"11"
      },
      {
         "matchedId":null,
         "title":"Количество (GLOBAL_DELIVERY)",
         "id":"12"
      },
      {
         "matchedId":null,
         "title":"Количество (Tempoline)",
         "id":"13"
      },
      {
         "matchedId":"price",
         "title":"Розничная цена",
         "id":"14"
      },
      {
         "matchedId":null,
         "title":"Цена до скидки",
         "id":"15"
      },
      {
         "matchedId":null,
         "title":"OZON",
         "id":"16"
      },
      {
         "matchedId":null,
         "title":"GOODS",
         "id":"17"
      },
      {
         "matchedId":null,
         "title":"BERU",
         "id":"18"
      }
   ],
   "body":[
      {
         "rowNum":1,
         "rowBody":{
            "0":"1067",
            "1":"300212295",
            "2":"4620771200101-4",
            "3":"#Спрут_экстра от сорняков, Спрут Экстра ВР, Октябрина Апрелевна 100 мл",
            "4":"#Спрут_экстра от сорняков, Спрут Экстра ВР, Октябрина Апрелевна 100 мл",
            "5":"4620771200100",
            "6":"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Solomin_field.JPG/1200px-Solomin_field.JPG",
            "7":"20%",
            "8":"0",
            "9":"0",
            "10":"",
            "11":"",
            "12":"",
            "13":"100",
            "14":"257.00",
            "15":"",
            "16":"",
            "17":"",
            "18":""
         }
      }
   ],
   "fieldMatching":{
      "isNovelty":"новинка",
      "brandName":"бренд",
      "stockReserved":"резерв",
      "productId":"ид продукта",
      "oldPrice":"старая цена",
      "available":"доступен",
      "VAT":"ставка ндс",
      "description":"описание",
      "weight":"вес",
      "isBestseller":"хит",
      "stockAvailable":"остаток",
      "article":"артикул",
      "deleted":"удален",
      "depth":"глубина",
      "price":"розничная цена",
      "width":"ширина",
      "id":"код в kak2c",
      "extId":"внешний код",
      "countryOfOrigin":"страна производитель",
      "variantId":"ид варианта",
      "shortName":"наименование",
      "barcode":"штрихкод",
      "defaultImage":"url картинки",
      "height":"высота"
   },
   "columnMatching":{
      "0":"id",
      "11":"VAT",
      "1":"extId",
      "2":"article",
      "3":"shortName",
      "14":"price",
      "6":"defaultImage"
   },
   "importMethod":"UPDATE",
   "searchField":"ID"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div>**Пример ошибки**</div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--1"><div>```JSON

```

</div></div>

# /api/lite/import/task

### Список заданий(подробная информация по заданию) (/api/lite/import/task)

<div id="bkmrk-"></div>/api/lite/import/task

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "recordsTotal": 2,
    "tasks": [
        {
            "success": true,
            "date": "2020-07-13 18:58:57",
            "id": "1002",
            "processed": false,
            "enqueued": false,
            "rowsTotal": 9,
          	"emptyRowsCount":0,
            "lastProcessedRow": 0,
            "itemsProcessedCount": 0,
            "itemsFailedCount": 0,
            "progressPercentage": 0,
            "failedRowsNum": "",
            "itemsCreatedCount": null,
            "itemsUpdatedCount": null,
            "startTime": "2020-07-13 18:58:57",
            "finishTime": null
        },
        {
            "success": true,
            "date": "2020-07-12 17:45:00",
            "id": "1001",
            "processed": true,
            "enqueued": true,
            "rowsTotal": 9,
          	"emptyRowsCount":0,
            "lastProcessedRow": 9,
            "itemsProcessedCount": 9,
            "itemsFailedCount": 0,
            "progressPercentage": 100,
            "failedRowsNum": "",
            "itemsCreatedCount": 0,
            "itemsUpdatedCount": 9,
            "startTime": "2020-07-13 16:44:12,
            "finishTime": "2020-07-13 16:45:22
        }
    ]
}

```

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

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

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

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

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

параметр: templateType=SKU тип заданий для отображения. Возможные варианты: \[SKU, ORDER\] Если не передан, то по умолчанию - SKU

параметр: id (Идентификатор задания, если передан, возвращается подробная информация по заданию)

например api/lite/import/task?id=1001

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "date": "2020-07-13 18:58:57",
    "id": "1002",
    "processed": false,
    "enqueued": false,
    "rowsTotal": 9,
  	"emptyRowsCount":0,
    "lastProcessedRow": 0,
    "itemsProcessedCount": 0,
    "itemsFailedCount": 0,
    "progressPercentage": 11,
    "failedRowsNum": "",
    "itemsCreatedCount": null,
    "itemsUpdatedCount": null,
    "startTime": null,
    "finishTime": null,
    "warehouseName": "Свой склад",
    "fileUrl": "https://storage.yandexcloud.net/images-k2c/f328ff56-ec93-4663-b747-7ee96957ca8e.xls",
    "fieldMatching": {
        "isNovelty": "новинка",
        "brandName": "бренд",
        "stockReserved": "резерв",
        "productId": "ид продукта",
        "oldPrice": "старая цена",
        "available": "доступен",
        "VAT": "ставка ндс",
        "description": "описание",
        "weight": "вес",
        "isBestseller": "хит",
        "stockAvailable": "остаток",
        "article": "артикул",
        "deleted": "удален",
        "depth": "глубина",
        "price": "розничная цена",
        "width": "ширина",
        "id": "код в kak2c",
        "extId": "внешний код",
        "countryOfOrigin": "страна производитель",
        "variantId": "ид варианта",
        "shortName": "наименование",
        "barcode": "штрихкод",
        "defaultImage": "url картинки",
        "height": "высота"
    },
     "processingLog": [
      	{
      		"time":"2020-07-30 11:25:14",
      		"strNum":1,
      		"event":"Строка успешно обработана",
      		"level":"INFO"
   		},
        {
            "time": "2020-08-05 16:15:53",
            "strNum": 2,
            "event": "Обнаружена пустая строка",
            "level": "WARNING"
        },
        {
            "time": "2020-08-05 16:15:53",
            "strNum": 3,
            "event": "Не задано наименование для нового продукта.",
            "level": "ERROR"
        }
    ],
    "importType" : "UPDATE", //"CREATE" Режим загрузки номенклатуры
	"searchField" : "ID", //"EXTID" | "ARTICLE" | "BARCODE" Сопоставление номенклатуры
	"replacePictures" : false, //Заменять изображения
	"updateRests", : false //Загружать остатки
  	"clearEmptyValues" : false //Стирать значения, если они пустые
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

### Обновить настройки задания (/api/lite/import/task)

<div id="bkmrk--1"><div></div></div>/api/lite/import/task

параметр: id (идентификатор задания)

например api/lite/import/task?id=1001

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

```JSON
{
	"id": "ed83074b-0072-43b0-a3fb-3f741cc8dc21", //Идентификатор загруженного файла
	"warehouseName": "Свой склад", //Наименование склада
    "fieldMatching" : {
			"id":"Код в Kak2c",
			"article":"Артикул",
			"extId":"Внешний ИД",
			"barcode":"Штрихкоды",
			"shortName":"Наименование",
    		"description":"Полное наименование",
			"vat":"Ставка НДС",
			"stockAvailable":"Количество",
			"price":"Цена",
			"currency":"Валюта",
			"picture":"URL картинки"
	}, //Сопоставление полей
	"importType" : "UPDATE", //"CREATE" Режим загрузки номенклатуры
	"searchField" : "ID", //"EXTID" | "ARTICLE" | "BARCODE" Сопоставление номенклатуры
	"replacePictures" : false, //Заменять изображения
	"updateRests", : false //Загружать остатки
  	"clearEmptyValues" : false //Стирать значения, если они пустые
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--2"><div><div><div></div></div></div></div>**Положительный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--3"><div><div><div></div></div></div></div>```JSON
{
    "success": true,	
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-0"><div>**Пример ошибки**</div></div><div id="bkmrk--4"></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--5"><div data-hasbody="true" data-macro-name="code"><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

# /api/lite/import/process

### Запустить обработку загруженного файла (/api/lite/import/<span style="color: #505050;">process</span>)

/api/lite/import/<span style="color: #505050;">process</span>

параметр: id (Идентификатор загруженного файла) обязательный

например api/lite/import/<span style="color: #505050;">process</span>?id=ed83074b-0072-43b0-a3fb-3f741cc8dc21

**Положительный результат запроса:**

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

**Отрицательный результат запроса:**

```JSON

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

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

# /api/lite/import/field_list

### Получить список возможных полей номенклатуры(/api/lite/import/field\_list)

<div id="bkmrk-"></div>/api/lite/import/field\_list

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "fields": {
        "id": "ID",
        "extId": "Внешний ID",
        "shortName": "Наименование",
        "article": "Артикул",
        "barcode": "Штрихкод",
        "brandName": "Бренд",
        "vat": "Ставка НДС",
        "defaultImage": "URL картинки",
        "productId": "ID Продукта",
        "productExtId": "Внешний ID продукта",
        "weight": "Вес (кг)",
        "width": "Ширина (см)",
        "height": "Высота (см)",
        "depth": "Глубина (см)",
        "tnved": "ТНВЭД",
        "type": "Тип",
        "internationalDescription": "Международное описание товара",
        "isBestseller": "Хит",
        "isNovelty": "Новинка",
        "description": "Описание",
        "countryOfOrigin": "Страна производитель",
        "stockTotal": "Остаток",
        "stockReserved": "В резерве",
        "available": "Доступен",
        "price$Цена до скидки": "Цена: цена до скидки",
        "price$Розничная цена": "Цена: розничная цена",
        "feature$size": "Свойство: размер",
        "feature$color": "Свойство: цвет"
    }
}
```

**Отрицательный результат запроса:**

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

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

# /api/lite/export/sku

### Список результатов экспорта(подробная информация по экспорту) (/api/lite/export/sku)

<div id="bkmrk-"></div>/api/lite/export/sku

**Положительный результат запроса:**

```JSON
{
  	"success": true,
  	"recordsTotal": 2
    "exportResults": [
        {
            "success": true,
            "id": "1001",
            "fileUrl": "https://storage.yandexcloud.net/images-k2c/fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
            "fileID": "fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
            "fileSize": "122 KB",
            "rowsCount": 296,
            "startTime": "2020-08-27 15:48:25",
            "finishTime": "2020-08-27 15:48:26",
            "cloudUploadFinishTime": "2020-08-27 15:48:27"
        },
        {
            "success": true,
            "id": "1000",
            "fileUrl": "https://storage.yandexcloud.net/images-k2c/452e74b0-3660-4c80-bfcb-78034097b720.xls",
            "fileID": "452e74b0-3660-4c80-bfcb-78034097b720.xls",
            "fileSize": "122 KB",
            "rowsCount": 296,
            "startTime": "2020-08-27 15:27:53",
            "finishTime": "2020-08-27 15:27:54",
            "cloudUploadFinishTime": "2020-08-27 15:27:55"
        }
    ]
}
```

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

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

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

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

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

параметр: id (Идентификатор результата, если передан, возвращается подробная информация по результату)

например /api/lite/export/sku?id=1001

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "id": "1001",
    "fileUrl": "https://storage.yandexcloud.net/images-k2c/fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
    "fileID": "fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
    "fileSize": "122 KB",
    "rowsCount": 296,
    "startTime": "2020-08-27 15:48:25",
    "finishTime": "2020-08-27 15:48:26",
    "cloudUploadFinishTime": "2020-08-27 15:48:27"
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

### Инициировать экспорт товаров (/api/lite/export/sku)

<div id="bkmrk--1"><div></div></div>/api/lite/export/sku

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

```JSON
{
    "warehouse":null, //ИД Склада(фильтр)
    "exportStock":true, //Выгружать остатки
    "exportPrice":true, //Выгружать цены
    "exportFeatures":true, //Выгружать свойства
    "exportAttributes":true, //Выгружать атрибуты
    "exportPictures":true, //Выгружать картинки
  	"exportArchive":false //Выгружать архивные товары
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--2"><div><div><div></div></div></div></div>**Положительный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--3"><div><div><div></div></div></div></div>```JSON
{
    "success": true,
    "id": "1000",
    "fileUrl": "https://storage.yandexcloud.net/images-k2c/fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
    "fileID": "fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
    "fileSize": "122 KB", 	//Размер файла(строка)
    "rowsCount": 296, 	//Количество строк в файле
    "startTime": "2020-08-27 15:48:25",		//Время начала подготовки файла
    "finishTime": "2020-08-27 15:48:26", 	//Время окончания подготовки файла
    "cloudUploadFinishTime": "2020-08-27 15:48:27" 	//Время окончания загрузки в облако
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-0"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

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

# /api/lite/import/templates/sku

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

/api/lite/import/templates/sku

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

В файл записываются первые 10 товаров аккаунта

Можно задавать ему название "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/export/order

### Список результатов экспорта заказов(подробная информация по экспорту) (/api/lite/export/order)

<div id="bkmrk-"></div>/api/lite/export/order

**Положительный результат запроса:**

```JSON
{
  	"success": true,
  	"recordsTotal": 2
    "exportResults": [
        {
            "success": true,
            "id": "1001",
            "fileUrl": "https://storage.yandexcloud.net/images-k2c/fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
            "fileID": "fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
            "fileSize": "122 KB",
            "rowsCount": 296,
            "startTime": "2020-08-27 15:48:25",
            "finishTime": "2020-08-27 15:48:26",
            "cloudUploadFinishTime": "2020-08-27 15:48:27"
  			"requestJson":"{\"fromDate\":\"2020-09-25 20:31:00\",\"exportTechData\":false,\"orderType\":\"CUSTOM\",\"orderSubType\":\"KAK2C_SUBSCRIPTION\",\"exportItems\":false,\"searchDateType\":\"CREATE_DATE\",\"toDate\":\"2020-12-01 20:31:07\",\"exportTags\":true,\"extendedAddress\":false,\"exportPackages\":false}",
   			"processed":true,
   			"rowsTotal":987,
   			"itemsProcessedCount":987,
   			"itemsFailedCount":0,
   			"processingLog":[]
        },
        {
            "success": true,
            "id": "1000",
            "fileUrl": "https://storage.yandexcloud.net/images-k2c/452e74b0-3660-4c80-bfcb-78034097b720.xls",
            "fileID": "452e74b0-3660-4c80-bfcb-78034097b720.xls",
            "fileSize": "122 KB",
            "rowsCount": 296,
            "startTime": "2020-08-27 15:27:53",
            "finishTime": "2020-08-27 15:27:54",
            "cloudUploadFinishTime": "2020-08-27 15:27:55"
            "processed":true,
   			"rowsTotal":987,
   			"itemsProcessedCount":987,
   			"itemsFailedCount":0,
   			"processingLog":[]
        }
    ]
}
```

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

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

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

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

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

параметр: id (Идентификатор результата, если передан, возвращается подробная информация по результату)

например /api/lite/export/order?id=1001

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "id": "1001",
    "fileUrl": "https://storage.yandexcloud.net/images-k2c/fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
    "fileID": "fd5d5bc5-9792-4fee-be5e-51dd93e853ea.xls",
    "fileSize": "122 KB",
    "rowsCount": 296,
    "startTime": "2020-08-27 15:48:25",
    "finishTime": "2020-08-27 15:48:26",
    "cloudUploadFinishTime": "2020-08-27 15:48:27"
    "processed":true,
   	"rowsTotal":987,
   	"itemsProcessedCount":987,
   	"itemsFailedCount":0,
   	"processingLog":[]
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

###  

### Инициировать экспорт заказов (/api/lite/export/order)

#### (асинхронный запрос)

/api/lite/export/order

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

```JSON
{
    "searchDateType":"CREATE_DATE", //TAKEOUT_DATE, DELIVERY_DATE, RETURN_DATE - Метод отбора (по дате создания/отгрузки/доставки/возврата)
    "fromDate":"2020-08-01 00:00:00", //Дата от
    "toDate":"2020-10-01 00:00:00", //Дата до
    "extendedAddress":true, //Выгрузить адрес по частям
    "exportTags":true, //Выгрузить метки
    "exportItems":true, //Данные по товарам (Может значительно замедлить экспорт, выполняется запрос регистров, ограничение в 1000 записей)
    "exportPackages":true, //Данные по транспортным местам
  	"exportPackedItems": true, //Данные по упакованным товарам
    "exportTechData":true, //Технические данные
   	"orderType":"CUSTOM", //STANDARD | KAKTUS_DOSTAVKA_V2   У обычных заказов - STANDARD
   	"orderSubType":"KAK2C_SUBSCRIPTION", //У обычных заказов он null. 
    "ids":["49379964-0003-2", "49379964-0003-3"], //Если требуется выгрузить заказы с указанными HumanId
  	"city":"Новосибирск",
	"deliveryInfos":["f7c887bc-2161-a53e-0c98-8180f458b79d"], //Список служб доставки
	"orderTags":["Метка"], //список ИМЁН меток (не гуидов!)
	"promocode":"ajaton3000",
	"statuses":["ORDER_INFO_REQUIRE_PAYMENT"], //Список статусов заказа
	"variantId":"982880" //sku humanId
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%22ordertype%22--%C2%A0-%D0%BE%D1%82%D0%B1%D0%BE%D1%80"><div><div>**"orderType"** - отбор по типу заказа. Если не передан, то возвращаются все типы.  
**"orderSubType"** - Отбор по подтипу заказа. У обычных заказов он null. Отбор моно проводить как по совокупности (тип + подтип), так и по отдельности (тип или подтип). Если тип и подтип не заданы, возвращаются все заказы в заданном промежутке дат (fromDate, toDate). Если задан orderSubType == "KAK2C_SUBSCRIPTION", название и количество колонок xls документа может изменится, для отображения данных по подпискам.</div><div></div><div>Для экспорта **обычных заказов**, orderType должен быть передан "STANDARD", а orderSubType можно не передавать, либо передать null.</div><div>Для экспорта **подписок**, "orderSubType": "KAK2C_SUBSCRIPTION", а "orderType": "CUSTOM".</div><div></div><div></div></div></div>**Положительный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--1"><div><div><div></div></div></div></div>```JSON
{
    "id": "1000",
    "itemsFailedCount": 0,
    "itemsProcessedCount": 0,
    "processed": false,
    "processingLog": [],
    "requestJson": "{\"fromDate\":\"2023-07-04 16:17:46\",\"searchDateType\":\"TAKEOUT_DATE\",\"toDate\":\"2023-07-05 16:17:46\",\"exportTags\":true}",
    "success": true
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-0"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

# Шаблоны подписок

### Создание/редактирование шаблона подписок

/<span style="color: #505050;">api/lite/product/subscription/parse</span>

Создаёт структуру шаблона подписок по заданному шаблону. Все заданные товары должны существовать в кактусе до загрузки шаблона.

Если тип оплаты *recurrent*:

- Стоимость товара-подписки становится равной сумме первых отправлений
- Стоимость остальных отправлений становится 0

Если тип оплаты *all\_in\_moment*:

- Стоимость товара-подписки становится равен сумме всех отправлений

**Передаваемые параметры:**

<table border="1" id="bkmrk-%D0%98%D0%BC%D1%8F-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-fil" style="border-collapse: collapse; width: 100%; height: 145px;"><tbody><tr style="height: 29px;"><td class="align-center" style="width: 20.7251%; height: 29px;">**Имя**</td><td class="align-center" style="width: 17.3877%; height: 29px;">**Тип**</td><td class="align-center" style="width: 61.8871%; height: 29px;">**Описание**</td></tr><tr style="height: 29px;"><td class="align-center" style="width: 20.7251%; height: 29px;">file</td><td class="align-center" style="width: 17.3877%; height: 29px;">MultipartFile</td><td class="align-left" style="width: 61.8871%; height: 29px;">Файл (.XLS) для парсинга. [Пример файла](https://docs.google.com/spreadsheets/d/1vwH5icSRvmbnXtXTFcMSS00JNMtRzF3o8Ta_sLlUczk/edit?usp=sharing) . Возможные значения в payment\_method: RECURRENT и ALL\_IN\_MOMENT</td></tr><tr style="height: 29px;"><td class="align-center" style="width: 20.7251%; height: 29px;">productId</td><td class="align-center" style="width: 17.3877%; height: 29px;">String</td><td class="align-left" style="width: 61.8871%; height: 29px;">productId товара-подписки</td></tr><tr style="height: 29px;"><td class="align-center" style="width: 20.7251%; height: 29px;">variantId</td><td class="align-center" style="width: 17.3877%; height: 29px;">String</td><td class="align-left" style="width: 61.8871%; height: 29px;">variantId товара-подписки</td></tr><tr style="height: 29px;"><td class="align-center" style="width: 20.7251%; height: 29px;">startDate (optional)</td><td class="align-center" style="width: 17.3877%; height: 29px;">String</td><td class="align-left" style="width: 61.8871%; height: 29px;">Дата с которой начинается первое отправление. Если не задано, берётся текущая</td></tr></tbody></table>

#### **При удачном парсинге возвращает структуру шаблона:** 

```JSON
{
    "success": true,
    "productId": "1002",
    "variantId": "1002",
    "type": "SUBSCRIPTION",
    "onlinePaymentType": "recurrent",
    "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
        }
    ]
}
```

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

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Update SubscriptionTemplate not implemented yet!\n"
        }
    ]
}
```

###  

### Получение информации о шаблоне

/<span style="color: #505050;">api/lite/product/subscription</span>

**Передаваемые параметры:**

<table border="1" id="bkmrk-%D0%98%D0%BC%D1%8F-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-id-" style="border-collapse: collapse; width: 100%;"><tbody><tr style="height: 29px;"><td class="align-center" style="width: 20.7251%; height: 29px;">**Имя**</td><td class="align-center" style="width: 17.3877%; height: 29px;">**Тип**</td><td class="align-center" style="width: 61.8871%; height: 29px;">**Описание**</td></tr><tr><td class="align-center" style="width: 20.7251%;">id</td><td class="align-center" style="width: 17.3877%;">String</td><td class="align-left" style="width: 61.8871%;">productId товара-подписки</td></tr></tbody></table>

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

```JSON
{
    "success": true,
    "productId": "1002",
    "variantId": "1002",
    "type": "SUBSCRIPTION",
    "onlinePaymentType": "recurrent",
    "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
        }
    ]
}
```

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

# /api/lite/export/purchase_order

### Инициировать экспорт заказа поставщику (/api/lite/export/purchase\_order?id=1016)

#### (синхронный запрос)

<div id="bkmrk-"></div>/api/lite/export/purchase\_order?id=1016

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C"><div><div><div>**Положительный результат запроса:** </div></div></div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>```JSON
{
    "success": true,
    "id": null,
    "fileUrl": "https://storage.yandexcloud.net/items-export-kak2c/export_takein_max@panshinteam.com_26.10.2020_16-09-15.xls",
    "fileID": "export_takein_max@panshinteam.com_26.10.2020_16-09-15.xls",
    "fileSize": "8 KB",
    "rowsCount": 12,
    "startTime": "2020-10-26 16:09:14",
    "finishTime": "2020-10-26 16:09:15",
    "cloudUploadFinishTime": "2020-10-26 16:09:16"
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

# /api/lite/import/order_field_list

### Получить список возможных полей заказа(/api/lite/import/order\_field\_list)

<div id="bkmrk-"></div>/api/lite/import/order\_field\_list

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "fields": {
        "id": "ID заказа",
        "date": "Дата заказа",
        "fullName": "ФИО покупателя",
        "phone": "Телефон",
        "paymentMethodCode": "Способ оплаты",
        "paymentStatus": "Заказ оплачен",
        "email": "Email",
        "post": "Индекс",
        "pvzNum": "Код пункта выдачи",
        "country": "Страна",
        "fullAddress": "Полный адрес",
        "region": "Регион",
        "area": "Район",
        "city": "Город",
        "settlement": "Населенный пункт",
        "street": "Улица",
        "house": "Дом",
        "block": "Корпус",
        "flat": "Квартира",
        "deliveryCode": "Код способа доставки",
        "variantId": "ID товара",
        "variantExtId": "Внешний ID товара",
        "article": "Артикул",
        "barcode": "Штрихкод",
        "price": "Цена",
        "quantity": "Количество",
        "vat": "Ставка НДС"
    }
}
```

**Отрицательный результат запроса:**

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

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

# /api/lite/export/sku/movements/json

### Получить движения по товару в json формате (/api/lite/export/sku/movements/json?id=MA001)

#### (синхронный запрос)

<div id="bkmrk-"></div>/api/lite/export/sku/movements/json?id=MA001

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C"><div><div><div>**Положительный результат запроса:** </div></div></div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>```JSON
{
    "success": true,
    "humanId": "MA001",
    "article": "MA001",
    "shortName": "Мастера рисунка и живописи. Випуск 1",
    "extId": null,
    "extId2": null,
    "barcodes": "977253178460500001",
    "movements": [
        {
            "success": true,
            "period": "2020-09-30 03:09:21",
            "humanId": "1000",
            "documentType": "TAKE_IN_FACT",
            "operationType": "PLUS",
            "amountAvailable": 194,
            "amountReserved": 0,
            "sourceDocHumanId": null,
            "sourceDocType": null,
            "warehouseName": "Tempoline - Украина"
        },
		{
            "success": true,
            "period": "2020-11-10 06:11:44",
            "humanId": "1580",
            "documentType": "TAKE_OUT_PACKING",
            "operationType": "MINUS",
            "amountAvailable": 1,
            "amountReserved": 1,
            "sourceDocHumanId": "9098-1715",
            "sourceDocType": "ORDER",
            "warehouseName": "Tempoline - Украина"
        }
        
    ]
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

# /api/lite/export/sku/movements

### Получить движения по товару в xls файле (/api/lite/export/sku/movements?id=MA001)

#### (синхронный запрос)

<div id="bkmrk-"></div>/api/lite/export/sku/movements?id=MA001

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-id%3Dma001---"><div><div><div>Параметр **id=MA001** - ид варианта, обязательный</div><div></div><div>**Положительный результат запроса:** </div></div></div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>```JSON
{
    "success": true,
    "id": null,
    "fileUrl": "https://ycloud.kak2c.ru/items-export-kak2c/export_movement_info@centauria.com.ua_18.11.2020_18-05-26.xls",
    "fileID": "export_movement_info@centauria.com.ua_18.11.2020_18-05-26.xls",
    "fileSize": "190 KB",
    "rowsCount": 1169,
    "startTime": "2020-11-18 18:05:26",
    "finishTime": "2020-11-18 18:05:26",
    "cloudUploadFinishTime": "2020-11-18 18:05:26"
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

# /api/lite/export/order/count

### Подсчитать кол-во заказов (/api/lite/export/order/count)

/api/lite/export/order/count

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

```JSON
{
    "searchDateType":"CREATE_DATE", //TAKEOUT_DATE, DELIVERY_DATE, RETURN_DATE - Метод отбора (по дате создания/отгрузки/доставки/возврата)
    "fromDate":"2020-08-01 00:00:00", //Дата от
    "toDate":"2020-10-01 00:00:00", //Дата до
    "extendedAddress":true, //Выгрузить адрес по частям
    "exportTags":true, //Выгрузить метки
    "exportItems":true, //Данные по товарам (Может значительно замедлить экспорт, выполняется запрос регистров, ограничение в 1000 записей)
    "exportPackages":true, //Данные по транспортным местам
    "exportTechData":true, //Технические данные
   	"orderType":"CUSTOM", //STANDARD | KAKTUS_DOSTAVKA_V2   У обычных заказов - STANDARD
   	"orderSubType":"KAK2C_SUBSCRIPTION", //У обычных заказов он null. 
    "ids":["49379964-0003-2", "49379964-0003-3"] //Если требуется выгрузить заказы с указанными HumanId
  	"city":"Новосибирск",
	"deliveryInfos":["f7c887bc-2161-a53e-0c98-8180f458b79d"], //Список служб доставки
	"orderTags":["Метка"], //список ИМЁН меток (не гуидов!)
	"promocode":"ajaton3000",
	"statuses":["ORDER_INFO_REQUIRE_PAYMENT"], //Список статусов заказа
	"variantId":"982880" //sku humanId
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%22ordertype%22--%C2%A0-%D0%BE%D1%82%D0%B1%D0%BE%D1%80"><div><div>**"orderType"** - отбор по типу заказа. Если не передан, то возвращаются все типы.  
**"orderSubType"** - Отбор по подтипу заказа. У обычных заказов он null. Отбор моно проводить как по совокупности (тип + подтип), так и по отдельности (тип или подтип). Если тип и подтип не заданы, возвращаются все заказы в заданном промежутке дат (fromDate, toDate). Если задан orderSubType == "KAK2C_SUBSCRIPTION", название и количество колонок xls документа может изменится, для отображения данных по подпискам.</div><div></div><div>Для экспорта **обычных заказов**, orderType должен быть передан "STANDARD", а orderSubType можно не передавать, либо передать null.</div><div>Для экспорта **подписок**, "orderSubType": "KAK2C_SUBSCRIPTION", а "orderType": "CUSTOM".</div><div></div><div></div></div></div>**Положительный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk-"><div><div><div></div></div></div></div>```JSON
{
    "success": true,
    "count": 2274, //Число заказов в выборке
    "limit": 3000 //Максимальное кол-во заказов, которое может быть выгружено в эксель
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

# /api/lite/import/templates/order

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

/api/lite/import/templates/order

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

В файл записываются первые 10 товаров аккаунта

Можно задавать ему название "orderTemplate.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/order"
}
```

# /api/lite/export/order/now

### Экспеорт выбранного заказа в Excel (/api/lite/export/order/now)

<div id="bkmrk-"></div>/api/lite/export/order/now

**Параметр id - номер заказа**

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "recordsTotal": 1,
    "exportResults": [
        {
            "success": true,
            "id": null,
            "fileUrl": "https://storage.yandexcloud.net/items-export-kak2c/export_orders_info@hot-wave.ru_28.07.2021_09-29-24.xls",
            "fileID": "export_order_4247-2840",
            "fileSize": null,
            "rowsCount": null,
            "startTime": null,
            "finishTime": null,
            "processed": null,
            "rowsTotal": 1,
            "itemsProcessedCount": null,
            "itemsFailedCount": null
        }
    ]
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

###  

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

# /api/lite/export/order/invoice

### Экспорт инвойса по номеру заказа (/api/lite/export/order/invoice)

<div id="bkmrk-"></div>/api/lite/export/order/invoice

**Параметр id - номер заказа**

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "recordsTotal": 1,
    "exportResults": [
        {
            "success": true,
            "id": null,
            "fileUrl": "https://storage.yandexcloud.net/items-import-kak2c/tl_invoice_test@tempo.ru_31.08.2021_17-34-51.pdf",
            "fileID": "export_invoice_2502-123458",
            "fileSize": null,
            "rowsCount": null,
            "startTime": null,
            "finishTime": null,
            "processed": null,
            "rowsTotal": 1,
            "itemsProcessedCount": null,
            "itemsFailedCount": null
        }
    ]
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

###  

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

# api/lite/export/supply

### Список результатов экспорта поставок (подробная информация по экспорту) (/api/lite/export/supply)

api/lite/export/supply

**Положительный результат запроса:**

```
{
    "exportResults": [
        {
            "id": "1136",
            "itemsFailedCount": 0,
            "itemsProcessedCount": 0,
            "processed": false,
            "processingLog": [],
            "requestJson": "{\"fromDate\":\"2023-06-03 15:29:54\",\"exportItems\":\"true\",\"suppliers\":[\"8a65065d-7b68-57a7-692d-8d8db78b38cc\"],\"toDate\":\"2023-06-03 15:29:54\",\"statuses\":[\"NEW\"],\"ids\":[]}",
            "success": true
        },
        {
            "cloudUploadFinishTime": "2023-06-03 19:01:57",
            "fileID": "d39741e3-2338-4875-9309-75f7aeceb121.xls",
            "fileSize": "32 KB",
            "fileUrl": "https://storage.yandexcloud.net/items-export-kak2c/d39741e3-2338-4875-9309-75f7aeceb121.xls",
            "finishTime": "2023-06-03 19:01:41",
            "id": "1135",
            "itemsFailedCount": 0,
            "itemsProcessedCount": 46,
            "processed": true,
            "processingLog": [],
            "requestJson": "{\"exportItems\":true,\"suppliers\":[\"b1b74b49-dd24-999d-c1f7-31a7d3afa6e7\",\"11430b37-7f78-1202-f6cf-e4b460d81aca\"],\"statuses\":[]}",
            "rowsCount": 46,
            "rowsTotal": 46,
            "startTime": "2023-06-03 19:01:36",
            "success": true
        }

     ]
}
```

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

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

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

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

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

параметр: id (Идентификатор результата, если передан, возвращается подробная информация по результату)

например /api/lite/export/supply?id=1001

**Положительный результат запроса:**

```
{
    "cloudUploadFinishTime": "2023-06-05 11:07:00",
    "fileID": "4b205bee-cff2-43e4-adf6-8b44da45ed83.xls",
    "fileSize": "10 KB",
    "fileUrl": "https://storage.yandexcloud.net/items-export-kak2c/4b205bee-cff2-43e4-adf6-8b44da45ed83.xls",
    "finishTime": "2023-06-05 11:07:00",
    "id": "1001",
    "itemsFailedCount": 0,
    "itemsProcessedCount": 11,
    "processed": true,
    "processingLog": [],
    "requestJson": "{\"fromDate\":\"2022-06-03 15:29:54\",\"exportItems\":\"true\",\"suppliers\":[],\"toDate\":\"2023-06-03 15:29:54\",\"statuses\":[\"NEW\"],\"ids\":[]}",
    "rowsCount": 11,
    "rowsTotal": 11,
    "startTime": "2023-06-05 11:06:57",
    "success": true
}
```

**Отрицательный результат запроса:**

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

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

### Инициировать экспорт поставок (/api/lite/export/supply)

#### (асинхронный запрос)

/api/lite/export/supply

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

```
{
    "exportItems": "true",  //Данные по товарам (Может значительно замедлить экспорт, выполняется запрос регистров, ограничение в 1000 записей)
    "statuses": ["NEW"], //InfoStatus поставки
    "suppliers": ["8a65065d-7b68-57a7-692d-8d8db78b38cc"], //Id поставщика
    "fromDate": "2022-06-03 15:29:54",  //Дата от
    "toDate": "2023-06-03 15:29:54",  //Дата до
    "ids": []  //Если требуется выгрузить заказы с указанными HumanId
}
```

**Положительный результат запроса:**

**Пример**

```
{
    "success": true,
    "id": "1001",
    "fileUrl": null,
    "fileID": null,
    "fileSize": null,
    "rowsCount": null,
    "startTime": null,
    "finishTime": null,
    "cloudUploadFinishTime": null
}
```

**Отрицательный результат запроса:**

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

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

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

# /api/lite/export/supply/count

### Подсчитать кол-во поставок (/api/lite/export/supply/count)

api/lite/export/supply/count

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

```
{
    "exportItems": "true",  //Данные по товарам (Может значительно замедлить экспорт, выполняется запрос регистров, ограничение в 1000 записей)
    "statuses": ["NEW"], //InfoStatus поставки
    "suppliers": ["8a65065d-7b68-57a7-692d-8d8db78b38cc"], //Id поставщика
    "fromDate": "2022-06-03 15:29:54",  //Дата от
    "toDate": "2023-06-03 15:29:54",  //Дата до
    "ids": []  //Если требуется выгрузить заказы с указанными HumanId
}
```

**Положительный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div>```
{
"success": true,
"count": 2274, //Число поставок в выборке
"limit": 3000 //Максимальное кол-во поставок, которое может быть выгружено в эксель
}
```

**Отрицательный результат запроса:**

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

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

<div id="bkmrk-"></div><div id="bkmrk--0"><div></div><div><div aria-hidden="true"></div></div></div>

# Дэшборд

### Получение отчетов для дэшборда

/api/lite/reports

Возвращает список всех отчетов для дэшборда.

Опционально можно указать список интересующих отчетов, чтобы не загружать все.

Параметр types, например ?types=report\_sales\_sum\_1,report\_sales\_avg\_order\_1

Пример данных по отчетам:

```JSON
{
  	"success": true,
  	"errors": [],
    "report_sales_sum_1":{
      "currency": "RUB",
      "today": 99500,
      "week": 929000,
      "diffPercent": 12.2,
      "diffDirection": "UP"
    },
    "report_orders_sum_1":{
      "today": 41,
      "week": 120,
      "diffPercent": 8.2,
      "diffDirection": "DOWN"
    },
    "report_sales_avg_order_1":{
      "currency": "RUB",
      "month": 2330,
      "allTime": 1700,
      "diffPercent": 8.2,
      "diffDirection": "DOWN"
    },
    "report_orders_sale_percent_1":{
      "month": 96.5,
      "allTime": 94.2,
      "diffPercent": 8.2,
      "diffDirection": "DOWN"
    },
    "report_sales_dynamic_1":{
      "currency": "RUB",
      "week": 7800,
      "previousWeek": 140000,
      "previousWeekDiffDirection": "UP"
      "previousMonth": 820000,
      "previousMonthDiffDirection": "DOWN"
      "weeklyData":[
        {"point": "Пн", "currentValue": 10, "previousValue": 8},
        {"point": "Вт", "currentValue": 12, "previousValue": 11},
        {"point": "Ср", "currentValue": 10, "previousValue": 8},
        {"point": "Чт", "currentValue": 10, "previousValue": 8},
        {"point": "Пт", "currentValue": 10, "previousValue": 8},
        {"point": "Сб", "currentValue": null, "previousValue": null},
        {"point": "Вс", "currentValue": null, "previousValue": null}
        ],
      "monthlyData":[
        {"point": 1, "currentValue": 10, "previousValue": 8},
        {"point": 2, "currentValue": 12, "previousValue": 11},
        {"point": 3, "currentValue": 10, "previousValue": 8},
        {"point": 4, "currentValue": 10, "previousValue": 8},
       ...
        {"point": 31, "currentValue": null, "previousValue": null}
        ],
      "annuallyData":[
        {"point": "Янв", "currentValue": 10, "previousValue": 8},
        {"point": "Фев", "currentValue": 12, "previousValue": 11},
        {"point": "Мар", "currentValue": 10, "previousValue": 8},
        {"point": "Апр", "currentValue": 10, "previousValue": 8},
       ...
        {"point": "Дек", "currentValue": null, "previousValue": null}
        ]
    },
	"report_sales_dynamic_1_delivered":{
      "currency": "RUB",
      "week": 7800,
      "previousWeek": 140000,
      "previousWeekDiffDirection": "UP"
      "previousMonth": 820000,
      "previousMonthDiffDirection": "DOWN"
      "weeklyData":[
        {"point": "Пн", "currentValue": 10, "previousValue": 8},
        {"point": "Вт", "currentValue": 12, "previousValue": 11},
        {"point": "Ср", "currentValue": 10, "previousValue": 8},
        {"point": "Чт", "currentValue": 10, "previousValue": 8},
        {"point": "Пт", "currentValue": 10, "previousValue": 8},
        {"point": "Сб", "currentValue": null, "previousValue": null},
        {"point": "Вс", "currentValue": null, "previousValue": null}
        ],
      "monthlyData":[
        {"point": 1, "currentValue": 10, "previousValue": 8},
        {"point": 2, "currentValue": 12, "previousValue": 11},
        {"point": 3, "currentValue": 10, "previousValue": 8},
        {"point": 4, "currentValue": 10, "previousValue": 8},
       ...
        {"point": 31, "currentValue": null, "previousValue": null}
        ],
      "annuallyData":[
        {"point": "Янв", "currentValue": 10, "previousValue": 8},
        {"point": "Фев", "currentValue": 12, "previousValue": 11},
        {"point": "Мар", "currentValue": 10, "previousValue": 8},
        {"point": "Апр", "currentValue": 10, "previousValue": 8},
       ...
        {"point": "Дек", "currentValue": null, "previousValue": null}
        ]
    },
	"report_orders_dynamic_1":{
      "currency": "RUB",
      "week": 7800,
      "previousWeek": 140000,
      "previousWeekDiffDirection": "UP"
      "previousMonth": 820000,
      "previousMonthDiffDirection": "DOWN"
      "weeklyData":[
        {"point": "Пн", "currentValue": 10, "previousValue": 8},
        {"point": "Вт", "currentValue": 12, "previousValue": 11},
        {"point": "Ср", "currentValue": 10, "previousValue": 8},
        {"point": "Чт", "currentValue": 10, "previousValue": 8},
        {"point": "Пт", "currentValue": 10, "previousValue": 8},
        {"point": "Сб", "currentValue": null, "previousValue": null},
        {"point": "Вс", "currentValue": null, "previousValue": null}
        ],
      "monthlyData":[
        {"point": 1, "currentValue": 10, "previousValue": 8},
        {"point": 2, "currentValue": 12, "previousValue": 11},
        {"point": 3, "currentValue": 10, "previousValue": 8},
        {"point": 4, "currentValue": 10, "previousValue": 8},
       ...
        {"point": 31, "currentValue": null, "previousValue": null}
        ],
      "annuallyData":[
        {"point": "Янв", "currentValue": 10, "previousValue": 8},
        {"point": "Фев", "currentValue": 12, "previousValue": 11},
        {"point": "Мар", "currentValue": 10, "previousValue": 8},
        {"point": "Апр", "currentValue": 10, "previousValue": 8},
       ...
        {"point": "Дек", "currentValue": null, "previousValue": null}
        ]
    },
	"report_orders_dynamic_1_with_canceled":{
      "currency": "RUB",
      "week": 7800,
      "previousWeek": 140000,
      "previousWeekDiffDirection": "UP"
      "previousMonth": 820000,
      "previousMonthDiffDirection": "DOWN"
      "weeklyData":[
        {"point": "Пн", "currentValue": 10, "previousValue": 8},
        {"point": "Вт", "currentValue": 12, "previousValue": 11},
        {"point": "Ср", "currentValue": 10, "previousValue": 8},
        {"point": "Чт", "currentValue": 10, "previousValue": 8},
        {"point": "Пт", "currentValue": 10, "previousValue": 8},
        {"point": "Сб", "currentValue": null, "previousValue": null},
        {"point": "Вс", "currentValue": null, "previousValue": null}
        ],
      "monthlyData":[
        {"point": 1, "currentValue": 10, "previousValue": 8},
        {"point": 2, "currentValue": 12, "previousValue": 11},
        {"point": 3, "currentValue": 10, "previousValue": 8},
        {"point": 4, "currentValue": 10, "previousValue": 8},
       ...
        {"point": 31, "currentValue": null, "previousValue": null}
        ],
      "annuallyData":[
        {"point": "Янв", "currentValue": 10, "previousValue": 8},
        {"point": "Фев", "currentValue": 12, "previousValue": 11},
        {"point": "Мар", "currentValue": 10, "previousValue": 8},
        {"point": "Апр", "currentValue": 10, "previousValue": 8},
       ...
        {"point": "Дек", "currentValue": null, "previousValue": null}
        ]
    },
    "report_goods_turnover_1":{
      "week":1500,
      "previousWeek":4300,
      "previousWeekDiffDirection": "UP",
      "previousMonth": 6400,
      "previousMonthDiffDirection": "DOWN",
       "weeklyData":[
        {"point": "Пн", "warehoused": 10, "shipped": 8, "available": 2},
        {"point": "Вт", "warehoused": 10, "shipped": 8, "available": 2},
        {"point": "Ср", "warehoused": 10, "shipped": 8, "available": 2},
        {"point": "Чт", "warehoused": 10, "shipped": 8, "available": 2},
        {"point": "Пт", "warehoused": 10, "shipped": 8, "available": 2},
        {"point": "Сб", "warehoused": null, "shipped": null, "available": null},
        {"point": "Вс", "warehoused": null, "shipped": null, "available": null}
        ],
      "annuallyData":[
        {"point": "Янв", "warehoused": 10, "shipped": 8, "available": 2},
        {"point": "Фев", "warehoused": 10, "shipped": 8, "available": 2},
        {"point": "Мар", "warehoused": 10, "shipped": 8, "available": 2},
        {"point": "Апр", "warehoused": 10, "shipped": 8, "available": 2},
       ...
        {"point": "Авг, "warehoused": null, "shipped": null, "available": null}
        ]
    },
    "report_sales_channels_1":{
      "channelSales":[
        {"channel": "Ozon", "amount": 3487},
        {"channel": "Beru", "amount": 3100},
        {"channel": "Goods", "amount": 2900},
        {"channel": "Aliexpress", "amount": 2850},
        {"channel": "Online", "amount": 4865}
        ]
    },
    "report_sales_avg_order_full_1":{
       "currency": "RUB",
        "week": 1256,
        "month": 2330,
        "allTime": 1700,
        "annuallyData":[
        {"point": "Янв",  "amount": 3487},
        {"point": "Фев",  "amount": 4569},
        {"point": "Мар",  "amount": 1223},
        {"point": "Апр",  "amount": 4755},
       ...
        {"point": "Авг", "warehoused": null, "shipped": null, "available": null}
        ]
    },
    "report_orders_sum_full_1":{
        "week": 12,
        "month": 25,
        "allTime": 36,
        "annuallyData":[
        {"point": "Янв", "amount": 10, "amount_no_cod": 8, "amount_online": 2, "amount_cod": 3},
        {"point": "Фев", "amount": 10, "amount_no_cod": 8, "amount_online": 2, "amount_cod": 3},
        {"point": "Мар", "amount": 10, "amount_no_cod": 8, "amount_online": 2, "amount_cod": 3},
        {"point": "Апр", "amount": 10, "amount_no_cod": 8, "amount_online": 2, "amount_cod": 3},
       ...
        {"point": "Авг", "amount": null, "amount_no_cod": null, "amount_online": null, "amount_cod": null}
        ]
    },
	 "report_top_selling_products_1":{
       "currency": "RUB",        
        "products":[
        {"name": "Ботинки мужские, модель Privet, размер 41",  "productId": 1001, "variantId": 1020, "amount": 56, "totalSum": 6598.65, "avgItemSum": 117.8},   
		{"name": "Ботинки мужские, модель Privet, размер 42",  "productId": 1003, "variantId": 1018 "amount": 48, "totalSum": 5598.65, "avgItemSum": 120.8} 		
        ]
    },
	 "report_last_changed_orders_1":{          
        "orders":[
        {"id": "5966-5698",  "updateTs": "2020-08-01 16:35:45", "status": "ORDER_INFO_SHIPPED", "totalOrderSum": 6598.65},   
		{"id": "5966-5695",  "updateTs": "2020-08-01 16:28:41", "status": "ORDER_INFO_DELIVERED",  "totalOrderSum": 256.65}   		
        ]
    }
}
```

Отчеты сформированы под визуализацию, описанную в задачах:

[https://openproject.notasoft.ru/work\_packages/1003](https://openproject.notasoft.ru/work_packages/1003)

[https://openproject.notasoft.ru/work\_packages/1009](https://openproject.notasoft.ru/work_packages/1009)

[https://openproject.notasoft.ru/work\_packages/1010](https://openproject.notasoft.ru/work_packages/1010)

[https://openproject.notasoft.ru/projects/lk2/work\_packages/1034/activity](https://openproject.notasoft.ru/projects/lk2/work_packages/1034/activity)

Пример макета визуализации по указанным отчетам:

[![dashboard2.png](https://wiki.kak2c.ru/uploads/images/gallery/2020-08/scaled-1680-/dashboard2.png)](https://wiki.kak2c.ru/uploads/images/gallery/2020-08/dashboard2.png)

### Обновление данных для графика оборота товаров

/api/lite/report/update\_goods

Принудительно обновляет пересчет по обороту из БД.

# Личный кабинет покупателей

Апи для работы с личным кабинетом покупателей

# /api/customer/account/register

### <span style="color: #000000;">Создание нового аккаунта покупателя  
</span>

**/api/customer/account/register**

Для регистрации необходимо выполнить следующий запрос

```JSON
{
 "email": "test@test.com",
 "phone": "+798585858",
 "firstName": "Ivan",
 "lastName": "Ivanov",
 "middleName": "Ivanocich" 
}
```

Обязательные поля: <span style="text-decoration: underline; color: #ff0000;">email</span>

Также необходимо в **<span style="text-decoration: underline;">Header</span>** добавить **domain**, в котором указать нужный домен магазина.

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

возвращается сгенерированный пароль и jwt token для доступа

```JSON
{
"success": true,
"authToken": {
"success": true,
"access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpdmFuQHRlc3QuY29tIiwiZXhwIjoxNTk5MDU2MDA1fQ.-eEOV2NxHQAmt0habFOB18dr-P_drgS0S4YJmx15RMnTZYcGElwi7oEAgm-8qakr-aroYwyxrdwQ1NS_WVgYqA",
"token_type": "bearer",
"login": "ivan@test.com",
"expires_in": 14400,
"init_state": "completed"
},
"password": "8N9y8Jqb"
}
```

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

```JSON
{
"success": false,
"errors": [
  {
"code": 403,
"message": "Данный покупатель уже существует"
}
],
"authToken": null,
"password": null
}
```

# /api/customer/auth

### Авторизация

/api/customer/auth

Для авторизации необходимо выполнить следующий запрос

```JSON
{
"emailLogin": "yura@test.com",
"password": "123456"
}
```

Также необходимо в **<span style="text-decoration: underline;">Header</span>** добавить **domain**, в котором указать нужный домен магазина.

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

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

```JSON
{
  "success": true,
  "access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ3b3c1NkBtYWlsLnJ1IiwiZXhwIjoxNTQ2OTc2NzQ5fQ.4Zdev5PSIk1TmsPFxjxHukYwH1wa_efn19cfLIkT8k2g9xEeVMOnYK4A4pTC6NCpsp2kq8_dvygRxAyyEKNwiQ",
  "token_type": "bearer",
  "login": "wow56@mail.ru",
  "expires_in": 14400
}
```

где access\_token содержит токен для доступа

expires\_in - количество секунд действительности выданного токена.

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

```JSON
{
"success": false,
"errors": [
 {
 "code": 401,
 "message": "Unauthorized"
 }
]
}
```

**Для последующих методов,** использовать ключ токена следующим образом:

в запросе должен быть header

с ключем Authorization

и значением вида "Bearer {access\_token}"

например Bearer

`eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ3b3c1NUBtYWlsLnJ1IiwiZXhwIjoxNTQ2ODA3MjU3fQ.1vSO5DXhewQfjKITK76W8JhEZM_Wx2YgyEbdjfg9GDs0ymtRtmRgFuZen_n8fM00H1Uda_i6M2-Y1PbjN4edZA`

# /api/customer/account/password_reset

### <span style="color: #000000;">Запрос на сброс пароля покупателя  
</span>

<span style="color: #000000;">api/customer/account/password\_reset</span>

<span style="color: #000000;">Для запроса сброса необходимо отправить следующий запрос:</span>

```JSON
{ 
    "email":"test@test.ru"   
}
```

Также необходимо в **<span style="text-decoration: underline;">Header</span>** добавить **domain**, в котором указать нужный домен магазина.

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

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

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

при этом, по указанному email отправляется письмо со ссылкой вида

[http://localhost:33043/customer\_password\_reset\_confirm/?t=6aaccd91-1045-4200-b105-b4db79490fee](http://localhost:33043/password_reset_confirm/?t=6aaccd91-1045-4200-b105-b4db79490fee)

Где адрес сервера будет взят из текущего адреса, включая домен 3 уровня.

срок действия токена - 1 час

Данная ссылка будет открыта пользователем в браузере GET запросом.

js код должен обработать открытие подобной ссылки и вывести пользователю запрос на ввод нового пароля и подтверждение пароля.

По нажатию кнопки подтверждения на данном экране создания нового пароля следует выполнить POST запрос на адрес

```
/api/customer/password_reset_confirm
```

с передачей токена из ссылки и нового пароля (см следующий метод).

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

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

# /api/customer/account/password_reset_confirm

### <span style="color: #000000;">Сброс пароля </span>

<span style="color: #000000;">/api/customer/account/password\_reset\_confirm</span>

<span style="color: #000000;">Для сброса необходимо выполнить запрос с передачей временного токена сброса пароля и нового пароля:</span>

```JSON
{ 
    "token":"6aaccd91-1045-4200-b105-b4db79490fee",
    "password": "abcd"
}
```

Также необходимо в **<span style="text-decoration: underline;">Header</span>** добавить **domain**, в котором указать нужный домен магазина, для этого покупателя.

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

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

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

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

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

# api/customer/info

### <span style="color: #000000;">Запрос данных покупателя  
</span>

<span style="color: #000000;">api/customer/info</span>

<span style="color: #000000;">Метод возвращает информацию о текущем покупателе.</span>

<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.4%; height: 521px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">**Параметр**</td><td style="width: 18.0247%; height: 29px;">**Тип / формат**</td><td style="width: 62.2222%; height: 29px;">**Описание**</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">id

</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string

</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Идентификатор пользователя

</td></tr><tr role="row" style="height: 122px;"><td class="confluenceTd" style="width: 19.7531%; height: 56px;">emailLogin

</td><td class="confluenceTd" style="width: 18.0247%; height: 56px;">string

</td><td class="confluenceTd" style="width: 62.2222%; height: 56px;">Почта пользователя - является логином

</td></tr><tr role="row" style="height: 111px;"><td class="confluenceTd" style="width: 19.7531%; height: 45px;">firstName

</td><td class="confluenceTd" style="width: 18.0247%; height: 45px;">string</td><td class="confluenceTd" style="width: 62.2222%; height: 45px;">Имя

</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">lastName</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Фамилия</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">middleName</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Отчество</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">fullName</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Имя в формате ФИО</td></tr><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">phone</td><td style="width: 18.0247%; height: 29px;">string</td><td style="width: 62.2222%; height: 29px;">Отформатированный телефон</td></tr><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">rawPhone</td><td style="width: 18.0247%; height: 29px;">string</td><td style="width: 62.2222%; height: 29px;">Телефон</td></tr><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">alternativeRawPhome</td><td style="width: 18.0247%; height: 29px;">string</td><td style="width: 62.2222%; height: 29px;">Дополнительный телефон</td></tr><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">alternativePhone</td><td style="width: 18.0247%; height: 29px;">string</td><td style="width: 62.2222%; height: 29px;">Дополнительный отформатированный телефон</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">address

</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">object

</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Адрес пользователя

</td></tr><tr><td style="width: 19.7531%;">consentToNewsletter

</td><td style="width: 18.0247%;">boolean

</td><td style="width: 62.2222%;">Согласие на email рассылку

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

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

```JSON
{
  "id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
  "emailLogin": "ivan@test.com",
  "firstName": "Ivan",
  "lastName": "Ivanov",
  "middleName": "Ivanovich",
  "fullName": "Ivanov Ivan Ivanovich",
  "phone": "",
  "rawPhone": "+7985858585",
  "alternativePhone": ""
  "address": {
      "country": "Россия",
      "countryCode": "RU",
      "region": "Московская",
      "area": null,
      "city": "Красногорск",
      "settlement": "Ангелово",
      "street": "мкр МЖК Росинка",
      "house": "74/1",
      "block": "",
      "building": "",
      "flat": "1",
      "fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
      "fullCity": null,
      "rawData": null,
      "zip": "143442",
      "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
      "areaFias": null,
      "cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
      "settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
      },
  "consentToNewsletter": true
}
```

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

```
{
"success": false,
"errors": [
 {
 "code": 0,
 "message": "Покупатель не найден"
 }
]
}
```

# (POST) api/customer/info

### Редактировать информацию о покупателе

api/customer/info

Производит редактирование профиля текущего покупателя.

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

```JSON
{
  "rawPhone": "+7985858585",
  "firstName": "Oleg",
  "lastName": "Pushkin",
  "middleName": "Ivanov"
  "password": "123456",
  "rawAlternativePhone": "+85645545454",
   "address": {
      "country": "Россия",
      "countryCode": "RU",
      "region": "Московская",
      "area": null,
      "city": "Красногорск",
      "settlement": "Ангелово",
      "street": "мкр МЖК Росинка",
      "house": "74/1",
      "block": "",
      "building": "",
      "flat": "1",
      "fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
      "fullCity": null,
      "rawData": null,
      "zip": "143442",
      "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
      "areaFias": null,
      "cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
      "settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
      },
  "consentToNewsletter": true
}
```

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

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

В случае успеха вернется обновленный покупатель:

```JSON
{
  "id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
  "emailLogin": "ivan@test.com",
  "rawPhone": "+7985858585",
  "firstName": "Oleg",
  "lastName": "Pushkin",
  "middleName": "Ivanov"
  "rawAlternativePhone": "+85645545454",
  "fullName": "Pushkin Oleg Ivanov",
  "phone": "",
  "alternativePhone": ""
  "address": {
      "country": "Россия",
      "countryCode": "RU",
      "region": "Московская",
      "area": null,
      "city": "Красногорск",
      "settlement": "Ангелово",
      "street": "мкр МЖК Росинка",
      "house": "74/1",
      "block": "",
      "building": "",
      "flat": "1",
      "fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
      "fullCity": null,
      "rawData": null,
      "zip": "143442",
      "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
      "areaFias": null,
      "cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
      "settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
      },
  "consentToNewsletter": true
}
```

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

```JSON
{
"success": false,
"errors": [
 {
 "code": 0,
 "message": "Покупатель не найден"
 }
]
}
```

# api/customer/orders

### Запрос списка заказов

api/customer/orders

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

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

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

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

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

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

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

```JSON
{
"success": true,
"recordsTotal": 2,
"orders": [
  {
"id": "20412212",
"date": "2020-06-03 09:22:06",
"updateTs": "2020-06-10 16:09:43.226",
"status": "ORDER_INFO_DONE",
"totalOrderSum": 1208,
"insuranceSum": 1059,
"insuranceSumAutoCalculation": true,
"paymentStatus": "PAID",
"confirmStatus": "APPROVED",
"paymentMethodCode": "online",
"paymentMethodType": "ONLINE",
"needCustomerPayment": true,
"shortUrl": "http://r.kak2c.ru/o6meazi",
"delivery": {
"code": "b26909d5-8424-7de9-42ca-53f668f70a8a",
"type": "COURIER",
"title": "BERU",
"pickupPointId": null,
"logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_beru_middle.svg",
"trackingNumber": "20412212",
"trackingURL": null,
"desiredDeliveryDate": null,
"desiredDeliveryTimeFrom": "09:00",
"desiredDeliveryTimeTo": "18:00",
"actualDeliveryDate": null,
"pvzComment": null,
"deliveryComment": null,
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": null,
"house": null,
"block": null,
"building": null,
"flat": null,
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": null,
"regionFias": null,
"areaFias": null,
"cityFias": null,
"settlementFias": null
},
"receiver": {
"name": "Покупатель на Беру",
"surname": null,
"patronymic": null,
"phone": "+70000000000",
"rawPhone": "+70000000000",
"alternativePhone": "",
"email": null,
"post": null,
"personType": "CUSTOMER",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": null,
"house": null,
"block": null,
"building": null,
"flat": null,
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": null,
"regionFias": null,
"areaFias": null,
"cityFias": null,
"settlementFias": null
}
},
"deliveryServices": null
},
"items": [
  {
"num": 1,
"variantId": "83491",
"variantExtId": "NL290-83491",
"productId": "1052",
"productExtId": "83490",
"name": "CC крем «Абсолютное совершенство» SPF 20, 30 мл, Оттенок: Light ",
"article": "NL290-83491",
"quantity": 1,
"vatRate": "VAT_20",
"price": 1059,
"skuType": "SKU",
"itemDimensions": {
"height": 0,
"width": 0,
"depth": 0
},
"itemWeight": 0,
"barcode": "6412600834918"
},
  {
"num": 2,
"variantId": "delivery",
"name": "Доставка",
"article": "",
"quantity": 1,
"vatRate": "VAT_20",
"price": 149,
"skuType": "SERVICE",
"barcode": ""
}
],
"customerPaymentInProcess": false,
"customer": {
"id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
"emailLogin": "yura@test.com",
"firstName": "Yura",
"lastName": "Dan",
"middleName": "Dan",
"fullName": "Dan Yura Dan",
"phone": "",
"rawPhone": "+7985858585",
"alternativePhone": "",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Московская",
"area": null,
"city": "Красногорск",
"settlement": "Ангелово",
"street": "мкр МЖК Росинка",
"house": "74/1",
"block": "",
"building": "",
"flat": "1",
"fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
"fullCity": null,
"rawData": null,
"zip": "143442",
"regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaFias": null,
"cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
"settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
}
},
"c": "f132f0d9-ced0-1134-573c-5dba550e3792"
},
  {
"id": "19918626",
"date": "2020-05-25 21:19:24",
"updateTs": "2020-06-05 17:38:27.352",
"status": "ORDER_INFO_DONE",
"totalOrderSum": 579,
"insuranceSum": 579,
"insuranceSumAutoCalculation": true,
"paymentStatus": "NOT_PAID",
"confirmStatus": "APPROVED",
"paymentMethodCode": "cod-cash",
"paymentMethodType": "COD_CASH",
"needCustomerPayment": false,
"shortUrl": "http://r.kak2c.ru/jc2dyb2",
"delivery": {
"code": "b26909d5-8424-7de9-42ca-53f668f70a8a",
"type": "COURIER",
"title": "BERU",
"pickupPointId": null,
"logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_beru_middle.svg",
"trackingNumber": "19918626",
"trackingURL": null,
"desiredDeliveryDate": null,
"desiredDeliveryTimeFrom": "09:00",
"desiredDeliveryTimeTo": "18:00",
"actualDeliveryDate": null,
"pvzComment": null,
"deliveryComment": null,
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": null,
"house": null,
"block": null,
"building": null,
"flat": null,
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": null,
"regionFias": null,
"areaFias": null,
"cityFias": null,
"settlementFias": null
},
"receiver": {
"name": "Покупатель на Беру",
"surname": null,
"patronymic": null,
"phone": "+70000000000",
"rawPhone": "+70000000000",
"alternativePhone": "",
"email": null,
"post": null,
"personType": "CUSTOMER",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": null,
"house": null,
"block": null,
"building": null,
"flat": null,
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": null,
"regionFias": null,
"areaFias": null,
"cityFias": null,
"settlementFias": null
}
},
"deliveryServices": null
},
"items": [
  {
"num": 1,
"variantId": "84981",
"variantExtId": "NL110-84981",
"productId": "1019",
"productExtId": "NL110-84981",
"name": "Тушь с черникой для чувствительных глаз, 9 мл, Оттенок: Черный ",
"article": "NL110-84981",
"quantity": 1,
"vatRate": "NO_VAT",
"price": 579,
"img": "https://storage.yandexcloud.net/images-k2c/eef378d6-853f-4c75-a3b4-b2bdec352fe7.jpg",
"skuType": "SKU",
"itemDimensions": {
"height": 0,
"width": 0,
"depth": 0
},
"itemWeight": 0,
"barcode": "6412600849813"
},
  {
"num": 2,
"variantId": "delivery",
"name": "Доставка",
"article": "",
"quantity": 1,
"vatRate": "NO_VAT",
"price": 0,
"skuType": "SERVICE",
"barcode": ""
}
],
"customerPaymentInProcess": false,
"customer": {
"id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
"emailLogin": "yura@test.com",
"firstName": "Yura",
"lastName": "Dan",
"middleName": "Dan",
"fullName": "Dan Yura Dan",
"phone": "",
"rawPhone": "+7985858585",
"alternativePhone": "",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Московская",
"area": null,
"city": "Красногорск",
"settlement": "Ангелово",
"street": "мкр МЖК Росинка",
"house": "74/1",
"block": "",
"building": "",
"flat": "1",
"fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
"fullCity": null,
"rawData": null,
"zip": "143442",
"regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaFias": null,
"cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
"settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
}
},
"c": "326a2701-e668-c8b2-dda6-ab259921aaee"
}
],
}
```

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

<div id="bkmrk-"></div>```JSON
{
  "success": false,
  "errors": [{"code": 0,"message": "Текст ошибки"}]
}
```

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

# api/customer/orders/cancelled

### Отменить заказ покупателя

api/customer/orders/cancelled

Производит отмену заказа.

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

```JSON
{ 
"orderId":"1029" 
}
```

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

#### **успех:**

```JSON
{
"success": true

}
```

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

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

# Покупатели

Апи для менеджеров магазина, позволяет создавать и редактировать покупателей

# /api/lite/customers/

### Запрос списка покупателей

api/lite/customers/

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

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

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

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

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

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

<div id="bkmrk-%D0%94%D0%BB%D1%8F-%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE"><div><div>Для фильтрации компонентов страницы, можно использовать параметр **text** и указать в нем имя либо email пользователя</div><div></div><div>**Пример: `api/lite/customers?page=0&size=10&text=Ivan`**</div></div></div>Также, для отображение пейджинации следует анализировать параметр totalElements и totalPages, возвращающий общее количество записей (с учетом примененной фильтрации, если она есть) и страниц.

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

```JSON
{
"content": [
  {
    "id": "e63d94d8-258f-489a-00fe-b8b6025ce677",
    "emailLogin": "ivan@test.com",
    "firstName": "Ivan",
    "lastName": null,
    "middleName": null,
    "fullName": "Ivan",
    "phone": "",
    "rawPhone": "+79995556677",
    "alternativePhone": "",
    "consentToNewsletter": true
    },
  {
    "id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
    "emailLogin": "yura@test.com",
    "firstName": "Yura",
    "lastName": "Dan",
    "middleName": "Dan",
    "fullName": "Dan Yura Dan",
    "phone": "",
    "rawPhone": "+7985858585",
    "alternativePhone": "",
    "address": {
        "country": "Россия",
        "countryCode": "RU",
        "region": "Московская",
        "area": null,
        "city": "Красногорск",
        "settlement": "Ангелово",
        "street": "мкр МЖК Росинка",
        "house": "74/1",
        "block": "",
        "building": "",
        "flat": "1",
        "fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
        "fullCity": null,
        "rawData": null,
        "zip": "143442",
        "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
        "areaFias": null,
        "cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
        "settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
    },
    "consentToNewsletter": false
    }
],
"pageable": {
    "sort": {
    "sorted": false,
    "unsorted": true,
    "empty": true
    },
  "offset": 0,
  "pageNumber": 0,
  "pageSize": 10,
  "paged": true,
  "unpaged": false
},
  "last": true,
  "totalElements": 2,
  "totalPages": 1,
  "size": 10,
  "number": 0,
  "sort": {
  "sorted": false,
  "unsorted": true,
  "empty": true
},
"first": true,
"numberOfElements": 2,
"empty": false
}
```

# /api/lite/customers/{email}

### <span style="color: #000000;">Запрос данных покупателя  
</span>

<span style="color: #000000;">/api/lite/customers/{email}</span>

- <span style="color: #000000;">email - логин-почта пользователя</span>

<span style="color: #000000;">Метод возвращает информацию о текущем данном покупателе.</span>

<span style="color: #000000;">Пример: `/api/lite/customers/test@test.com`</span>

<span style="color: #000000;">Метод возвращает информацию о текущем покупателе.</span>

<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.4%; height: 521px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">**Параметр**</td><td style="width: 18.0247%; height: 29px;">**Тип / формат**</td><td style="width: 62.2222%; height: 29px;">**Описание**</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">id

</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string

</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Идентификатор пользователя

</td></tr><tr role="row" style="height: 122px;"><td class="confluenceTd" style="width: 19.7531%; height: 56px;">emailLogin

</td><td class="confluenceTd" style="width: 18.0247%; height: 56px;">string

</td><td class="confluenceTd" style="width: 62.2222%; height: 56px;">Почта пользователя - является логином

</td></tr><tr role="row" style="height: 111px;"><td class="confluenceTd" style="width: 19.7531%; height: 45px;">firstName

</td><td class="confluenceTd" style="width: 18.0247%; height: 45px;">string</td><td class="confluenceTd" style="width: 62.2222%; height: 45px;">Имя

</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">lastName</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Фамилия</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">middleName</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Отчество</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">fullName</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">string</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Имя в формате ФИО</td></tr><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">phone</td><td style="width: 18.0247%; height: 29px;">string</td><td style="width: 62.2222%; height: 29px;">Отформатированный телефон</td></tr><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">rawPhone</td><td style="width: 18.0247%; height: 29px;">string</td><td style="width: 62.2222%; height: 29px;">Телефон</td></tr><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">alternativeRawPhome</td><td style="width: 18.0247%; height: 29px;">string</td><td style="width: 62.2222%; height: 29px;">Дополнительный телефон</td></tr><tr style="height: 29px;"><td style="width: 19.7531%; height: 29px;">alternativePhone</td><td style="width: 18.0247%; height: 29px;">string</td><td style="width: 62.2222%; height: 29px;">Дополнительный отформатированный телефон</td></tr><tr role="row" style="height: 55px;"><td class="confluenceTd" style="width: 19.7531%; height: 55px;">address

</td><td class="confluenceTd" style="width: 18.0247%; height: 55px;">object

</td><td class="confluenceTd" style="width: 62.2222%; height: 55px;">Адрес пользователя

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

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

```JSON
{
"id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
"emailLogin": "ivan@test.com",
"firstName": "Ivan",
"lastName": "Ivanov",
"middleName": "Ivanovich",
"fullName": "Ivanov Ivan Ivanovich",
"phone": "",
"rawPhone": "+7985858585",
"alternativePhone": ""
"address": {
    "country": "Россия",
    "countryCode": "RU",
    "region": "Московская",
    "area": null,
    "city": "Красногорск",
    "settlement": "Ангелово",
    "street": "мкр МЖК Росинка",
    "house": "74/1",
    "block": "",
    "building": "",
    "flat": "1",
    "fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
    "fullCity": null,
    "rawData": null,
    "zip": "143442",
    "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
    "areaFias": null,
    "cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
    "settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
	}
}
```

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

```JSON
{
"success": false,
"errors": [
   {
   "code": 0,
   "message": "Не найден покупатель с указанным email test@test.com"
   }
]
}
```

# POST /api/lite/customers/

### Редактировать информацию о покупателе

/api/lite/customers/

Производит редактирование выбранного покупателя или **добавление нового,** если покупатель не найден**.**

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

```JSON
{
  "emailLogin": "test@test.com",
  "firstName": "Oleg",
  "lastName": "Pushkin",
  "middleName": "Ivanov"
  "rawPhone": "+792556123456",
  "rawAlternativePhone": "+85645545454"
}
```

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

В случае успеха вернется обновленный покупатель:

```JSON
{
  "id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
  "emailLogin": "ivan@test.com",
  "rawPhone": "+7985858585",
  "firstName": "Oleg",
  "lastName": "Pushkin",
  "middleName": "Ivanov"
  "rawAlternativePhone": "+85645545454",
  "fullName": "Pushkin Oleg Ivanov",
  "phone": "",
  "alternativePhone": ""
}
```

# DELETE /api/lite/customers/

### Удаление покупателя

/api/lite/customers/

**Параметры:**

- **email**

Метод удаляет выбранного покупателя

Пример: /api/lite/customers?email=test@test.com

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

Вернет id удаленного покупателя

```JSON
{
  "success": true,
  "id":"9a5e8591-7ea7-adb6-34db-546f105fc11a"
}
```

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

```JSON
{
"success": false,
"errors": [
   {
   "code": 0,
   "message": "Не найден покупатель с указанным email test@test.com"
   }
]
}
```

# customers.enable=true

Данный параметр приложения отвечает за включение или отключение автоматического добавление(создание нового покупателя) при заказе.

- customers.enable=true
- customers.enable=false

# Фиды для Я.Маркета

# /api/lite/feed/settings

### Список фидов(подробная информация по фиду) (/api/lite/feed/settings)

<div id="bkmrk-"></div>/api/lite/feed/settings

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "recordsTotal": 1,
    "settings": [
        {
            "success": true,
            "id": "83dcafbd-ba01-9742-88c0-03746cbfca48",
            "name": "Фид для маркета",
            "cloudUrl": "https://storage.yandexcloud.net/images-k2c/0de5d740-b2d4-4425-9490-7f5153daa698.xml",
            "cloudId": "0de5d740-b2d4-4425-9490-7f5153daa698",
            "active": false,
            "lastUpdate": null,
            "collections": [
                "1001"
            ],
            "shopName": "Магазин 01",
          	"shopUrl": "https://lumene.ru/", //Адрес магазина, влияет на тег <url>https://lumene.ru/</url>
    		"shopOfferUrl": "https://lumene.ru/catalog/{UTM}#/item/{ID}", //Шаблон адреса товара.
            "companyName": "ООО ААА",
            "deliveryEnabled": true,
            "selfPickupEnabled": true,
            "nonPreorderEnabled": false,
            "deliveryMethods": [
                {
                    "deliveryPrice": 150,
                    "minDays": 1,
                    "maxDays": 3,
                    "placeOrderHour": 18
                }
            ],
            "pickupMethods": [
                {
                    "deliveryPrice": 0,
                    "minDays": 1,
                    "maxDays": 1,
                    "placeOrderHour": 0
                }
            ],
            "adult": false,
            "offerNameFormat": "NAME",
            "utm": "utm_token=12332&utm_source=ya.ru",
            "salesNote": "Все товары сертифицированы",
            "useOfferGroups": true,
            "attrMatching": {
                "manufacturer_warranty": "warranty"
            },
            "priceCode": null,
            "oldPriceCode": "Цена до скидки"
        }
    ]
}
```

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

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

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

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

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

параметр: id (Идентификатор фида, если передан, возвращается подробная информация по фиду)

например /api/lite/feed/settings?id=83dcafbd-ba01-9742-88c0-03746cbfca48

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "id": "83dcafbd-ba01-9742-88c0-03746cbfca48",
    "name": "Фид для маркета",
    "cloudUrl": null,
    "cloudId": null,
    "active": false,
    "lastUpdate": null,
    "collections": [
        "1001"
    ],
    "shopName": "Магазин 01",
  	"shopUrl": "https://shop.ru/", 
    "shopOfferUrl": "https://shop.ru/catalog/{UTM}#/item/{ID}",
    "companyName": "ООО ААА",
    "deliveryEnabled": true,
    "selfPickupEnabled": true,
    "nonPreorderEnabled": false,
    "deliveryMethods": [
        {
            "deliveryPrice": 150,
            "minDays": 1,
            "maxDays": 3,
            "placeOrderHour": 18
        }
    ],
    "pickupMethods": [
        {
            "deliveryPrice": 0,
            "minDays": 1,
            "maxDays": 1,
            "placeOrderHour": 0
        }
    ],
    "adult": false,
    "offerNameFormat": "NAME",
    "utm": "utm_token=12332&utm_source=ya.ru",
    "salesNote": "Все товары сертифицированы",
    "useOfferGroups": true,
    "attrMatching": {
        "manufacturer_warranty": "warranty"
    },
    "priceCode": null,
    "oldPriceCode": "Цена до скидки",
  	"checkStock": false, //Проставлять отсутствующим товарам флаг "под заказ"
  	"excludeZeroStock":false, //Исключать из фида товар с нулевыми остатками
    "warehouseCode": null //ИД склада
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

### Обновить настройки фида (/api/lite/feed/settings)

<div id="bkmrk--1"><div></div></div>/api/lite/feed/settings

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

```JSON
{
   "id": "83dcafbd-ba01-9742-88c0-03746cbfca48", //если не задан, то создаётся новый фид
    "name": "Фид для маркета",
    "active": false,
    "collections": [
        "1001"
    ],
    "shopName": "Магазин 01",
  	"shopUrl": "https://shop.ru/", //Адрес магазина, влияет на тег <url>https://shop.ru/</url>
    "shopOfferUrl": "https://shop.ru/catalog/{UTM}#/item/{ID}", //Шаблон адреса товара.
    "companyName": "ООО ААА",
    "deliveryEnabled": true,
    "selfPickupEnabled": true,
    "nonPreorderEnabled": true,
    "deliveryMethods": [{"deliveryPrice":150, "minDays":1, "maxDays":3, "placeOrderHour":18}],
    "pickupMethods": [{"deliveryPrice":0, "minDays":1, "maxDays":1, "placeOrderHour":0}],
    "adult": false,
    "offerNameFormat": "NAME", //NAME_COLLECTION_PARENTHESES | NAME_COLLECTION_COLON
    "utm": "utm_token=12332&utm_source=ya.ru",
    "salesNote": "Все товары сертифицированы",
    "useOfferGroups": true,
    "attrMatching": {"manufacturer_warranty":"warranty", "sales_notes": "notes"}, //"код в маркете" : "код в кактусе"
    "priceCode": "Розничная цена",
    "oldPriceCode": "Цена до скидки"
  	"updateInterval": 10, //Интервал автообновления фида, минуты. Минимально - 10 мин. По умолчанию: 24 * 60 = 1440 минут
    "checkStock": false, //Проверять наличие товара на складе, влияет на параметр available в теге <offer>. false по умолчанию
  	"excludeZeroStock":false, //Исключать из фида товар с нулевыми остатками. false по умолчанию
    "warehouseCode": null //ид склада остатков (guid). если не указан, остатки проверяются на всех складах. null по умолчанию
}
```

<div data-hasbody="true" data-macro-name="code" id="bkmrk--2"><div><div><div></div></div></div></div>**Положительный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--3"><div><div><div></div></div></div></div>```JSON
{
    "success": true,	
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%7B-%22suc"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

</div></div>### Удаление фида

/api/lite/feed/settings&amp;id=

параметр: id (Идентификатор фида)

например /api/lite/feed/settings?id=83dcafbd-ba01-9742-88c0-03746cbfca48

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

<div id="bkmrk-%7B-%22success%22%3A-true%2C-%7D-0"><div>```JSON
{
  "success": true,
}
```

</div></div>#### **Ошибка:** 

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

</div></div></div></div></div>

# /api/lite/feed/settings/download_yml

### Сгенерировать и скачать yml файл (/api/lite/feed/settings/download\_yml)

<div id="bkmrk-"><div></div></div>/api/lite/feed/settings/download\_yml?id=

параметр: id (идентификатор фида)

например /api/lite/feed/settings/download\_yml?id=83dcafbd-ba01-9742-88c0-03746cbfca48

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

application/octet-stream

<div data-hasbody="true" data-macro-name="code" id="bkmrk--0"></div>#### **Ошибка:** 

status 500

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%7B-%22timestamp%22%3A-%222020"><div data-hasbody="true" data-macro-name="code"><div>```JSON
{
"timestamp": "2020-04-03T10:38:46.343+0000",
"status": 500,
"error": "Internal Server Error",
"message": "12345",
"path": "/api/lite/feed/settings/download_yml"
}
```

</div></div></div>

# /api/lite/feed/market_attributes

### Список возможных атрибутов Я.Маркета(/api/lite/feed/market\_attributes)

Возвращает все возможные атрибуты из маркета.

Служит ключом в маппинге "attrMatching"

\* Для получения всех атрибутов продукта в кактусе есть метод: [/api/lite/products/attributes](http://wiki.kak2c.ru/books/%D0%BA%D0%B0%D0%BA%D1%82%D1%83%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2/page/apiliteproductsattributes)

(код атрибута продукта служит значением в маппинге "attrMatching")

<div id="bkmrk-"></div>/api/lite/feed/market\_attributes

**Положительный результат запроса:**

```JSON
{
    "success": true,
    "marketAttributes": [
        {
            "id": "available",
            "name": "Статус товара (в наличие/на заказ)"
        },
        {
            "id": "bid",
            "name": "Ставка"
        },
        {
            "id": "url",
            "name": "URL страницы товара "
        },
        {
            "id": "oldPrice",
            "name": "Старая цена товара"
        },
        {
            "id": "vendor",
            "name": "Производитель"
        },
        {
            "id": "vendorCode",
            "name": "Код производителя"
        },
        {
            "id": "model",
            "name": "Модель"
        },
        {
            "id": "sales_notes",
            "name": "Комментарий к товару"
        },
        {
            "id": "description",
            "name": "Описание товарного предложения"
        },
        {
            "id": "name",
            "name": "Название товарного предложения"
        },
        {
            "id": "delivery",
            "name": "Возможность курьерской доставки"
        },
        {
            "id": "pickup",
            "name": "Возможность самовывоза"
        },
        {
            "id": "store",
            "name": "Возможность купить товар без предварительного заказf"
        },
        {
            "id": "manufacturer_warranty",
            "name": "Официальная гарантия производителя (да/нет)"
        },
        {
            "id": "country_of_origin",
            "name": "Страна производства товара"
        },
        {
            "id": "adult",
            "name": "Товары adult-тематики"
        },
        {
            "id": "age",
            "name": "Возрастная категория товара (годы)"
        },
        {
            "id": "downloadable",
            "name": "Продукт можно скачать"
        }
    ]
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%7B-%22suc"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

</div></div>

# /api/lite/feed/refresh

### Обновить содержимое фида(в облаке) (/api/lite/feed/refresh)

<div id="bkmrk-"><div></div></div>/api/lite/feed/refresh?id=

**Обновляет файл в облаке.**

**параметр: id (Идентификатор фида) обязательный**

**Положительный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80"><div>**Пример**</div></div><div data-hasbody="true" data-macro-name="code" id="bkmrk--0"><div><div><div></div></div></div></div>```JSON
{
    "success": true,
    "id": "83dcafbd-ba01-9742-88c0-03746cbfca48",
    "name": "Фид для маркета",
    "cloudUrl": "https://storage.yandexcloud.net/images-k2c/0de5d740-b2d4-4425-9490-7f5153daa698.xml",
    "cloudId": "0de5d740-b2d4-4425-9490-7f5153daa698.xml",
    "active": false,
    "lastUpdate": "2020-10-20 19:52:09",
    "collections": [
        "1001"
    ],
    "shopName": "Магазин 01",
    "companyName": "ООО ААА",
    "deliveryEnabled": true,
    "selfPickupEnabled": true,
    "nonPreorderEnabled": false,
    "deliveryMethods": [
        {
            "deliveryPrice": 150,
            "minDays": 1,
            "maxDays": 3,
            "placeOrderHour": 18
        }
    ],
    "pickupMethods": [
        {
            "deliveryPrice": 0,
            "minDays": 1,
            "maxDays": 1,
            "placeOrderHour": 0
        }
    ],
    "adult": false,
    "offerNameFormat": "NAME",
    "utm": "utm_token=12332&utm_source=ya.ru",
    "salesNote": "Все товары сертифицированы",
    "useOfferGroups": true,
    "attrMatching": {
        "manufacturer_warranty": "warranty"
    },
    "priceCode": null,
    "oldPriceCode": "Цена до скидки"
}
```

**Отрицательный результат запроса:**

<div data-hasbody="true" data-macro-name="code" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-%7B-%22suc"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div data-hasbody="true" data-macro-name="code"><div>**Пример ошибки**</div><div><div><div></div></div></div></div></div>```JSON
{
  "success": false,
  "errors": [
    {
      "code": 0,
      "message": "текст ошибки"
    }
  ]
}
```

</div></div>

# FBO WB/OZON API

# /api/lite/orders/worksheet/form_template

### Запрос шаблона анкеты FBM

/api/lite/orders/worksheet/form\_template?order\_id=123437

параметр order\_id - ИД заказа в Кактусе, обязательный

<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-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-id" role="grid"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">**Поле**</td><td style="width: 18.2715%; height: 28px;">**Тип**</td><td style="width: 56.7902%; height: 28px;">**Описание**</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 24.9383%; height: 44px;">id</td><td class="confluenceTd" style="width: 18.2715%; height: 44px;">string</td><td class="confluenceTd" style="width: 56.7902%; height: 44px;">ИД поля анкеты в Кактусе.</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 24.9383%; height: 44px;">extId</td><td class="confluenceTd" style="width: 18.2715%; height: 44px;">string</td><td class="confluenceTd" style="width: 56.7902%; height: 44px;">Внешний ИД поля анкеты. Используется для сопоставления при передаче во внешние системы</td></tr><tr><td style="width: 24.9383%;">name</td><td style="width: 18.2715%;"> string</td><td style="width: 56.7902%;">Вопрос, который отображается над полем</td></tr><tr><td style="width: 24.9383%;">tooltip</td><td style="width: 18.2715%;"> string</td><td style="width: 56.7902%;">Подсказка к полю (всплывайка при наведении на символ (?))

Если null, или отсутствует, то символ подсказки не отображается

</td></tr><tr><td style="width: 24.9383%;">value</td><td style="width: 18.2715%;">string</td><td style="width: 56.7902%;">Значение поля по умолчанию

</td></tr><tr><td style="width: 24.9383%;">mandatory</td><td style="width: 18.2715%;">boolean</td><td style="width: 56.7902%;">Обязательность заполнения поля. При дальнейшей валидации, проверяется заполненность value

</td></tr><tr><td style="width: 24.9383%;">inputType</td><td style="width: 18.2715%;">string</td><td style="width: 56.7902%;">Тип поля ввода. Влияет на отрисовку на форме.

Значения: INPUT, TEXTAREA

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

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

```json
{
    "success": true,
    "requirements": {
        "form": true,
        "packing_sticker_type": "NONE",
      	"pallet_sticker_type":"PDF"
    },
    "form_content": [
        {
            "id": "1000",
            "name": "Наименование юрлица",
            "value": "",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1001",
            "name": "Номер поставки МП",
            "value": "",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1002",
            "name": "Дата доставки на склад МП",
            "value": "",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1003",
            "name": "Тип отгрузки: короба, моно, микс",
            "value": "",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1004",
            "name": "Дополнительная упаковка: да/нет",
            "value": "",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1005",
            "name": "Нанесение дополнительного стикера с описанием товара",
            "value": "",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1006",
            "name": "Минимальное количество товара в коробе",
            "value": "",
            "mandatory": true,
            "inputType": "INPUT"
        }
    ]
}
```

# /api/lite/orders/worksheet

### Запрос анкеты FBM по заказу

/api/lite/orders/worksheet?orderId=TS100307

параметр orderId - ИД заказа в Кактусе, обязательный.

<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-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-id" role="grid"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 28px;"><td style="width: 24.9383%; height: 28px;">**Поле**

</td><td style="width: 18.2715%; height: 28px;">**Тип**</td><td style="width: 56.7902%; height: 28px;">**Описание**</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 24.9383%; height: 44px;">id</td><td class="confluenceTd" style="width: 18.2715%; height: 44px;">string</td><td class="confluenceTd" style="width: 56.7902%; height: 44px;">ИД поля анкеты в Кактусе.</td></tr><tr role="row" style="height: 44px;"><td class="confluenceTd" style="width: 24.9383%; height: 44px;">extId</td><td class="confluenceTd" style="width: 18.2715%; height: 44px;">string</td><td class="confluenceTd" style="width: 56.7902%; height: 44px;">Внешний ИД поля анкеты. Используется для сопоставления при передаче во внешние системы</td></tr><tr><td style="width: 24.9383%;">name</td><td style="width: 18.2715%;"> string</td><td style="width: 56.7902%;">Вопрос, который отображается над полем</td></tr><tr><td style="width: 24.9383%;">tooltip</td><td style="width: 18.2715%;"> string</td><td style="width: 56.7902%;">Подсказка к полю (всплывайка при наведении на символ (?))

Если null, или отсутствует, то символ подсказки не отображается

</td></tr><tr><td style="width: 24.9383%;">value</td><td style="width: 18.2715%;">string</td><td style="width: 56.7902%;">Значение поля по умолчанию

</td></tr><tr><td style="width: 24.9383%;">mandatory</td><td style="width: 18.2715%;">boolean</td><td style="width: 56.7902%;">Обязательность заполнения поля. При дальнейшей валидации, проверяется заполненность value

</td></tr><tr><td style="width: 24.9383%;">inputType</td><td style="width: 18.2715%;">string</td><td style="width: 56.7902%;">Тип поля ввода. Влияет на отрисовку на форме.

Значения: INPUT, TEXTAREA

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

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

**Если анкета заполнялась:**

```json
{
    "success": true,
    "orderId": "1000",
    "form_content": [
        {
            "id": "1000",
            "extId":"WB000001"
            "name": "Порядковый номер палеты",
            "tooltip": "Подсказка к полю (всплывайка при наведении на символ (?))"
            "value": "23445",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1001",
            "name": "Количество палет в поставке",
            "value": "5",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1002",
            "name": "Количество коробов на данной палете",
            "value": "2",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1003",
            "name": "Номер поставки",
            "value": "4433221",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1004",
            "name": "Склад назначения (а при транзите также транзитный склад)",
            "value": "ООО Вектор, ул. Складская, стр.1",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1005",
            "name": "Тип коробов (моно, микс)",
            "value": "моно",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1006",
            "name": "Наименование юридического лица",
            "value": "ООО Вектор",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1007",
            "name": "Дата поставки",
            "value": "20.07.2021",
            "mandatory": true,
            "inputType": "INPUT"
        }
    ]
}
```

**Либо, если анкета не заполнялась:**

```json
{
    "success": true,
    "orderId": "1000",
    "form_content": null
}
```

### Создание/редактирование анкеты FBM по заказу

/api/lite/orders/worksheet

**orderId - ИД заказа в Кактусе, следует обязательно указывать.**

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

```json
{
    "success": true,
    "orderId": "1000",
    "form_content": [
        {
            "id": "1000",
            "extId":"WB000001"
            "name": "Порядковый номер палеты",
            "tooltip": "Подсказка к полю (всплывайка при наведении на символ (?))"
            "value": "23445",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1001",
            "name": "Количество палет в поставке",
            "value": "5",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1002",
            "name": "Количество коробов на данной палете",
            "value": "2",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1003",
            "name": "Номер поставки",
            "value": "4433221",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1004",
            "name": "Склад назначения (а при транзите также транзитный склад)",
            "value": "ООО Вектор, ул. Складская, стр.1",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1005",
            "name": "Тип коробов (моно, микс)",
            "value": "моно",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1006",
            "name": "Наименование юридического лица",
            "value": "ООО Вектор",
            "mandatory": true,
            "inputType": "INPUT"
        },
        {
            "id": "1007",
            "name": "Дата поставки",
            "value": "20.07.2021",
            "mandatory": true,
            "inputType": "INPUT"
        }
    ]
}
```

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

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

### Массовое получение данных анкет по списку заказов

/api/lite/orders/worksheet/batch/get

**Параметр orders - список номеров заказов.**

**Ограничение - не более 500 номеров в запросе**

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

```json
{
  "orders": [
    "444555",
    "555666"
  ]
}
```

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

```json
{
  "orders": [
    {
      "form_content": [],
      "orderId": "444555",
      "success": true
    },
    {
      "form_content": [
        {
          "id": "1000",
          "inputType": "INPUT",
          "mandatory": true,
          "name": "Поставщик",
          "value": "ООО 123"
        },
        {
          "id": "1001",
          "inputType": "INPUT",
          "mandatory": true,
          "name": "Номер поставки МП",
          "value": "77777"
        },
        {
          "id": "shipment_warehouse_destination",
          "inputType": "INPUT",
          "mandatory": true,
          "name": "Склад назначения",
          "value": "Склад Москва"
        },
        {
          "id": "shipment_date",
          "inputType": "INPUT",
          "mandatory": true,
          "name": "Дата и время поставки",
          "value": "01.12"
        }
      ],
      "orderId": "555666",
      "success": true
    }
  ],
  "success": true
}
```

####  

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

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

## ``

# /api/lite/orders/packing/fbm/sticker/file

/api/lite/orders/packing/fbm/sticker/file

Добавляет PDF файл стикера к упакованному месту.

Параметры передаются как form-data:

<table border="1" id="bkmrk-upfile-%D0%A4%D0%B0%D0%B9%D0%BB-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%B3%D1%80" style="border-collapse: collapse; width: 100%; height: 116px;"><tbody><tr style="height: 29px;"><td style="width: 50%; height: 29px;">upfile</td><td style="width: 50%; height: 29px;">Файл(ы) для загрузки</td></tr><tr><td style="width: 50%;">id</td><td style="width: 50%;">Идентификатор заказа (humanId)</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">barcode</td><td style="width: 50%; height: 29px;">ШК упакованного места ("packings":\[{"barcode":"201000000315",)

(Если параметр не передан, то поиск ШК происходит по значению имени файла)

</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">print\_when\_packing</td><td style="width: 50%; height: 29px;">Печатать при упаковке</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">copies\_qty</td><td style="width: 50%; height: 29px;">Кол-во копий</td></tr></tbody></table>

Если в значении upfile передан всего <span style="text-decoration: underline;">1 файл</span> и значение <span style="text-decoration: underline;">barcode передано</span>, то загрузка происходит в режиме одиночного файла. Поиск осуществляется по ШК из значения barcode.

Если же в значении upfile<span style="text-decoration: underline;"> 2 или более файлов</span> или значение <span style="text-decoration: underline;">barcode отсутствует(null или пустое)</span> то загрузка происходит в режиме массового прикрепления. Поиск осуществляется по ШК из названия файлов. (пример: файл BC2003.pdf, поиск будет происходить по значению "BC2003")

#### **Пример ответа (одиночный файл):**

```JSON
{
    "success": true,
    "id": "39a3dde4-f1ab-fc40-8ac2-fd658e2ab596",
    "fileType": "JPG",
    "fileSource": "USER",
    "fileName": "Битва_экстрасенсов_(логотип)",
    "fileExt": "jpg",
    "fileSize": 195261,
    "url": "https://storage.yandexcloud.net/order-files-kak2c/cf2d5a4a-77c0-453d-94f6-30df07bfc261.jpg",
    "printWhenPacking": false,
    "copiesQty": 1,
    "md5sum": "DAC4EB25F5605B754A70093312AC8B65"
}
```

#### **Пример ответа (массовое прикрепление):**

```JSON
{
    "docFiles": [
        {
            "copiesQty": 1,
            "fileExt": "png",
            "fileName": "1489000096876",
            "fileSize": 57906,
            "fileSource": "USER",
            "fileType": "PNG",
            "id": "7702bb9c-f849-8623-72f3-da02b919d78e",
            "md5sum": "413A2416808C1F4C6FFE47B3E03BEA75",
            "printWhenPacking": false,
            "success": true,
            "url": "https://storage.yandexcloud.net/order-files-kak2c/097bcfb8-e657-4592-b692-b33a858dec1a.png"
        },
        {
            "copiesQty": 1,
            "fileExt": "jpg",
            "fileName": "11111111111111",
            "fileSize": 38543,
            "fileSource": "USER",
            "fileType": "JPG",
            "id": "70a4cf8e-0f15-6c0b-4585-bfb0be1354ff",
            "md5sum": "3431AC1E1A19E37E33461F6B9BF3FEC5",
            "printWhenPacking": false,
            "success": true,
            "url": "https://storage.yandexcloud.net/order-files-kak2c/2087ac74-6b97-4264-a889-3905293da836.jpg"
        }
    ],
    "success": true
}
```

/api/lite/orders/packing/fbm/sticker/file

Удаляет файл

В параметре id передается идентификатор файла.

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

DELETE [https://app.kak2c.ru/api/lite/packing/fbm/sticker/file?id=b233372d-cf7b-f07b-446b-128912be7c8a](https://app.kak2c.ru/api/lite/orders/file?id=b233372d-cf7b-f07b-446b-128912be7c8a)

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

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

данные по стикерам упакованных мест возвращаются в методе  
/api/lite/orders?id=1001&amp;full\_info=true

```json
...
"packings": [
	{
		"barcode": "4343001973680",
		"fbmStickerBarcode": "WB_0032345",
		"measurements": {
			"success": true,
			"weight": 345,
			"dimensions": {
				"height": 100,
				"width": 180,
				"depth": 100
			}
		},
		"items": [
			...
		],
		"files": [
			{
				"success": true,
				"id": "da7b5b5c-34f8-1b87-0937-410c251e3b8e",
				"fileType": "JPG",
				"fileSource": "USER",
				"fileName": "1_T-qHsJ6L5UjpJP-6JVZz0w (1)",
				"fileExt": "jpeg",
				"fileSize": 110724,
				"url": "https://storage.yandexcloud.net/order-files-kak2c/d5e2c0ea-f968-44d1-9d70-d270ab38a773.jpeg",
				"printWhenPacking": false,
				"copiesQty": 1,
				"md5sum": "D61372833808D44DE5F47BE77BDB4CB5"
			}
		]
	}
],
...
```

# /api/lite/orders/packing/fbm/sticker

/api/lite/orders/packing/fbm/sticker

Добавляет текстовый стикер к упакованному месту

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

```json
{
    "packing_barcode": "4343001973680", //шк упакованноко места
    "sticker_barcode": "WB_003234" //шк текстового стикера маркетплейса
}
```

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

```json
{
    "success": true
}
```

# /api/lite/orders/upload_fbm_docs_ff

/api/lite/orders/upload\_fbm\_docs\_ff

Отправляет данные прикрепленных FBM стикеров упакованных мест и файлов заказа в темпо

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

```json
{
    "id": "2502-123437"
}
```

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

```json
{
    "success": true
}
```

# /api/lite/orders/pallet/fbm/sticker/file

/api/lite/orders/pallet/fbm/sticker/file

Добавляет PDF файл стикера к паллете.

Параметры передаются как form-data:

<table border="1" id="bkmrk-upfile-%D0%A4%D0%B0%D0%B9%D0%BB-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%B3%D1%80" style="border-collapse: collapse; width: 100%; height: 145px;"><tbody><tr style="height: 29px;"><td style="width: 50%; height: 29px;">upfile</td><td style="width: 50%; height: 29px;">Файл для загрузки</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">barcode</td><td style="width: 50%; height: 29px;">ШК паллеты ("pallets":\[{"barcode":"201000000315",)

(Если параметр не передан, то поиск ШК происходит по значению имени файла)

</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">print\_when\_packing</td><td style="width: 50%; height: 29px;">Печатать при упаковке</td></tr><tr style="height: 29px;"><td style="width: 50%; height: 29px;">copies\_qty</td><td style="width: 50%; height: 29px;">Кол-во копий</td></tr></tbody></table>

Если в значении upfile передан всего <span style="text-decoration: underline;">1 файл</span> и значение <span style="text-decoration: underline;">barcode передано</span>, то загрузка происходит в режиме одиночного файла. Поиск осуществляется по ШК из значения barcode.

Если же в значении upfile<span style="text-decoration: underline;"> 2 или более файлов</span> или значение <span style="text-decoration: underline;">barcode отсутствует(null или пустое)</span> то загрузка происходит в режиме массового прикрепления. Поиск осуществляется по ШК из названия файлов. (пример: файл BC2003.pdf, поиск будет происходить по значению "BC2003")

#### **Пример ответа(одиночный файл):**

```JSON
{
    "success": true,
    "id": "39a3dde4-f1ab-fc40-8ac2-fd658e2ab596",
    "fileType": "JPG",
    "fileSource": "USER",
    "fileName": "Битва_экстрасенсов_(логотип)",
    "fileExt": "jpg",
    "fileSize": 195261,
    "url": "https://storage.yandexcloud.net/order-files-kak2c/cf2d5a4a-77c0-453d-94f6-30df07bfc261.jpg",
    "printWhenPacking": false,
    "copiesQty": 1,
    "md5sum": "DAC4EB25F5605B754A70093312AC8B65"
}
```

#### **Пример ответа (массовое прикрепление):**

```JSON
{
    "docFiles": [
        {
            "copiesQty": 1,
            "fileExt": "png",
            "fileName": "1489000096876",
            "fileSize": 57906,
            "fileSource": "USER",
            "fileType": "PNG",
            "id": "7702bb9c-f849-8623-72f3-da02b919d78e",
            "md5sum": "413A2416808C1F4C6FFE47B3E03BEA75",
            "printWhenPacking": false,
            "success": true,
            "url": "https://storage.yandexcloud.net/order-files-kak2c/097bcfb8-e657-4592-b692-b33a858dec1a.png"
        },
        {
            "copiesQty": 1,
            "fileExt": "jpg",
            "fileName": "11111111111111",
            "fileSize": 38543,
            "fileSource": "USER",
            "fileType": "JPG",
            "id": "70a4cf8e-0f15-6c0b-4585-bfb0be1354ff",
            "md5sum": "3431AC1E1A19E37E33461F6B9BF3FEC5",
            "printWhenPacking": false,
            "success": true,
            "url": "https://storage.yandexcloud.net/order-files-kak2c/2087ac74-6b97-4264-a889-3905293da836.jpg"
        }
    ],
    "success": true
}
```

/api/lite/orders/pallet/fbm/sticker/file

Удаляет файл

В параметре id передается идентификатор файла.

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

DELETE [https://app.kak2c.ru/api/lite/pallet/fbm/sticker/file?id=b233372d-cf7b-f07b-446b-128912be7c8a](https://app.kak2c.ru/api/lite/orders/file?id=b233372d-cf7b-f07b-446b-128912be7c8a)

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

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

данные по стикерам паллет возвращаются в методе  
/api/lite/orders?id=1001&amp;full\_info=true

```json
...
"pallets": [
	{
		"barcode": "pl705970976005-1",
		"files": [
			{
				"copiesQty": 1,
				"fileExt": "pdf",
				"fileName": "ИП Ozon Хоругвино Шк на палету",
				"fileSize": 22535,
				"fileSource": "USER",
				"fileType": "PDF",
				"id": "aa22d7fa-65a2-6be0-8e0d-430ec6c874d3",
				"printWhenPacking": false,
				"success": true,
				"url": "https://storage.yandexcloud.net/order-files-kak2c/b42eebd1-eb7e-4603-a781-5240699288d9.pdf" //ШК в формате PDF
			}
		], 
		"measurements": {
			"dimensions": {
				"depth": 120,
				"height": 100,
				"width": 120
			},
			"success": true,
			"weight": 200
		},
		"num": 1,
		"packings": [
			{
				"barcode": "201000000469",
				"measurements": {
					"dimensions": {
						"depth": 400,
						"height": 200,
						"width": 300
					},
					"success": true,
					"weight": 700
				},
				"palletBarcode": "pl705970976005-1"
			}
		]
	}
],
...
```

# /api/lite/orders/pallet/fbm/sticker

/api/lite/orders/pallet/fbm/sticker

Добавляет текстовый стикер к паллете

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

```json
{
    "pallet_barcode": "pl705970976005-1", //шк паллеты
    "sticker_barcode": "WB_003234" //шк текстового стикера маркетплейса
}
```

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

```json
{
    "success": true
}
```

# /api/lite/orders/packing/fbm/sticker/xls

/api/lite/orders/packing/fbm/sticker/xls

Позволяет скачать сопоставление ШК упакованных мест

параметр id - ИД заказа, обязательный

пример:

/api/lite/orders/packing/fbm/sticker/xls?id=2502-123447

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

```json
{
    "exportResults": [
        {
            "fileID": "export_order_2502-123447",
            "fileUrl": "https://storage.yandexcloud.net/items-export-kak2c/export_orders_test@tempo.ru_09.11.2021_21-53-03.xls",
            "rowsTotal": 1,
            "success": true
        }
    ],
    "recordsTotal": 1,
    "success": true
}
```

/api/lite/orders/packing/fbm/sticker/xls

Импортирует сопоставление ШК из экселя

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

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

- id - ИД заказа, обязательный параметр
- upfile - файл с сопоставлением

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

```json
{
    "success": true
}
```

# /api/lite/orders/fbo/delivery/warehouses

/api/lite/orders/fbo/delivery/warehouses

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

параметр **fbmType** - тип FBM, обязательный. Возможные значения: OZON, WILDBERRIES

пример:

/api/lite/orders/fbo/delivery/warehouses?fbmType=WILDBERRIES

#### **Ответ**

```json
{
    "addresses": [
        {
            "availabilityClass": 1,
            "city": "Подольск",
            "cityFias": "b22cf685-e391-42c8-aab5-a9aadb9193d4",
            "country": "Россия",
            "fbmType": "WILDBERRIES",
            "fullAddress": "Московская обл, г Подольск, ул Поливановская, д 9",
            "house": "9",
            "name": "Wildberries Подольск",
            "region": "Московская",
            "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
            "street": "Поливановская",
            "zip": "142103"
        },
        {
            "availabilityClass": 1,
            "city": "Подольск",
            "cityFias": "b22cf685-e391-42c8-aab5-a9aadb9193d4",
            "country": "Россия",
            "fbmType": "WILDBERRIES",
            "fullAddress": "Московская обл, г Подольск, деревня Коледино, ул Троицкая, стр 20",
            "house": "20",
            "name": "Wildberries Коледино",
            "region": "Московская",
            "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
            "settlement": "Коледино",
            "settlementFias": "6473edb3-f716-4987-ac0d-60068c2f0bb4",
            "street": "Троицкая ",
            "zip": "142181"
        },
        {
            "area": "Ногинск",
            "areaFias": "40ae04e3-9a69-44ea-8bd7-6c6f08e1a4ca",
            "availabilityClass": 1,
            "city": "Ногинск",
            "cityFias": "40ae04e3-9a69-44ea-8bd7-6c6f08e1a4ca",
            "country": "Россия",
            "fbmType": "WILDBERRIES",
            "fullAddress": "Московская обл, г Ногинск, рп Обухово, тер Атлант-Парк, д 35 ",
            "house": "35",
            "name": "WILDBERRIES Обухово",
            "region": "Московская",
            "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
            "settlement": "Атлант-Парк (рп Обухово)",
            "settlementFias": "72c5aacd-c5af-46c4-a1fa-0768c4fa0cf7",
            "zip": "142440"
        },
        {
            "area": "Марушкинское",
            "areaFias": "37477930-7e8d-47f6-89a0-f6ad39e946c9",
            "availabilityClass": 2,
            "city": "Москва",
            "cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
            "country": "Россия",
            "fbmType": "WILDBERRIES",
            "fullAddress": "г Москва, поселение Марушкинское, кв-л 8",
            "name": "Wildberries Внуково",
            "region": "Москва",
            "regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
            "settlement": "кв-л 8",
            "settlementFias": "86e37fff-3ffe-4ff9-986d-fa214853b764",
            "zip": "108809"
        },
        {
            "availabilityClass": 2,
            "building": "7",
            "city": "Чехов",
            "cityFias": "7eeb876e-7b67-4ed7-91ec-0588712db96c",
            "country": "Россия",
            "fbmType": "WILDBERRIES",
            "fullAddress": "Московская обл, г Чехов, село Новоселки, тер промышленная зона Новоселки, влд 11 стр 7",
            "house": "11",
            "name": "Wildberries Чехов 2",
            "region": "Московская",
            "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
            "settlement": "Березка СХ2 (село Новоселки)",
            "settlementFias": "5d4ab092-eaf2-4ffa-ae4f-a60916511063",
            "zip": "142326"
        },
        {
            "availabilityClass": 2,
            "city": "Электросталь",
            "cityFias": "e0b171b6-bf2e-4d68-ab05-4d42ab2b375a",
            "country": "Россия",
            "fbmType": "WILDBERRIES",
            "fullAddress": "Московская обл, г Электросталь, поселок Случайный, тер Массив 3, д 5",
            "house": "5",
            "name": "Wildberries Электросталь",
            "region": "Московская",
            "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
            "settlement": "Массив 3 (поселок Случайный)",
            "settlementFias": "89efc91f-6875-4527-b27e-3fb03dc94971",
            "zip": "144004"
        },
        {
            "area": "Пушкино",
            "areaFias": "7f22cfa4-34fa-4fa0-bcb0-620cd8402cfa",
            "availabilityClass": 1,
            "block": "4",
            "city": "Пушкино",
            "cityFias": "7f22cfa4-34fa-4fa0-bcb0-620cd8402cfa",
            "country": "Россия",
            "fbmType": "WILDBERRIES",
            "fullAddress": "Московская обл, г Пушкино, тер 33-й км автодороги М8 Холмогоры, д 16в",
            "house": "16в",
            "name": "Wildberries Пушкино",
            "region": "Московская",
            "regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
            "settlement": "33-й км автодороги М8 Холмогоры",
            "settlementFias": "a9b12f5e-b2c4-48b6-9cf3-31923f4750a1",
            "zip": "141202"
        }
    ],
    "success": true
}
```

# Сервис уведомлений (Кактус)

Апи для работы с настройкой уведомлений для аккаунта

# /api/lite/domain_notification

### <span style="color: #000000;">Создание нового уведомления  
</span>

/api/lite/domain\_notification

Для регистрации необходимо выполнить следующий запрос

```JSON
{
    "notificationType" : "PURCHASE_CREATED",
    "notificationChannels" : ["EMAIL","SMS"],
    "notificationReceivers" : "test@email.com,test2@notasoft.ru"
}
```

<span style="text-decoration: underline;">**Обязательные поля**</span>: notificationType, notificationChannels, notificationReceivers

Также необходимо в **<span style="text-decoration: underline;">Header</span>** добавить **domain**, в котором указать нужный домен магазина и авторизацию

<table cellpadding="2" cellspacing="1" id="bkmrk-notificationtype-enu" width="872"><tbody><tr><td style="padding: 0.05cm; border: 1px double #808080;" width="159">notificationType

</td><td style="padding: 0.05cm; border: 1px double #808080;" width="61">enum

</td><td style="padding: 0.05cm; border: 1px double #808080;" width="635">Может содержать значения -&gt; **<span style="color: #ff0000;">Смотри пункт апи</span>** - "Получение возможных типов уведомлений"

</td></tr><tr><td style="border-top: none; border-bottom: 1px double #808080; border-left: 1px double #808080; border-right: 1px double #808080; padding: 0cm 0.05cm 0.05cm 0.05cm;" width="159">notificationChannels

</td><td style="border-top: none; border-bottom: 1px double #808080; border-left: 1px double #808080; border-right: 1px double #808080; padding: 0cm 0.05cm 0.05cm 0.05cm;" width="61">\[\]enum

</td><td style="border-top: none; border-bottom: 1px double #808080; border-left: 1px double #808080; border-right: 1px double #808080; padding: 0cm 0.05cm 0.05cm 0.05cm;" width="635">Может содержать значения **SMS, EMAIL,TELEGRAM, WHATSAPP**

Так же можно получить все актуальные возможные значения вызвав соответствующий пункт апи

</td></tr><tr><td style="border-top: none; border-bottom: 1px double #808080; border-left: 1px double #808080; border-right: 1px double #808080; padding: 0cm 0.05cm 0.05cm 0.05cm;" width="159">notificationReceivers

</td><td style="border-top: none; border-bottom: 1px double #808080; border-left: 1px double #808080; border-right: 1px double #808080; padding: 0cm 0.05cm 0.05cm 0.05cm;" width="61">String

</td><td style="border-top: none; border-bottom: 1px double #808080; border-left: 1px double #808080; border-right: 1px double #808080; padding: 0cm 0.05cm 0.05cm 0.05cm;" width="635">Логины пользователей через запятую, которым нужно отправить уведомление

</td></tr></tbody></table>

#### **Успех**

возвращается id созданного уведомления

```JSON
{
    "success": true,
    "id": "efea87fb-91d7-b2f6-d705-148727002b13"
}
```

#### **Ошибка**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Не задан тип уведомлений"
        }
    ]
}
```

### <span style="color: #000000;">Обновление уведомления</span>

/api/lite/domain\_notification

Для обновления нужно дополнительно указать id, далее указать нужные для обновления поля

```JSON
{
    "id" : "efea87fb-91d7-b2f6-d705-148727002b13",
    "notificationChannels" : ["EMAIL"],
    "notificationReceivers" : "test@email.com"
}
```

#### **Успех**

возвращается id созданного уведомления

```JSON
{
    "success": true,
    "id": "efea87fb-91d7-b2f6-d705-148727002b13"
}
```

#### **Ошибка**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Данное уведомление не найдено"
        }
    ]
}
```

# GET /api/lite/domain_notification

### Получение всех уведомлений для аккаунта

/api/lite/domain\_notification

<div id="bkmrk-"><div><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>Метод возвращает список уведомлений текущего аккаунта.

##### <span style="text-decoration: underline;">**Параметры:**</span>

- <span style="text-decoration: underline;">**type** </span>- Тип уведомления для поиска, например PURCHASE\_COMPLETED. Если его указать отфильтрует по данному типу

Пр. `/api/lite/domain_notification/?type=PURCHASE_COMPLETED`

#### **Пример результата запроса**

```JSON
{
    "success": true,
    "notifications": [
        {
            "id": "efea87fb-91d7-b2f6-d705-148727002b13",
            "notificationType": "PURCHASE_CREATED",
            "notificationChannels": [
                "EMAIL",
                "SMS"
            ],
            "notificationReceivers": "donchenko.y@notasoft.ru"
        }
    ]
}
```

#### **Ошибка:** 

<div id="bkmrk--0"></div>```JSON
{
  "success": false,
  "errors": [{"code": 0,"message": "Текст ошибки"}]
}
```

# DELETE  /api/lite/domain_notification

### Удаление уведомления

api/customer/info

Производит удаление данного уведомления.

Параметры:

- id - идентификатор уведомления, которое необходимо удалить

`api/customer/info?id=efea87fb-91d7-b2f6-d705-148727002b13`

#### **Успех**

возвращается id удаленного уведомления

```JSON
{
    "success": true,
    "id": "efea87fb-91d7-b2f6-d705-148727002b13"
}
```

#### **Ошибка**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Данное уведомление не найдено"
        }
    ]
}
```

# /api/lite/domain_notification/{id}

### <span style="color: #000000;">Поиск определенного уведомления</span>

/api/lite/domain\_notification/{id}

Производит поиск уведомлния

`/api/lite/domain_notification/efea87fb-91d7-b2f6-d705-148727002b13`

#### **Успех**

возвращается найденное уведомление

```JSON
{
    "id": "efea87fb-91d7-b2f6-d705-148727002b13",
    "notificationType": "PURCHASE_CREATED",
    "notificationChannels": [
        "EMAIL"
    ],
    "notificationReceivers": "test@email.com"
}
```

#### **Ошибка**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Данное уведомление не найдено"
        }
    ]
}
```

# /api/lite/domain_notification/types

### Получение возможных типов уведомлений

/api/lite/domain\_notification/types

Метод возвращает список всех возможных типов уведомлений и их значения

#### **Пример результата запроса**

```JSON
{
    "success": true,
    "types": [
        {
            "type": "PURCHASE_CREATED",
            "value": "Поставка успешно создана"
        },
        {
            "type": "PURCHASE_EXPORTED_FF",
            "value": "Поставка успешно выгружена на Фулфилмент"
        },
        {
            "type": "PURCHASE_EXPORT_FF_ERROR",
            "value": "Ошибка выгрузки на Фулфилмент"
        },
        {
            "type": "PURCHASE_TAKE_IN_PROCESS",
            "value": "Поставка в процессе приемки"
        },
        {
            "type": "PURCHASE_COMPLETED",
            "value": "Поставка успешно принята"
        },
        {
            "type": "PURCHASE_COMPLETED_WITH_DIFFERENCE",
            "value": "Поставка принята с расхождениями"
        },
        {
            "type": "PURCHASE_COMPLETED_WITH_BRAK",
            "value": "Поставка принята с браком"
        },
        {
            "type": "PURCHASE_CANCELED",
            "value": "Поставка отменена"
        },
        {
            "type": "ORDER_CREATED_FROM_CHECKOUT",
            "value": "Оформлен через умную корзину"
        },
        {
            "type": "ORDER_CREATED_FROM_MARKETPLACE",
            "value": "Оформлен по маркетплейсам"
        },
        {
            "type": "ORDER_CREATED_FROM_ESHOP",
            "value": "Оформлен из магазина"
        },
        {
            "type": "ORDER_CREATED_FROM_PRIVATE_API",
            "value": "Оформлен по АПИ менеджера"
        },
        {
            "type": "ORDER_CREATE_ERROR",
            "value": "Ошибка при создании"
        },
        {
            "type": "ORDER_ONLINE_PAID_OK",
            "value": "Успешно оплачен онлайн"
        },
        {
            "type": "ORDER_INSUFFICIENT_RESERVE",
            "value": "Не хватает резервов"
        },
        {
            "type": "ORDER_EXPORT_FF_ERROR",
            "value": "Ошибка выгрузки на Фулфилмент"
        },
        {
            "type": "ORDER_IN_PACKING",
            "value": "На сборке"
        },
        {
            "type": "ORDER_PACKED",
            "value": "Упакован"
        },
        {
            "type": "ORDER_SHIPPED",
            "value": "Отгружен"
        },
        {
            "type": "ORDER_IN_DELIVERY",
            "value": "На доставке"
        },
        {
            "type": "ORDER_AT_TAKEOUT_POINT",
            "value": "Доставлен в ПВЗ/отделение"
        },
        {
            "type": "ORDER_AT_TAKEOUT_POINT_DEADLINE",
            "value": "Доставлен в ПВЗ/отделение, но еще не получен"
        },
        {
            "type": "ORDER_DONE",
            "value": "Выполнен"
        },
        {
            "type": "ORDER_RETURNING",
            "value": "Возвращается"
        },
        {
            "type": "ORDER_RETURNED",
            "value": "Возвращен"
        }
    ]
}
```

# /api/lite/domain_notification/channels

### Получение возможных каналов для отправки уведомлений

/api/lite/domain\_notification/channels

Метод возвращает список всех возможных каналов для отправки уведомлений

#### **Пример результата запроса**

```JSON
{
    "success": true,
    "types": [
        {
            "type": "SMS",
            "value": "SMS"
        },
        {
            "type": "EMAIL",
            "value": "EMAIL"
        },
        {
            "type": "TELEGRAM",
            "value": "TELEGRAM"
        },
        {
            "type": "WHATSAPP",
            "value": "WHATSAPP"
        }
    ]
}
```

# Физические наборы

# /api/lite/physical_set_orders

### Запрос списка заданий на сборку/разборку

/api/lite/physical\_set\_orders

Метод возвращает список заданий с заданной фильтрацией.

#### **Фильтрация**

Для фильтрации используется параметр query. Если он задан, то будут показаны задания на сборку/разборку наборов, которые содержат query в id, артикуле, имени или ШК.

Также есть параметры dateFrom и dateTo для фильтра по датам

Пример: `/api/lite/physical_set_orders?query=1038&dateFrom=2023-01-10T15:35:46&dateTo=2023-02-02T15:35:46`

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - записей на странице, page - номер страницы.

Пример: `/api/lite/physical_set_orders?page=0&size=100`

Если параметры не переданы, то дефолтные значения page=0&amp;size=100

#### **Пример результата запроса**

```JSON
{
    "physicalSetOrders": [
        {
            "id": "1008",
            "createTs": "2021-01-13 17:23:44.058",
            "action": "ASSEMBLY", // DISASSEMBLY
            "status": "NEW", // IN_PROCESS, DONE
            "quantity": 2,
           	"tag": "Тег1",
            "isPreferredPacking" : "true",
            "packingMaterials": {
                       "commonMaterials": [],
                       "customMaterials": [
                           {
                             "name": "Гофрокороб Sultane",
                              "num": 0,
                              "productId": "1256635998",
                              "quantity": 1,
                              "skuType": "PACKING_MATERIAL_BOXES",
                              "variantId": "566335798"
                          }
                    ]
               },
            "physicalSet": {
                "id": "1044",
                "shortName": "Набор ложек",
                "article": null,
                "images": null,
                "items": [
                    {
                        "id": "1042",
                        "shortName": "Ложка",
                        "article": "loz",
                        "quantity": 2,
                        "images": null
                    }
                ]
            }
        }
    ]
}
```

### Создание задания на сборку/разборку

/api/lite/physical\_set\_orders

Создает задание на сборку/разборку физического набора.

#### **Пример запроса**

```JSON
{
    "variantId": "1044",
    "quantity": 2,
    "warehouseCode": "2970c244-20f4-bab8-4c29-b04504281120",
    "action": "ASSEMBLY" // DISASSEMBLY,
  	"tag": "Тег1"
    "isPreferredPacking" : "true",
    "packingMaterials": {
        "commonMaterials": [],
        "customMaterials": [
           {
              "id": "1256635998",
              "shortName": "Гофрокороб Sultane",
              "type": "PACKING_MATERIAL_BOXES",
               "variants": [
                   {
                     "article": "sul1",
                     "id": "566335798",
                     "shortName": "Гофрокороб Sultane",
                     "type": "PACKING_MATERIAL_BOXES"
                     }
                  ],
               "quantity": 1,
               "variantId": "566335798"
           }
         ]
    }
}
```

#### **Успех:**

```JSON
{
  	"id": "1047",
    "success": true
}
```

#### **Ошибка:** 

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]
}
```

### Копирование задания на сборку/разборку

/api/lite/physical\_set\_orders/copy

Копирует задание на сборку/разборку физического набора

#### **Пример запроса**

```JSON
{
    "id": "1008"
}
```

#### **Успех:**

```JSON
{
    "success": true
}
```

#### **Ошибка:** 

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]
}
```

<div id="bkmrk-"><div></div></div><div id="bkmrk--0"><div></div></div>

# /api/lite/products/physical_sets

### Запрос списка физических наборов

/api/lite/products/physical\_sets

Метод возвращает список наборов с заданной фильтрацией.

#### **Фильтрация**

Для фильтрации используется параметр query. Если он задан, то будут показаны наборы, содержащие query в id, артикуле, имени или ШК.

Для поиска только по id можно использовать параметр "id".

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - записей на странице, page - номер страницы.

Пример: `/api/lite/products/physical_sets?page=0&size=100`

Если параметры не переданы, то дефолтные значения page=0&amp;size=100

#### **Пример результата запроса**

```JSON
{
    "physicalSets": [
        {
            "id": "1044",
            "shortName": "Набор ложек",
            "article": null,
            "images": null,
            "price": null,
            "stockAvailable": 0,
            "barcodes": [
                {
                    "value": "70100401010210",
                    "isDefault": false,
                    "type": "COMMON"
                }
            ],
            "items": [
                {
                    "id": "1042",
                    "shortName": "Ложка",
                    "article": "loz",
                    "quantity": 2,
                    "images": null,
                    "price": "50.00",
                    "stockAvailable": 45,
                    "barcodes": [
                        {
                            "value": "70100401010204",
                            "isDefault": true,
                            "type": "COMMON"
                        }
                    ]
                }
            ]
        }
    ]
}
```

### Создание/редактирование физического набора

/api/lite/products/physical\_sets

Делает из существующего товара физический набор. Если состав набора пустой, то набор будет преобразован обратно в обычный товар

#### **Пример запроса**

```JSON
{
    "id": "1044",
    "items": [
        {
            "id": "1042",
            "quantity": 2
        }
    ]
}
```

#### **Успех:**

```JSON
{
    "success": true
}
```

#### **Ошибка:** 

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]
}
```

# /api/lite/products/sku_sets

### Запрос списка наборов

/api/lite/products/sku\_sets

Метод возвращает список наборов с заданной фильтрацией.

#### **Фильтрация**

Для фильтрации используется параметр query. Если он задан, то будут показаны наборы, содержащие query в id, артикуле, имени или ШК.

Для поиска только по id можно использовать параметр "id".

Для фильтрации по типу набора можно использовать параметр "type". Возможные значения: BUNDLE и PHYSICAL\_SET

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - записей на странице, page - номер страницы.

Пример: `/api/lite/products/physical_sets?page=0&size=100`

Если параметры не переданы, то дефолтные значения page=0&amp;size=100

#### **Пример результата запроса**

```JSON
{
    "skuSets": [
        {
            "id": "1044",
            "shortName": "Набор ложек",
            "article": null,
          	"skuType": "BUNDLE", // PHYSICAL_SET
          	"bundleOptionalCount": 0,
            "images": null,
            "price": null,
            "stockAvailable": 0,
            "barcodes": [
                {
                    "value": "70100401010210",
                    "isDefault": false,
                    "type": "COMMON"
                }
            ],
            "items": [
                {
                    "id": "1042",
                    "shortName": "Ложка",
                    "article": "loz",
                    "quantity": 2,
                    "images": null,
                    "price": "50.00",
                    "stockAvailable": 45,
                    "barcodes": [
                        {
                            "value": "70100401010204",
                            "isDefault": true,
                            "type": "COMMON"
                        }
                    ],
                  	"optional": false
                }
            ]
        }
    ]
}
```

### Создание/редактирование набора

/api/lite/products/sku\_sets

Делает из существующего товара физический набор. Если состав набора пустой, то набор будет преобразован обратно в обычный товар

#### **Пример запроса**

```JSON
{
    "id": "1044",
    "skuType": "PHYSICAL_SET",
    "bundleOptionalCount": 0,
    "items": [
        {
            "id": "1042",
            "quantity": 2,
          	"optional": false
        }
    ]
}
```

#### **Успех:**

```JSON
{
    "success": true
}
```

#### **Ошибка:** 

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]
}
```

# /api/lite/pub/products/sku_sets

/api/lite/pub/products/sku\_sets

Аналогичен [приватному методу](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproductssku-sets)

# Наложенные платежи

# /api/lite/cod_payments

### Запрос списка обработанных наложенных платежей

/api/lite/cod\_payments

Метод возвращает список наложенных платежей, поступивших на аккаунт

Опциональные параметры:

id - номер платежа

dateFrom  
dateTo - фильтр по дате исполнения платежа (executionTime), в формате yyyy-MM-dd'T'HH:mm:ss

#### **Пейджинация**

Для пейджинации используются параметры page и size: size - записей на странице, page - номер страницы.

Пример: `/api/lite/cod_payments?page=0&size=10`

Если параметры не переданы, то дефолтные значения page=0&amp;size=15

#### **Пример результата запроса**

```JSON
{
    "payments": [
        {
            "activated": true,
            "date": "2021-04-10 10:00:00",
            "executionTime": "2021-02-17 18:00:00",
            "id": "OST-1000317",
            "inn": "123456789",
            "items": [
                {
                    "num": 1,
                    "orderId": "8477-3900",
                    "sum": 3260,
                    "trackingNum": "1192306085"
                }
            ],
            "orgName": "ООО Привет",
            "paymentId": "33342",
            "updateTs": "2021-07-08 19:09:03.020"
        }
    ],
    "recordsTotal": 1,
    "success": true
}
```

<div id="bkmrk-"><div></div></div>

# API osTicket

# Общее описание

Все запросы к API osTicket http post. Ко всем передаются следующие http-заголовки:

X-API-Key - Ключ API-доступа к osticket

User-Login - Логин пользователя osTicket, от имени которого выполняется запрос. Должен быть правильным email.

User-Password - Пароль пользователя. Не используется для специальных API ключей, работающих совместно с авторизацией lk2.

Запрос должен содержать хотя бы один post-параметр. Если параметры по логике запроса не нужны, его следует вызывать с параметром-заглушкой.

```JSON
{
	"param": 1
}
```

# /api/tickets.json

Создает тикет.

- subject - тема сообщения. В нашем интерфейсе традиционно используется как номер заказа но системных ограничений на это нет.
- message - содержимое сообщения
- topicId - id категории заявки. Полный их список задан в системных настройках osTicket. Например "topicId": 103 соответствует категории "Срочная доставка день в день"
- attachments - массив вложенных файлов. Ключ - имя файла. Значение - содержимое файла в виде base64 - строки (data URL).
- returnWorkingNow - булев параметр. Если true - возвращает json в котором кроме номера созданного тикета содержится признак работает ли отдел в текущее время. И сообщение с рабочим временем отдела, которое можно выдать клиенту.

```JSON
{
  "success": true,
  "number":"219600",
  "is_working_now":false,
  "not_working_message":"График работы сервисного отдела ежедневно с 9:00 до 21:00. Мы ответим Вам в рабочие часы. Спасибо за обращение!"
}
```

- returnJson - булев параметр. Если true возвращает номер и ID созданного тикета в формате JSON. Иначе - просто строковое значение номера тикета (режим совместимости с нативным osTicket)

```
{
	"success": true,
  	"number": "526252",
  	"id": 224336
}
```

Пример запроса:

```JSON
{
  "subject":"777", 
  "message":"data:text/html;charset=utf-8,<p>Пробное сообщение</p>",
  "topicId":103,
  "returnJson": true,
  "attachments":[
    	{"logo-color.svg":"data:image/svg+xml;base64,..."},
        {"test.log":"data:text/x-log;base64,..."}
  ]
}
```

# /api/tickets/get.json

Возвращает список тикетов пользователя, переданного в http-заголовке запроса

Все параметры не обязательны.

- size, page - пагинация. Номер страницы начинается с 0. Если не задано - возвращает все тикеты
- search - поиск. Если значение начинается с цифры ищет по вхождению в номер тикета или в поле subject, которое в нашем интерфейсе применяется как номер заказа. Иначе - полнотекстовый поиск по тикету.
- direction - outbound входящие тикеты, inbound - исходящие, пустое значение - все.
- collaborator\_visibility - в возвращаемые тикеты включаются те, для которых пользователь является соавтором
- org\_visibility - в возвращаемые тикеты включаются созданные другими пользователями организации. Если у пользователя в osTicket нет прав просмотра тикетов других пользователей организации - не влияет на результат.
- unreaded\_only - возвращает только непрочитанные тикеты
- subject - фильтрация тикетов по номеру заказа. В отличие от search поиск не по вхождению а по полному соответствию строки.
- updated\_from - возвращаются тикеты измененные в указанное время или позднее. Время измененя тикета - это время его создания или последнего сообщения в цепочке его переписки

```JSON
{
	"page":0,
    "size":10,
    "search":"878",
    "direction":"outbound",
  	"collaborator_visibility": true,
  	"org_visibility": true,
  	"unreaded_only": true,
    "subject": "171220-41656-1959"
  	"updated_from": "2022-08-08 23:08:09"
  	"number":"367871"
  	"ticket_id":"203300"
}
```

Пример возвращаемого значения:

- state отличается от status тем что state более обобщенное понятие. Например state: colse значит что тикет закрыт. Но закрыт он может быть как по причине проблема решена так и без объясения причин. Этому соответствует status.
- message здесь возвращается без html-тегов. Полный ткст сообщения можно получить в вызове thread

```JSON
{
	"success": true,
  	"recordsTotal":26,
	"tickets": [
    	{
        	"ticket_id":34901,
            "subject":"тестовый номер 777",
            "status_id":2,
            "status":"Проблема решена",
            "number":"651265",
            "isanswered":0,
            "state":"closed",
            "created":"2021-02-08 13:35:08",
            "message":"Пробное сообщение",
            "topic_id":103,
            "unreaded":false,
            "direction":"outbound",
            "reopenable":true,
          	"user_id": 10,
            "user_login": "test@mail.ru",
            "user_name": "Иван",
          	"updated": "2022-05-06 14:28:14"
        },

		{
        	"ticket_id":12514,
            "subject":"888-888",
            "status_id":3,
            "status":"Закрыт",
            "number":"840372",
            "isanswered":0,
            "state":"closed",
            "created":"2020-12-09 19:15:19",
            "message":"Тестовое сообщение",
            "topic_id":1,
            "unreaded":false,
            "direction":"outbound",
            "reopenable":false,
          	"user_id": 12,
            "user_login": "test2@mail.ru",
            "user_name": "Петр",
          	"updated": "2022-05-06 14:28:14"
        },
    ]
}
```

Если в заголовке передан логин пользователя, отсутствующий в osTicket запрос не завершается ошибкой а возвращает следующий ответ:

```JSON
{
	"account_not_found": 1
}
```

Это можно использовать для авторегистрации пользователей при первом обращении к функционалу osTicket.

# /api/tickets/thread.json

Возвращает цепочку переписки данного тикета

```
{
	"ticket_id":34937
}
```

Пример возвращаемого значения

- id - id сообщения.
- type - 'M' заявка, 'R' ответ
- is\_staff - true сообщение от сотрудника, false - от пользователя
- author - имя автора сообщения
- user\_login - логин (email) автора сообщения
- created - дата создания сообщения
- title - не используется
- message - текст сообщения
- attachments - вложенные файлы 
    - size - длина
    - url - url для скачивания файла
    - name - имя файла

```JSON
{
  	"success": true,
	"messages": [
		{
          "id":1074256,
          "type":"M",
          "is_staff":false,
          "author":"Slava",
          "user_login":"slava-sh@yandex.ru",
          "created":"2023-03-14 23:34:02",
          "title":null,
          "message":"<p>Новая заявка<\/p>",
          "attachments":[
          	{
				"size": 26556,
				"url": "https://ticket.kak2c.ru/file.php?key=f-5x9e888ngsiuvsgeuy_ge59gczgnsu&expires=1612828800&signature=ae890af39b6ba9e4659ec5f221b7a4a4d24b5904&id=6866",
				"name": "baner-1.jpg"
			}
          ]
        },
      	{
          "id":1074257,
          "type":"R",
          "is_staff":true,
          "author":"admin notasoft",
          "user_login":"adm1@notasoft.ru",
          "created":"2023-03-14 23:54:33",
          "title":null,
          "message":"<p>Привет!<\/p>",
          "attachments":[]
      	}
	]
}
```

# /api/tickets/getunreaded.json

Возвращает количество непрочитанных пользователем сообщений. Учитываются только тикеты владелец которого данный пользователь. Не учитываются тикеты других пользователей организации и те в которых данный пользователь соавтор. Пример возвращаемого результата:

```JSON
{
  	"success": true,
	"unreadedCount": 2
}
```

# /api/tickets/message.json

Отправка сообщения в ветку тикета (ответа на тикет)

- attachments - массив вложенных файлов. Ключ - имя файла. Значение - содержимое файла в виде base64 - строки (data URL).
- is\_resolved - если true, одновременно с ответом тикет закрывается со статусом "проблема решена". Т.о. пользователь может сам закрыть тикет.

```JSON
{
	"attachments": [
		{
			"p-14334.jpg": "data:image/jpeg;base64,..."
		}
	],
	"is_resolved": true,
	"message": "data:text/html;charset=utf-8,<p>Ответ на сообщение</p>",
	"ticket_id": 34937
}
```

Ответ:

```
{
	"success": true,
    "message_id":1074273
}
```

# /api/tickets/unreaded.json

Помечает тикет как прочитанный или непрочитанный:

- ticket\_id - можно передать как отдельный ID тикета, так и массив id для установки статуса нескольким тикетам за один вызов
- value - true - непрочитан, false - прочитан

```JSON
{
	"ticket_id": 34960,
	"value": false
}
```

Возвращает

```
{
	"success": true
}
```

# /api/tickets/gettopics.json

Возвращает справочник категорий и тем тикетов

```JSON
[
    {
        "value": 2,
        "label": "Общие вопросы",
        "fields": [],
        "order": "1",
        "isMassSending": false,
        "children": [
            {
                "value": 12,
                "label": "Возможности Кактуса",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 131,
                "label": "Делопроизводство",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 16,
                "label": "Возможности личного кабинета",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 17,
                "label": "Доступная отчетность",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 19,
                "label": "Как вызвать курьера?",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 14,
                "label": "Тарифы и условия",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 13,
                "label": "Услуги и их стоимость",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            }
        ]
    },
    {
        "value": 1,
        "label": "Старт работы",
        "fields": [],
        "order": "2",
        "isMassSending": false,
        "children": [
            {
                "value": 23,
                "label": "КП Кактус.Доставка",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "1",
                "isMassSending": false
            },
            {
                "value": 20,
                "label": "КП Кактус.Фулфилмент",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "2",
                "isMassSending": false
            },
            {
                "value": 24,
                "label": "Условия договора",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "3",
                "isMassSending": false
            },
            {
                "value": 25,
                "label": "Доп условия",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "4",
                "isMassSending": false
            },
            {
                "value": 118,
                "label": "Техниче\u0441кие вопросы",
                "fields": [],
                "order": "5",
                "isMassSending": false
            },
            {
                "value": 26,
                "label": "Другое",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "6",
                "isMassSending": false
            }
        ]
    },
  
  ...
]
```

# /api/tickets/threads.json

Возвращает цепочку переписки нескольких тикетов

```JSON
{
    "updated_from": "2023-01-01 00:00:00",
    "ticket_ids":["203296","195327"]
}
```

Пример возвращаемого значения, содержимое массива messages для каждого тикета аналогично одноименному массиву, описанному [здесь](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiticketsthreadjson)

```JSON
{
    "success": true,
  	"tickets":[
        {
            "ticket_id":203296,
            "messages":[
                {
                    "id":1074256,
                    "type":"M",
                    "is_staff":false,
                    "author":"Slava",
                    "created":"2023-03-14 23:34:02",
                    "title":null,
                    "message":"<p>Новая заявка</p>",
                    "attachments":[]
                },
                {
                    "id":1074257,
                    "type":"R",
                    "is_staff":true,
                    "author":"admin notasoft",
                    "created":"2023-03-14 23:54:33",
                    "title":null,
                    "message":"<p>Привет!</p>",
                    "attachments":[]
                }
            ]
        },
        {
            "ticket_id":203297,
            "messages": [
                {
                    "id":1074260,
                    "type":"M",
                    "is_staff":false,
                    "author":"Slava",
                    "created":"2023-03-21 01:43:53",
                    "title":"Другой вопрос",
                    "message":"<p>Проверка статусов</p>",
                    "attachments":[]
                }
            ]
        }
    ]
}
```

# Биллинг

# /api/lite/billing/documents

### Запрос списка документов

/api/lite/billing/documents

Метод возвращает список документов. Можно использовать для получения списка или одного документа

#### **Параметры**

- id - поиск по номеру документа
- date\_from - фильтр по дате документа, от (формат: <span style="color: #505050;">2020-02-19T12:35:31)</span>
- date\_to - фильтр по дате документа, до (формат: <span style="color: #505050;">2020-02-19T12:35:31)</span>
- <span style="color: #505050;">filter\_types - фильтр по типу документа. можно перечислить через запятую</span>
- <span style="color: #505050;">extended - true/false для отображение доп. данных</span>
- <span style="color: #505050;">page - страница</span>
- <span style="color: #505050;">size - размер страницы</span>

#### **Пример результата запроса**

```JSON
{
    "success": true,
    "recordsTotal": 14,
    "documents": [
        {
            "id": "222",
            "type": "BILL",
            "status": "PAID", // NEW, AWAITING_PAYMENT, PARTIALLY_PAID, EXPIRED
            "title": "Счет на аванс.",
            "date": "2021-06-03 15:17:42",
            "vatSum": 166.67,
            "totalSum": 1000.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Сумма аванса 40%",
                    "description": null,
                    "measure": null,
                    "amount": 1.00,
                    "price": 0.00,
                    "totalSum": 1000.00
                }
            ],
            "relations": []
        },
        {
            "id": "333",
            "type": "BILL",
            "status": "PAID",
            "title": "Счет на доплату.",
            "date": "2021-06-03 15:17:42",
            "vatSum": 12574.33,
            "totalSum": 75446.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Крепеж бирки",
                    "description": null,
                    "measure": "ед. товара",
                    "amount": 100.00,
                    "price": 12.00,
                    "totalSum": 1200.00
                },
                {
                    "num": 2,
                    "title": "Мелкоячеечное хранение",
                    "description": null,
                    "measure": "ячейка/сутки",
                    "amount": 100.00,
                    "price": 13.20,
                    "totalSum": 1320.00
                },
                {
                    "num": 3,
                    "title": "Дополнительные работы по запросу Заказчика",
                    "description": null,
                    "measure": "час",
                    "amount": 555.00,
                    "price": 133.20,
                    "totalSum": 73926.00
                },
                {
                    "num": 4,
                    "title": "Сумма переплаты",
                    "description": null,
                    "measure": null,
                    "amount": 1.00,
                    "price": 0.00,
                    "totalSum": -1000.00
                }
            ],
            "relations": []
        },
        {
            "id": "1025",
            "type": "EXPENSE",
            "subType": "POSTPAID",
            "status": "AWAITING_PAYMENT",
            "title": "Списание",
            "description": "Оплата за услуги за апрель",
            "date": "2021-06-03 15:17:26",
            "deadline": "2021-06-17 01:00:00",
            "vatSum": 12574.33,
            "totalSum": 75446.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Крепеж бирки",
                    "description": null,
                    "measure": "ед. товара",
                    "amount": 100.00,
                    "price": 12.00,
                    "totalSum": 1200.00
                },
                {
                    "num": 2,
                    "title": "Мелкоячеечное хранение",
                    "description": null,
                    "measure": "ячейка/сутки",
                    "amount": 100.00,
                    "price": 13.20,
                    "totalSum": 1320.00
                },
                {
                    "num": 3,
                    "title": "Дополнительные работы по запросу Заказчика",
                    "description": null,
                    "measure": "час",
                    "amount": 555.00,
                    "price": 133.20,
                    "totalSum": 73926.00
                },
                {
                    "num": 4,
                    "title": "Сумма переплаты",
                    "description": null,
                    "measure": null,
                    "amount": 1.00,
                    "price": 0.00,
                    "totalSum": -1000.00
                }
            ],
            "relations": []
        },
        {
            "id": "1024",
            "type": "EXPENSE",
            "subType": "PREPAYMENT",
            "status": "AWAITING_PAYMENT",
            "title": "Списание",
            "description": "Аванс за апрель",
            "date": "2021-06-03 15:17:21",
            "deadline": "2021-06-17 01:00:00",
            "vatSum": 167.00,
            "totalSum": 1000.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Сумма аванса 40%",
                    "description": null,
                    "measure": null,
                    "amount": 1.00,
                    "price": 0.00,
                    "totalSum": 1000.00
                }
            ],
            "relations": []
        },
        {
            "id": "111",
            "type": "REPORT",
            "title": "Акт выполненных работ за апрель 2021",
            "date": "2021-06-03 15:16:19",
            "vatSum": 12741.00,
            "totalSum": 76446.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Крепеж бирки",
                    "description": null,
                    "measure": "ед. товара",
                    "amount": 100.00,
                    "price": 12.00,
                    "totalSum": 1200.00
                },
                {
                    "num": 2,
                    "title": "Мелкоячеечное хранение",
                    "description": null,
                    "measure": "ячейка/сутки",
                    "amount": 100.00,
                    "price": 13.20,
                    "totalSum": 1320.00
                },
                {
                    "num": 3,
                    "title": "Дополнительные работы по запросу Заказчика",
                    "description": null,
                    "measure": "час",
                    "amount": 555.00,
                    "price": 133.20,
                    "totalSum": 73926.00
                }
            ],
            "relations": []
        },
        {
            "id": "1023",
            "type": "EXPENSE",
            "subType": "POSTPAID",
            "status": "AWAITING_PAYMENT",
            "title": "Списание по акту выполненных работ",
            "date": "2021-06-03 14:54:03",
            "deadline": "2021-06-17 01:00:00",
            "vatSum": 12574.33,
            "totalSum": 75446.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Крепеж бирки",
                    "description": null,
                    "measure": "ед. товара",
                    "amount": 100.00,
                    "price": 12.00,
                    "totalSum": 1200.00
                },
                {
                    "num": 2,
                    "title": "Мелкоячеечное хранение",
                    "description": null,
                    "measure": "ячейка/сутки",
                    "amount": 100.00,
                    "price": 13.20,
                    "totalSum": 1320.00
                },
                {
                    "num": 3,
                    "title": "Дополнительные работы по запросу Заказчика",
                    "description": null,
                    "measure": "час",
                    "amount": 555.00,
                    "price": 133.20,
                    "totalSum": 73926.00
                },
                {
                    "num": 4,
                    "title": "Сумма переплаты",
                    "description": null,
                    "measure": null,
                    "amount": 1.00,
                    "price": 0.00,
                    "totalSum": -1000.00
                }
            ],
            "relations": []
        },
        {
            "id": "1022",
            "type": "EXPENSE",
            "subType": "PREPAYMENT",
            "status": "AWAITING_PAYMENT",
            "title": "Списание аванса.",
            "date": "2021-06-03 14:53:57",
            "deadline": "2021-06-17 01:00:00",
            "vatSum": 167.00,
            "totalSum": 1000.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Сумма аванса 40%",
                    "description": null,
                    "measure": null,
                    "amount": 1.00,
                    "price": 0.00,
                    "totalSum": 1000.00
                }
            ],
            "relations": []
        },
        {
            "id": "22252",
            "type": "PAYMENT",
            "title": "Поступление",
            "date": "2021-06-03 10:20:00",
            "vatSum": 0.00,
            "totalSum": 76446.00,
            "balanceSum": 0.00,
            "relations": [
                {
                    "id": "333",
                    "type": "BILL",
                    "title": "Счет на доплату.",
                    "date": "2021-06-03 15:17:42",
                    "relationSum": 75446.00
                },
                {
                    "id": "222",
                    "type": "BILL",
                    "title": "Счет на аванс.",
                    "date": "2021-06-03 15:17:42",
                    "relationSum": 1000.00
                }
            ]
        },
        {
            "id": "1021",
            "type": "EXPENSE",
            "subType": "POSTPAID",
            "status": "AWAITING_PAYMENT",
            "title": "Списание по акту выполненных работ",
            "date": "2021-06-03 10:18:27",
            "deadline": "2021-06-17 01:00:00",
            "vatSum": 12741.00,
            "totalSum": 76446.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Крепеж бирки",
                    "description": null,
                    "measure": "ед. товара",
                    "amount": 100.00,
                    "price": 12.00,
                    "totalSum": 1200.00
                },
                {
                    "num": 2,
                    "title": "Мелкоячеечное хранение",
                    "description": null,
                    "measure": "ячейка/сутки",
                    "amount": 100.00,
                    "price": 13.20,
                    "totalSum": 1320.00
                },
                {
                    "num": 3,
                    "title": "Дополнительные работы по запросу Заказчика",
                    "description": null,
                    "measure": "час",
                    "amount": 555.00,
                    "price": 133.20,
                    "totalSum": 73926.00
                }
            ],
            "relations": []
        },
        {
            "id": "33333",
            "type": "BILL",
            "status": "PAID",
            "title": "Счет \"Оплата по договору\"",
            "date": "2021-05-28 10:53:00",
            "vatSum": 12741.00,
            "totalSum": 76446.00,
            "balanceSum": 0.00,
            "items": [
                {
                    "num": 1,
                    "title": "Крепеж бирки",
                    "description": null,
                    "measure": "ед. товара",
                    "amount": 100.00,
                    "price": 10.00,
                    "totalSum": 1200.00
                },
                {
                    "num": 2,
                    "title": "Мелкоячеечное хранение",
                    "description": null,
                    "measure": "ячейка/сутки",
                    "amount": 100.00,
                    "price": 11.00,
                    "totalSum": 1320.00
                },
                {
                    "num": 3,
                    "title": "Дополнительные работы по запросу Заказчика",
                    "description": null,
                    "measure": "час",
                    "amount": 555.00,
                    "price": 111.00,
                    "totalSum": 73926.00
                }
            ],
            "relations": []
        }
    ]
}
```

# /api/lite/billing/balance-history

### Запрос истории баланса

/api/lite/billing/balance-history

Получает историю баланса на начало месяца за указанный период времени.  
Включает значение баланса на даты date\_from и date\_to.  
Если date\_to больше текущей даты, то date\_to будет заменена на текущее время

#### **Параметры**

- date\_from - фильтр по дате документа, от (формат: <span style="color: #505050;">2020-02-19T12:35:31)</span>
- date\_to - фильтр по дате документа, до (формат: <span style="color: #505050;">2020-02-19T12:35:31)</span>

#### **Пример результата запроса**

```JSON
{
    "success": true,
    "history": [
        {
            "date": "2021-03-20 00:00:00",
            "balance": 0
        },
        {
            "date": "2021-04-01 00:00:00",
            "balance": 0
        },
        {
            "date": "2021-05-01 00:00:00",
            "balance": 73446.00
        },
        {
            "date": "2021-06-01 00:00:00",
            "balance": -3000.00
        },
        {
            "date": "2021-06-02 13:04:48",
            "balance": -3000.00
        }
    ]
}
```

# Интеграции

# /api/lite/eshops/for_mapping

### Запрос списка интеграций

/api/lite/eshops/for\_mapping

Метод возвращает список настроенных интеграций с внешними системами

```JSON
{
    "eshops": [
        {
            "id": "e4a1920d-f154-7284-bad4-a7b9546032fe",
            "type": "BERU",
            "name": "Интеграция с Беру"
        },
        {
            "id": "c802ba97-55b5-98d9-c8db-9d01ab7499d2",
            "type": "WILDBERRIES",
            "name": "Интеграция с Wildberries"
        }
    ]
}
```

# CAM

# /api/lite/cam/delivery/contracts

### Запрос списка контрактов

/api/lite/cam/delivery/contracts

Метод получает список каналов доставки

#### **Фильтрация**

Для поиска только по id можно использовать параметр "id".

#### **Пример результата запроса**

```JSON
{
    "contracts": [
        {
            "dlvLogin": "brocosmetics@gmail.com",
            "courierCode": "DalliService",
            "courierProduct": "1",
            "icn": null,
            "login": "login",
            "password": "pass",
            "barcodePoolId": null,
            "token": null,
            "ownerCompany": "brocosmetics@gmail.com",
            "stock": null,
            "contractId": null,
            "params": [
            	{
                    "key": "paramKey",
                    "value": "paramValue"
                }
            ],
            "cactusId": "9b051eb5-82e5-5ed9-fa72-05aace3fd685",
            "cactusName": "Dalli МСК",
            "contractType": "AGGREGATOR_CONTRACT",
            "isActive": false,
            "isPublicAvailable": true,
            "externalKey": "28c53bc2-158f-4084-96c1-70118eb86f5a",
            "contractNumber": "DalliService_1",
            "stickerFileType": null,
            "deliveryAggregator": "TEMPOLINE",
            "manager": {
                "name": null,
                "surname": null,
                "patronymic": null,
                "phone": "+71112223344",
                "rawPhone": "+7 (111) 222-33-44",
                "alternativePhone": "",
                "email": null,
                "post": null,
                "personType": "CUSTOMER",
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Москва",
                    "area": null,
                    "city": "Москва",
                    "settlement": null,
                    "street": null,
                    "house": null,
                    "block": null,
                    "building": null,
                    "flat": null,
                    "fullAddress": null,
                    "fullCity": null,
                    "rawData": null,
                    "zip": null,
                    "regionFias": null,
                    "areaFias": null,
                    "cityFias": null,
                    "settlementFias": null
                }
            },
            "gatherRequestSettings": {
                "gatherType": "COURIER",
                "timetableNonMonday": false,
                "timetableNonTuesday": false,
                "timetableNonWednesday": false,
                "timetableNonThursday": false,
                "timetableNonFriday": false,
                "timetableNonSaturday": false,
                "timetableNonSunday": false,
                "timetableHolidays": null
            }
        }
    ]
}
```

### Создание/редактирование контракта

/api/lite/cam/delivery/contracts

Создает контракт или редактирует существующий, если указан cactusId.

#### **Пример запроса**

```JSON
{
    "dlvLogin": "brocosmetics@gmail.com",
    "courierCode": "DalliService",
    "courierProduct": "1",
    "icn": null,
    "login": "login",
    "password": "pass",
    "barcodePoolId": null,
    "token": null,
    "ownerCompany": "brocosmetics@gmail.com",
    "stock": null,
    "contractId": null,
    "params": [
        {
            "key": "paramKey",
            "value": "paramValue"
        }
    ],
    "cactusId": "9b051eb5-82e5-5ed9-fa72-05aace3fd685",
    "cactusName": "Dalli МСК",
    "contractType": "AGGREGATOR_CONTRACT",
    "isActive": false,
    "isPublicAvailable": true,
    "externalKey": "28c53bc2-158f-4084-96c1-70118eb86f5a",
    "contractNumber": "DalliService_1",
    "stickerFileType": null,
    "deliveryAggregator": "TEMPOLINE",
    "manager": {
        "name": null,
        "surname": null,
        "patronymic": null,
        "phone": "+7 (111) 222-33-44",
        "rawPhone": null,
        "alternativePhone": "",
        "email": null,
        "post": null,
        "personType": "CUSTOMER",
        "address": {
            "country": null,
            "countryCode": null,
            "region": "Москва",
            "area": null,
            "city": "Москва",
            "settlement": null,
            "street": null,
            "house": null,
            "block": null,
            "building": null,
            "flat": null,
            "fullAddress": null,
            "fullCity": null,
            "rawData": null,
            "zip": null,
            "regionFias": null,
            "areaFias": null,
            "cityFias": null,
            "settlementFias": null
        }
    },
    "gatherRequestSettings": {
        "gatherType": "COURIER",
        "timetableNonMonday": false,
        "timetableNonTuesday": false,
        "timetableNonWednesday": false,
        "timetableNonThursday": false,
        "timetableNonFriday": false,
        "timetableNonSaturday": false,
        "timetableNonSunday": false,
        "timetableHolidays": null
    }
}
```

#### **Ошибка:**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]
}
```

### Удаление контракта

/api/lite/cam/delivery/contracts?id=9b051eb5-82e5-5ed9-fa72-05aace3fd685

Удаляет контракт с cactusId переданным в параметре "id"

# /api/lite/cam/account/special

### Запрос спец. настроек аккаунта

/api/lite/cam/account/special

#### **Пример результата запроса**

```JSON
{
    "success": true,
    "clientNumber": "588589",
    "useCustomDlvTariffLogin": true,
    "tempBlockAccount": true,
    "autoReserveInsufficient": null,
    "isJurClient": null,
    "isPostfactumPaymentMode": null,
    "isContractOk": null,
    "commercialAccount": true,
    "allowSNG": true,
    "reserveAfterPayment": null,
    "country": null,
    "currency": "RUB"
}
```

### Редактирование спец. настроек аккаунта

/api/lite/cam/account/special

#### **Пример запроса**

```JSON
{
    "clientNumber": "588589",
    "useCustomDlvTariffLogin": true,
    "tempBlockAccount": true,
    "autoReserveInsufficient": null,
    "isJurClient": null,
    "isPostfactumPaymentMode": null,
    "isContractOk": null,
    "commercialAccount": true,
    "reserveAfterPayment": null,
    "country": null,
    "currency": "RUB"
}
```

#### **Успешное обновление:**

```JSON
{
    "success": true
}
```

#### **Ошибка:**

```JSON
{
    "success": false,
    "errors": [
        {
            "code": 0,
            "message": "Текст ошибки"
        }
    ]
}
```

# Требования к передаче заказов

При передаче неполной информации о товарах или заказах, во время подтверждения заказа могут возникать ошибки, мешающие его автоматической обработке. Ниже представлен список данных, которые обязательно должны быть заполнены для того, чтобы обеспечить безошибочную работу в Кактусе.

<p class="callout info">Это абсолютный минимум необходимых данных. Вероятнее всего, вам потребуется указать больше данных как о товаре, так и в заказе. Пожалуйста, опирайтесь на приложенные инструкции, которые помогут вам в работе.</p>

#### 1. Товары

Перед созданием заказа необходимо создать карточки товаров. Для этого можете воспользоваться данными инструкциями:

Инструкция по заведению товаров в ЛК [вручную](http://wiki.kak2c.ru/books/instruktsiya-kaktusa/page/zavedenie-tovarov) и [с помощью импорта](http://wiki.kak2c.ru/books/instruktsiya-kaktusa/page/import-tovarov)

[API для работы с товарами](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/chapter/%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B)

В товарах обязательно должны быть заполнены данные (более подробные примеры передачи данных полей по API вы найдёте в приложенной выше инструкции):

- ID продукта (productId), ID товара (variantId)
- Наименование (shortName)
- Штрихкод (barcodes)
- Вес (weight) и габариты (dimensions)
- Если товар требует учёта по ЧЗ: заполнить [учёт товара по уникальным номерам](http://wiki.kak2c.ru/books/instruktsiya-kaktusa/page/uchet-tovara-po-unikalnym-nomeram) (accountingAttributes с кодом chestnyznak, значением \*)
- Если вы отгружаете товары на маркетплейсы: [внешний код для данного МП](http://wiki.kak2c.ru/books/instruktsiya-kaktusa/page/fbs) (extId в eshopSettings), галка enabled: true)
- [Если планируете отгружать заказы за рубеж:](http://wiki.kak2c.ru/books/instruktsiya-kaktusa/page/kak-sozdat-zakaz-za-granitsu) ТНВЭД (tnvedCode), описание на английском (internationalDescription), страна происхождения (countryOfOrigin)

После создания товара и после изменения данных в нём обязательно [выгружать товар на фулфилмент](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproductsexport_ff).

На момент подтверждения заказа для выгрузки его на упаковку остатки товаров должны быть ненулевыми (т.е., требуется принятая поставка).

Цену в карточке товара указывать не обязательно, но важно передать её в заказе.

#### 2. Заказы

[Инструкция по работе с заказами в ЛК Кактус](http://wiki.kak2c.ru/books/instruktsiya-kaktusa/page/zakazy)

[API для работы с заказами](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/chapter/%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D1%8B)

Обязательно указать (более подробные примеры передачи данных полей вы найдёте в приложенной выше инструкции):

- Номер заказа (id)
- Резерв (needReserve) -- по умолчанию true; для схемы работы по кроссдоку -- false
- Сумма заказа (totalOrderSum) и сумма страховки/оценочная стоимость (insuranceSum). Для заказов по России оценочная стоимость обязательно должна быть ненулевой. Сумма заказа строится из цен товаров и доставки
- Статус оплаты (paymentStatus), способ оплаты (paymentMethodCode). Если вы передаёте по АПИ предоплаченные заказы, в paymentMethodCode указывать no-cod и статус оплаты PAID
- Статус подтверждения заказа (confirmStatus). Для автоматического подтверждения заказа передавать статус APPROVED
- Данные о доставке (delivery).   
    \- Обязательно передать code.   
    \- Если доставка в ПВЗ -- указать pickupPointId (код ПВЗ).   
    \- Желательно заполнить адрес наиболее полно по имеющимся полям и обязательно указать фиасы; для доставки в ПВЗ -- достаточно будет указать страну, регион и город (с фиасами), без улицы и дома.   
    \- Для доставки Почтой России обязательно в дополнение к другим полям адреса указывать индекс.
- Данные покупателя (receiver).   
    \- Желательно заполнить ФИО наиболее полно. Действует ограничение при подтверждении: если ФИО меньше 3 символов, заказ не будет подтверждён.   
    \- Для доставки за рубеж Почтой России обязательно указать ФИО латиницей.   
    Обязательно указать актуальный телефон покупателя. Электронную почту -- тоже желательно, т.к. в некоторых службах доставки есть ограничения, требующие указания почты.
- Товары (items): порядковый номер товара в заказе (num, начиная с 1), variantId, название (name), количество (quantity), цена (price), ставка НДС (vatRate), а также доставка как отдельный товар (variantId=delivery) с теми же требуемыми данными (название, количество, цена, НДС). Цену товара указать обязательно.
- Название склада отгрузки (warehouseName) или код склада (warehouseCode).

##### Пример запроса на создание заказа с минимальными данными

/api/lite/orders

```JSON
{ 
            "id": "34567870",
            "totalOrderSum": 999,
            "insuranceSum": 999,
            "needReserve": true,
            "insuranceSumAutoCalculation": true,
            "paymentStatus": "PAID",
            "paymentMethodCode": "no-cod",
            "needCustomerPayment": true,
            "confirmStatus": "NEED_CONFIRM",
            "delivery": {
                "code": "0c985ad8-39dd-4d06-b36b-fb6042b092fd",
                "pickupPointId": "", #обязательное для доставки в ПВЗ
                "address": {
                    "country": "Россия",
                    "countryCode": "RU",
                    "region": "Алтайский",
                    "area": null,
                    "city": "Барнаул",
                    "settlement": null,
                    "street": "Комсомольская",
                    "house": "1",
                    "block": "",
                    "building": "",
                    "flat": "",
                    "fullAddress": "Алтайский, Барнаул",
                    "fullCity": null,
                    "rawData": null,
                    "zip": "",
                    "regionFias": "8276c6a1-1a86-4f0d-8920-aba34d4cc34a",
                    "areaFias": null,
                    "cityFias": "d13945a8-7017-46ab-b1e6-ede1e89317ad",
                    "settlementFias": null
                },
                "receiver": {
                    "name": "Петр",
                    "surname": "толстой 2",
                    "phone": "89011111111",
                    "email": "petr@petr.net"
                }
            },
            "items": [
                {
                    "num": 1,
                    "variantId": "demo1024",
                    "variantExtId": null,
                    "name": "Компьютер (демо товар)",
                    "quantity": 1,
                    "price": 522,
                    "vatRate": "VAT_10"
                },
                {
                    "num": 2,
                    "variantId": "delivery",
                    "name": "Доставка",
                    "quantity": 1,
                    "price": 35,
                    "vatRate": "VAT_20"
                }
            ],         
            "warehouseName": "Свой склад"
        }
```

# Задание на стикерование

Задание на стикерование предназначено для документов которые необходимо стикеровать особым образом, например с уникальными номерами. Сейчас данный функционал реализован для Поставки и Комплектации(вся логика реализована в ветке 9063\_new\_chz\_loading).

##### Создание редактирование задание на стикерование через json

/api/lite/sticker/task/json или /api/lite/sticker/task/{sticker\_task\_id}/json

Данный метод предназначен для загрузки или редактирования задания на стикерование из json файла. Редактирование происходит с очисткой ранее загруженных но не зарезервированных уникальных номеров.

Параметры:

<span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">doc\_id</span> - номер документа(Поставки или Комплектации)

<span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">doc\_type</span> - тип документа(PURCHASE\_ORDER, <span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">PHYSICAL\_SET\_ORDER</span>)

Пример вызова:

```
{
	"items": [
		{
			"variantId" : "1036",
			"productId" : "2bc478a4-9d3d-f9bd-339b-024e4cbf053c",
			"stickerTemplateCode" : "testTemplate2",
			"stickerContentData" : "{        \"blocks\": [          {            \"name\": \"block1\",            \"value\": \"Состав: - 54% шерсть, 40% полиэстер, 5% другие нити, 1% эластан /nПодкладка - 100% полиэстер\"          },          {            \"name\": \"block2\",            \"value\": \"Рекомендации по уходу /n- Не стирать /n- Не отбеливать /n- Не сушить в стиральной машине /n- Гладить при средней температуре /n- Бережная профессиональная химчистка\"          },          {            \"name\": \"block_img\",            \"value\": \"https://asset1.marksandspencer.com/is/image/mands/SD_03_T15_1436T_XB_X_EC_1?$PRODVIEWER_SUB$\"          }          ]      }",
			"stickering" : false,
			"stickeringWithUnigueNumber" : false,
            "uniqueNumbers" : [
		{
			"uniqueNumber" : "898789891",
			"type" : "UIT"
		}
		
	]
		}
	]
}
```

Пример ответа:

```
{
    "c": "01de612f-209c-bbbb-167c-fc6f2e7649c0",
    "orderId": "1016",
    "success": true
}
```

##### Создание редактирование задание на стикерование через excel

/api/lite/sticker/task/excel или /api/lite/sticker/task/{sticker\_task\_id}/excel

Данный метод предназначен для загрузки или редактирования задания на стикерование из файла эксель(formData). Редактирование происходит с очисткой ранее загруженных но не зарезервированных уникальных номеров.

Параметры:

<span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">doc\_id</span> - номер документа(Поставки или Комплектации)

<span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">doc\_type</span> - тип документа(PURCHASE\_ORDER, <span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">PHYSICAL\_SET\_ORDER</span>)

upFile - файл excel в formData

Пример вызова :

```
{ 
  "fileName" : "chestnyznak.xls",	  
  "content" : "0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAA......" - base64
}
```

Пример ответа:

```
{
    "c": "01de612f-209c-bbbb-167c-fc6f2e7649c0",
    "orderId": "1016",
    "success": true
}
```

Файл эксель:

1\. уникальные номера(второй лист):

[![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)

2\. Строки задания на стикерования(первый лист):

[![задание на стикерование.png](https://wiki.kak2c.ru/uploads/images/gallery/2023-06/scaled-1680-/zadanie-na-stikerovanie.png)](https://wiki.kak2c.ru/uploads/images/gallery/2023-06/zadanie-na-stikerovanie.png)

##### Получение задания на стикерование

/api/lite/sticker/task

id(не обязательный) - номер задания на стикерование

parent\_doc\_id - номер Поставки или Комплектации

<span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">doc\_type</span> - тип документа(PURCHASE\_ORDER, <span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">PHYSICAL\_SET\_ORDER</span>)

Необходимо передать либо id, либо parent\_doc\_id и <span style="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-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">doc\_type. Если не заполнить данные параметры то возвратится ошибка что документ не найден. </span>

Пример ответа:

```
{
	"id": "1037"
	"parentDocument": "1022"
    "items": [
    	{
        	"variantId": "1025",
            "productId": "af25e75b-412e-4a0c-9662-4db575bf6df3",
            "num": 1,
            "stickerTemplateName": "testTemplate",
            "stickerContentData" : "{        \"blocks\": [          {            \"name\": \"block1\",            \"value\": \"Состав: - 54% шерсть, 40% полиэстер, 5% другие нити, 1% эластан /nПодкладка - 100% полиэстер\"          },          {            \"name\": \"block2\",            \"value\": \"Рекомендации по уходу /n- Не стирать /n- Не отбеливать /n- Не сушить в стиральной машине /n- Гладить при средней температуре /n- Бережная профессиональная химчистка\"          },          {            \"name\": \"block_img\",            \"value\": \"https://asset1.marksandspencer.com/is/image/mands/SD_03_T15_1436T_XB_X_EC_1?$PRODVIEWER_SUB$\"          }          ]      }",
            "stickering": true,
            "stickeringWithUnigueNumber": true
        }
    ]
}
```

##### Получение списка типов документов в Кактусе

/api/lite/sticker/task/document\_types

Пример ответа:

```
[
    "ORDER",
    "PURCHASE_ORDER",
    "SKU_QTY_CORRECTION",
    "INTER_MOVEMENT",
    "PURCHASE_RETURN",
    "ORDER_RETURN",
    "TAKE_IN_PLAN",
    "TAKE_IN_FACT",
    "TAKE_OUT_PLAN",
    "TAKE_OUT_FACT",
    "TAKE_OUT_PACKING",
    "TAKE_OUT_PALLET",
    "COD_IMPORT",
    "COD_DOC",
    "COD_PAYMENT_DOC",
    "DELIVERY_PLAN",
    "DELIVERY_BILL_IMPORT",
    "DELIVERY_BILL_DOC",
    "WAREHOUSE_BILL_IMPORT",
    "WAREHOUSE_BILL_DOC",
    "CONFIRMATION",
    "RTU",
    "PTU",
    "STORNO_RTU",
    "PRICE_DOC",
    "RESERVE_DOC",
    "TAKE_OUT_LIST",
    "GATHER_REQUEST",
    "PAYMENT",
    "FORCED_BALANCE_PAYMENT",
    "ORDER_EXPENSE_PAYMENT_DOC",
    "ORDER_PAYMENT_DOC_FACT",
    "CUSTOMER_ORDER_PAYMENT_DOC_PLAN",
    "CUSTOMER_ORDER_PAYMENT_DOC_FACT",
    "CUSTOMER_ORDER_FULL_PAYMENT_DOC",
    "CLIENT_BILL",
    "CONDITION_MOVEMENT",
    "PHYSICAL_SET_ORDER",
    "BILLING_DOC",
    "STICKER_TASK"
]
```

##### Получение всех чз

**<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;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">/products/all/unique\_numbers/excel</span>**

<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;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;background-color:#ffffff;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline;float:none;">Пример отчета: </span>

```
{
    "success": true,
    "url": "https://storage.yandexcloud.net/feed-cactus/un_test@test.ru_06.03.2024_12-00-44.xls"
}
```

# Инструменты администратора

# Настройки интеграций с магазинами и маркетплейсами

Реализован http сервис для работы с магазинами и маркетплейсами. Добавлен следующий функционал:

1\. Получение одного магазина. Метод **GET /api/lite/settings/eshop?id=sdjkcjnsd-njkw398njk-njskdcbj**. Получаем вот такую JSON:

{  
 "shops":\[  
 {  
 "active":false,  
 "additional\_params\_dictionary":"",  
 "apiPassword":"AgAAAAA2xaMuAAXwby5dKO5av0XslPGLxdkzUAA",  
 "apiToken":"FF000001AC70ED29",  
 "apiUrl":"https://app.kak2c.ru/api/beru/588589",  
 "autoSkuImportInterval":24,  
 "bitrixCatalogId":"e4a1920d-f154-7284-bad4-a7b9546032fe",  
 "bitrixCatalogName":"Каталог товаров KAK2C7",  
 "confirmationType":"SELF\_CONFIRM",  
 "default":false,  
 "defaultVat":"NO\_VAT",  
 "deliveryInfoID":"42fe7049-6c47-2bca-e690-c49267060e9f",  
 "eshopOfferIdType":"EXT\_ID",  
 "extId":"21584150",  
 "id":"e4a1920d-f154-7284-bad4-a7b9546032fe",  
 "isActive":false,  
 "isDefault":false,  
 "isOrdersEnabled":false,  
 "name":"Bro Cosmetics",  
 "needAutoSkuImport":false,  
 "needCodConfirmation":true,  
 "needCopyOrderNumber":true,  
 "needExportStatuses":false,  
 "needPrepayConfirmation":false,  
 "needReserve":true,  
 "needRestsControl":true,  
 "ordersImportInterval":1,  
 "percentStock":100,  
 "prevPriceTypeID":"805a5315-4d39-523a-6d79-e90fcc056abd",  
 "priceTypeID":"35578ac2-7949-8b3f-cbd0-19cdb82a2046",  
 "pricesRestsExportInterval":1,  
 "reserveType":"ON\_IMPORT",  
 "syncOrdersToEshopMode":"NO\_SYNC",  
 "tenantOrganizationID":"ad68f1b6-8975-1179-9fe6-df8bbb6333f2",  
 "type":"BERU",  
 "warehouseID":"6805bc64-270f-ae7d-1231-773ff181e446"  
 }  
 \],  
 "success":true  
}

При этом нужно учесть что для tenantOrganization вместо объекта возвращается его id в поле tenantOrganizationID. То же сделано для warehouse-warehouseID, deliveryInfo-deliveryInfoID, prevPriceType-prevPriceTypeID и priceType-priceTypeID. Соответственно на фронте нужно получить эти объекты из базы по id.

2\. Получения списка магазинов. Метода **GET /api/lite/settings/eshop.** Получаем файл аналогичный предыдущему, но вместо одного магазина в файле все магазины данного клиента.

3\. Изменение и добавление магазина реализовано одной операцией. Метод **POST /api/lite/settings/eshop.** В теле метода передаем json:

{  
 "active":false,  
 "additional\_params\_dictionary":"",  
 "apiPassword":"AgAAAAA2xaMuAAXwby5dKO5av0XslPGLxdkzUAA",  
 "apiToken":"FF000001AC70ED29",  
 "apiUrl":"https://app.kak2c.ru/api/beru/588589",  
 "autoSkuImportInterval":24,  
 "bitrixCatalogId":"e4a1920d-f154-7284-bad4-a7b9546032fe",  
 "bitrixCatalogName":"Каталог товаров KAK2C7",  
 "confirmationType":"SELF\_CONFIRM",  
 "default":false,  
 "defaultVat":"NO\_VAT",  
 "deliveryInfoID":"42fe7049-6c47-2bca-e690-c49267060e9f",  
 "eshopOfferIdType":"EXT\_ID",  
 "extId":"21584150",  
 "id":"e4a1920d-f154-7284-bad4-a7b9546032fe",  
 "isActive":false,  
 "isDefault":false,  
 "isOrdersEnabled":false,  
 "name":"Bro Cosmetics",  
 "needAutoSkuImport":false,  
 "needCodConfirmation":true,  
 "needCopyOrderNumber":true,  
 "needExportStatuses":false,  
 "needPrepayConfirmation":false,  
 "needReserve":true,  
 "needRestsControl":true,  
 "ordersImportInterval":1,  
 "percentStock":100,  
 "prevPriceTypeID":"805a5315-4d39-523a-6d79-e90fcc056abd",  
 "priceTypeID":"35578ac2-7949-8b3f-cbd0-19cdb82a2046",  
 "pricesRestsExportInterval":1,  
 "reserveType":"ON\_IMPORT",  
 "syncOrdersToEshopMode":"NO\_SYNC",  
 "tenantOrganizationID":"ad68f1b6-8975-1179-9fe6-df8bbb6333f2",  
 "type":"BERU",  
 "warehouseID":"6805bc64-270f-ae7d-1231-773ff181e446"  
 }

изменение происходит если заполнен id, добавление при пустом id. Также нужно учесть что нужно передать tenantOrganizationID, warehouseID, eliveryInfoID, revPriceTypeID и priceTypeID.

4\. Удаление магазина. Метод **DELETE /api/lite/settings/eshop?id=sdjkcjnsd-njkw398njk-njskdcbj.** Удаляет магазин из базы.

# /api/lite/admin/settings/delivery-info - информация о доставке

1\. Получения списка deliveryInfo. Метода **GET /api/lite/admin/settings/delivery-info.**

2\. Изменение и добавление deliveryInfo реализовано одной операцией. Метод **POST /api/lite/admin/settings/delivery-info.** В теле метода передаем json:

```
{
            "active": true,
            "adAttachments": [],
            "aggregatorDeliveryCompany": "GOODS",
            "courierTitle": "СберМегаМаркет",
            "default": false,
            "deliveryAggregator": "TEMPOLINE",
            "externalKey": "GOODS",
            "gatherRequestSettings": {
                "currency": "RUB",
                "cutOffTime": [
                    12,
                    0
                ],
                "documentID": "0e451286-9ce5-dec0-6d74-fc54575e3360",
                "isExported": false,
                "isIntegrationError": false,
                "isSynchronized": false,
                "printStatus": "",
                "timetableNonFriday": false,
                "timetableNonMonday": false,
                "timetableNonSaturday": false,
                "timetableNonSunday": false,
                "timetableNonThursday": false,
                "timetableNonTuesday": false,
                "timetableNonWednesday": false,
                "uid": "0e451286-9ce5-dec0-6d74-fc54575e3360"
            },
            "insurancePercentage": 100.0,
            "isActive": true,
            "isDefault": false,
            "isPublicAvailable": false,
            "marketplace": true,
            "name": "GOODS",
            "russianPost": false,
            "type": "AGGREGATOR_CONTRACT",
            "uid": "094c7b63-d157-33f5-e1e7-7b3ca34b3073",
            "warehouseComments": []
        }
```

<div id="bkmrk-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%B8%D1%82"><div>изменение происходит если заполнен id.</div></div><div id="bkmrk-"></div><div id="bkmrk-3.-%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-delivery"><div>3. Удаление deliveryInfo. Метод **DELETE /api/lite/admin/settings/delivery-info?id=sdjkcjnsd-njkw398njk-njskdcbj.** Удаляет deliveryInfo из базы.</div></div>

# /api/lite/admin/settings/payment-method - информация о способе оплаты

1\. Получения списка способов оплаты. Метода **GET /api/lite/admin/settings/payment-method.**

2\. Изменение и добавление способов оплаты реализовано одной операцией. Метод **POST /api/lite/admin/settings/payment-method.** В теле метода передаем json:

```
{
            "code": "no-cod",
            "name": "Без наложенного платежа",
            "paymentMethod": "NO_COD",
            "uid": "68150888-7670-b46e-8ab9-ce42bb6f4255"
        }
```

<div id="bkmrk-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%B8%D1%82"><div>изменение происходит если заполнен id.</div></div><div id="bkmrk-"></div><div id="bkmrk-3.-%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D0%B0-"><div>3. Удаление способа оплаты. Метод **DELETE /api/lite/admin/settings/payment-method?id=s21kcjnsd-4jkw435njk-66skdcb1.** Удаляет способ оплаты из базы.</div></div>

# /api/lite/admin/settings/checkout - настройки чекаута

1\. Получения списка checkoutSettings. Метода **GET /api/lite/admin/settings/checkout .**

2\. Изменение и добавление checkoutSettingsреализовано одной операцией. Метод **POST /api/lite/admin/settings/checkout.** В теле метода передаем json:

```
 {
            "commercialAccount": true,
            "defaultCity": "",
            "defaultDeliveryServiceOptions": {},
            "deliveryPremiumType": "PERCENT",
            "deliveryRegionSettings": {
                "commonSettings": {
                    "ALL": {
                        "ALL_REGIONS": {
                            "enabled": true,
                            "extraFeeFixValue": 0,
                            "extraFeePercentValue": 0.00,
                            "tariffEnabled": true
                        }
                    }
                }
            },
            "disableCodSumInTariff": true,
            "freeDeliveryAmount": 1.00,
            "freeDeliveryRegion": "RU_SNG",
            "insurancePercent": 100.00,
            "onlySufficientOffers": false,
            "orderSubtype": "KAK2C_SUBSCRIPTION",
            "paymentAccountId": "306b29d8-6f97-810e-eb71-046b6e37d7df",
            "paymentMethodCodes": "online",
            "paymentMethodCodesList": [
                "online"
            ],
            "paymentProvider": "YANDEX",
            "realUiRequiredFields": [
                "PHONE",
                "EMAIL"
            ],
            "trustToken": "322322",
            "uiRequiredFields": "PHONE;EMAIL",
            "uid": "245b5b14-1dd1-7dcd-7917-8b7d5aee510e"
        }
```

<div id="bkmrk-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%B8%D1%82"><div>изменение происходит если заполнен id.</div></div><div id="bkmrk-"></div><div id="bkmrk-3.-%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-checkout"><div>3. Удаление checkoutSettings. Метод **DELETE /api/lite/admin/settings/checkout?id=888kcjnsd-88kw398njk-8jskdc88.** Удаляет deliveryInfo из базы.</div></div>

# /api/lite/admin/settings/lite - настройки lite

1\. Получения списка liteSettings. Метода **GET /api/lite/admin/settings/lite.**

2\. Изменение и добавление liteSettingsреализовано одной операцией. Метод **POST /api/lite/admin/settings/lite.** В теле метода передаем json:

```
 {
            "businessTariff": false,
            "clientNumber": "6750043",
            "defaultReserveOrders": true,
            "displayFinance": true,
            "menuCatalog": {
                "humanId": "1000",
                "items": [
                    {
                        "collectionId": "1001",
                        "title": "Все товары"
                    }
                ],
                "name": "Каталог",
                "uid": "e811675e-df74-e1ba-dfc7-b734f02576ef"
            },
            "needApiProductsReturnDetails": false,
            "orderEmailFooter": "PHAgc3R5bGU9ImxpbmUtaGVpZ2h0OiAxLjQ7Ij48c3Ryb25nPtCV0YHRgtGMINCy0L7Qv9GA0L7RgdGLINC/0L4g0LfQsNC60LDQt9GDPyDQodCy0Y/QttC40YLQtdGB0Ywg0YEg0LzQsNCz0LDQt9C40L3QvtC8Ojwvc3Ryb25nPjwvcD48cCBzdHlsZT0ibGluZS1oZWlnaHQ6IDEuNTsiPndoYXRzYXBwOiZuYnNwOzxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE0cHg7Ij44KDk1PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsiPjMpNzAzLTA2LTIzPC9zcGFuPjwvc3Bhbj48YnI+ZS1tYWlsOiZuYnNwOzxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiBpbml0aWFsOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBpbml0aWFsOyBiYWNrZ3JvdW5kLXNpemU6IGluaXRpYWw7IGJhY2tncm91bmQtcmVwZWF0OiBpbml0aWFsOyBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGluaXRpYWw7IGJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyBiYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IGZvbnQtc2l6ZTogMTRweDsiPnBvZHBpc2thQGNvbmRlbmFzdC5ydTwvc3Bhbj48YnI+0YLQtdC70LXRhNC+0L06IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE0cHg7Ij44KDQ5NSk3NDUtNTUtNjUmbmJzcDs8L3NwYW4+PC9wPg==",
            "orderEmailHeader": "PGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PGltZyBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCODBBQUFHZUNBWUFBQUFlNnBBSEFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBZGFoSlJFRlVlTnJzM2UxVkcwbmFNT0FTWi83ak53SzBFY0JFZ0NZQ3ZCR2dpY0NlQ0N4SE1EZ0N5eEVNam1CRUJJc2pXQkhCQXhId2RnMmxIZG1EaENUNm82cjd1czdSWWRjZVExUGQ5WGxYM1QxNmZId01BQUFBd0RDTlJxTTMxWmVyNmpOL2ZIeGNLQkVBQUFBR056Y1dOQWNBQUlCaFNnSHpSZlU1Zlh4OEhDa1JBQUFBaHVoSUVRQUFBTUR3akVhanM1QUM1a29EQUFDQUlmdEpFUUFBQU1Dd3JBWE1qOU1mM1NrVkFBQUFoc3BKY3dBQUFCaVEwV2owTm53Zk1JK1dTZ1lBQUlDaEVqUUhBQUNBZ1JpTlJ0UHF5eC9oKzRCNWRLOTBBQUFBR0NwQmN3QUFBQmlBMFdoMFZYMzV2T0d2YjVVUUFBQUFRK1dkNWdBQUFOQnpvOUZvWG4yNVZCSUFBQUR3VDRMbUFBQUEwRk9qMGVoTjllVzYrcHkvOEo4dWxCWUFBQUJESldnT0FBQUFQWlFDNW92cWM2bzBBQUFBWURQdk5BY0FBSUNlR1kxR1o5V1haZGc5WUw1VWFnQUFBQXgySHYzNCtLZ1VBQUFBb0M4VC9hZUErYUw2SE8vNmJ4NGZIMGRLRGdBQWdLRnkwaHdBQUFCNllqUWFUYXN2L3dsN0JNd3JEMG9PQUFDQUlSTTBCd0FBZ0I0WWpVYnZxeStmRC9pbnQwb1BBQUNBSWZ0SkVRQUFBRURaUnFQUnZQcHlxU1FBQUFCZ2YwNmFBd0FBUUtGR285R2JHZ0xtQ3lVSkFBREFrRGxwRGdBQUFBV0tBZlB3RlBBK1ZSb0FBQUJ3T0NmTkFRQUFvRENqMGVnczFCY3c5MDV6QUFBQUJzMUpjd0FBQUNqSVdzRDh1S1p2ZWE5VUFRQUFHREluelFFQUFLQVFvOUhvYmFnM1lCNEptZ01BQUREcytmYmo0Nk5TQUFBQWdOd244S1BSdFByeXVlN3YrL2o0T0ZLNkFBQUFESm1UNWdBQUFKQzUwV2gwRlJvSW1BTUFBQURlYVE0QUFBQlpHNDFHOCtyTFpVUGYva1lKQXdBQU1IU0M1Z0FBQUpDaDBXajBwdnB5WFgzT2xRWUFBQUEwUjlBY0FBQUFNcE1DNW92cWM5cndqN3BWMmdBQUFBeWRkNW9EQUFCQVJrYWowVmw0Q21hZnR2RGpKa29jQUFDQXdjL0ZIeDhmbFFJQUFBRGtNRWwvQ3BndnFzOXhpei8yWDQrUGowdWxEd0FBd0ZBNWFRNEFBQUFaR0kxRzArckxmMEs3QWZQb3JkSUhBQUJneUFUTkFRQUFvR01wWVA2NW94OC9kUWNBQUFBWTlMeGNlbllBQUFEb2NHSStHczJyTDVjZFg0WVU3UUFBQUF5V2srWUFBQURRZ2RGbzlDYVRnSGtrUlRzQUFBRERuYU03YVE0QUFBQXRUOFpIb3pmVmwwWDFPYzNra3I0OVBqNmV1VE1BQUFBTWtaUG1BQUFBMEtMUmFEUU9lUVhNbzlOMFhRQUFBREE0Z3VZQUFBRFFrdEZvRkU5ejM0YThBdVlyVTNjSUFBQ0FJUkkwQndBQWdCYU1ScVA0M3ZCRjlUbk85QktuN2hJQUFBQkRKR2dPQUFBQURSdU5SdFBxeXg4aDM0QjVkSkpPd2dNQUFNQ2dDSm9EQUFCQWcwYWowYXo2OHJtUXk1MjZZd0FBQUF4dTd2NzQrS2dVQUFBQW9JbEo5Mmcwcjc1Y0ZuVEpkNCtQajJOM0RnQUFnQ0Z4MGh3QUFBQnFOaHFOM2xTZlJTZ3JZQjVKMFE0QUFNRGcvS1FJQUFBQW9ENHhZRjU5V1ZTZjA0SXUreUZkYy93czNVVUFBQUNHUk5BY0FBQUFhcEpPYVY5WG41UE1ML1d1K3R5R0ZDaC9mSHk4ZGZjQUFBQVlLa0Z6QUFBQXFFRUttQytxejNHR2wzY1gvajVKSG9Qa1MzY01BQUFBbmdpYUF3QUF3Q3VOUnFOcDllVnpScGNrU0E0QUFBQTdFalFIQUFDQVY4Z2tZQzVJRGdBQUFBY1NOQWNBQUlBRGpVYWplZlhsc29NZkxVZ09BQUFBTlJFMEJ3QUFnRDJOUnFNMzFaZXIwRjdBWEpBY0FBQUFHaUpvRGdBQUFIdElBZk5GOVRsdDhNY0lrZ01BQUVCTEJNMEJBQUJnUjZQUmFGeDl1UTcxQjh3RnlRRUFBS0FqZ3VZQUFBQ3dnOUZvZEJhZWd0ckhOWHc3UVhJQUFBREloS0E1QUFBQXZHQTBHcjJ0dnN6RDRRRnpRWElBQUFESWxLQTVBQUFBYkRFYWphYlZsODk3L2pOQmNnQUFBQ2lFb0RrQUFBQnNNQnFOWnRXWER6djhwNExrQUFBQVVDaEJjd0FBQUhqR2FEU2FWMTh1Ti95MUlEa0FBQUQwaEtBNUFBQUF2RXlRSEFBQUFIcHFWRTMwbFFJQUFBRDhPR0VlamQ1VVh5YlY1MWFRSEFBQUFIcThCaUJvRGdBQUFBQUFBTUJRSFNrQ0FBQUFBQUFBQUlaSzBCd0FBQUFBQUFDQXdSSTBCd0FBQUFBQUFHQ3dCTTBCQUFBQUFBQUFHQ3hCY3dBQUFBQUFBQUFHUzlBY0FBQUFBQUFBZ01FU05BY0FBQUFBQUFCZ3NBVE5BUUFBQUFBQUFCZ3NRWE1BQUFBQUFBQUFCa3ZRSEFBQUFBQUFBSURCRWpRSEFBQUFBQUFBWUxBRXpRRUFBQUFBQUFBWUxFRnpBQUFBQUFBQUFBWkwwQndBQUFBQUFBQ0F3UkkwQndBQUFBQUFBR0N3Qk0wQkFBQUFBQUFBR0N4QmN3QUFBQUFBQUFBRzZ5ZEZBQUFBQUFBQWh4bU5SdFBxeXpqKzc4Zkh4NWtTQVlBQysvT3FFMWNLQUFBQUFBQ3dwOUZvOUtiNnNxdyt4K21QL3YzNCtIaXRaQUNnTE5LekF3QUFBQURBWWQ2R3Z3UG0wWHRGQWdEbGNkSzhpMElmamNZaHBldFpzLzVueS9SWldWYjNhYW5rWU9jNkZuZjRudjN3eCt0L2RsOTlibi80ZS9VTUFBQUFnTDJNUnFPNHhuVDZ3eC8veXpvVEFCVFdwd3VhTnpKUWlvRzVjWGdLMEkzVDU4MHpnNmQ5M1lXbllQcnQ2bFBkdjFzbHprRHIyV1N0ZnAyRnY0UGl4elY4KzIvaDc4RDZjcTIrM1N0NUFBQUFBS0swRHZ5ZlovN3F5K1BqNDFRSndYZUhDQ2ZwajFaZjQ1K2Q3UEd0YnRMWHVGWWIxMmtYb2VDRFVGVzV4S3dVczVEV3M2dmZZK1JwZ1k3cnBhQjVMUU9qMk1pZnBjOXB5NWZ3a0RxSCtMbTJneEgxclBINmRydFc1d1RTQVFBQUFBWnFOQnJOcXkrWHoveFZYRU1hV3pkaWdIVmlISjdXYnlmcDYza0xQM1k5UnJMSS9hQmhWVWJUOEJRcy8yN0RnS0E1WkZBL0JjMzNidEFtcWNHZnROVGc3eXVlUnIrdVB2UFNUcUdubE5xeHczaVRPb21aSjI2dzlleHNyWjdGejNIR2wvdHRiVUIyN2U0QkFBQUE5RjlheTF5R3pldFd2ejArUGw0cEtRWlFGeWJWbDdmaGFSMzNOSU5MaWpHU1JYZzZaSGlkV1RsZGJTb2pRWFBJb0o0S21yL1lrSTFUWTc5cTlJOEx1dnk3MUFqUGM5L1ZXSlh6clByeWZyMThkUktEcTJ0djErclpTY0cveXRmd3RISGwybTdpN0orNTJENmVLWW1kTEllV1ZxNTZQaFk5L0xYZTU3eWhMbTJZc3FEVXZGVWF1MDEvdHBTNUNQV1JIRlJ0MFVRcGFHLzRoN2krTXgvUTh4SG5JTDJiaDJqZmV2ZU1mdDd5bjl4VjkzdXNwT2pwOHo5SmJYUmN6ODA1WnJJNlpIalYxVnczbGRVc3ZIQUlzMi94a0w3MjQvUzhiUk0wZjdZeWoxTmpIeXYwYVU5K3JTOXBjclhJc09HTUhjWkozenNKbnIzL3EwQjU3b09yUXdtZzUvMzhMVUtlR1VOeU5hZ2Q4dFh6MGNjQjBpKzVqUU9lbVVUK3FhcGw1Y2YzeGYzMU5lZm5DUFdSL2pBZjFON3dyRUdsZTA0SExENW8zOGo0R1kzajQ1Zldqdjh0TXlFOWV1WlhtV0xqNGJjU0R6M0Z0ZHFydHVhMEtjNFUxOUl1aHRnLzlMVWZwOTkrVWdUZk5maHZVNE4vMnNOZk1iNWI1N0w2UGVQaTU2enJ4YzVkZDFmUnk3cDJsZ1pYOFhQYzgxLzNJbjArVjc5M0hKVE5UWlFvMkt4NmpxK2RRSVZCT2YvaDY2b3ZqMS9pb3YxdCtzUjI0Vll3SFFBYUYrZlE4L0MwZmdWMEtLMXY3YktHSE5lYXJRVlIrdk0rRGs5citaY04vNmo0R3N6MWpXRnZRcjJ4bXIvV2FwdU9rYlJZWGtETkJoODBYMHNqMGxhRHYycUlsK216N2o1OXhqLzgrU1I5UFV0Lzk1cU9JaTU2L3RsVjhIemYzVlgwcXE1TlF6dWJVcjZ0MWFWZDB4Q1AxK3BkVXhzNVZvT3ltQkpvSHA0QzZFdFBCZ1ZaTGRCTkZBV1Eyb1R6OVg0ekJkUHZ3dC9COUlWQU9nRFVQN2VNV2R0c3lJYk92ZC94dnp1UDY2SFdnQ2hSamNIZjFhYnJPRC84MzVydElmUEZGTStKVnJHU3MvVFo1M0RXS2tZU0R6bTlyNnQrcG9PWjc4TVByNkVGQ21yM2hwaWV2WVUwSXQ5U0IvRFhnbUVUN3c5Tm5VUHNEQ2JoZGU5YXZ3a3R2T00wbFhuc1lOL3QrbStrcStyTndHcmEwRURodTBYNVVPTTdXTlB6ZXZiRHA0bGdmNWF2VFJqUTg3a0lzbDBjWWhDcDVhUm43NlRNNDNoR2V0WitXbzJOLy9wNFpVa1JiYUQ2U09mTUI3VTNiRFdJTk8zU3M1UHhzeG5YalpaaDk3V3VUOVY5ZjYva0tPd1pqd2ZmRGcyV3R6NEhUTmtmSnVteno0RzkyS2ZHbE8yekd2cXNWNjJCUzg4T0dUeTNRd3FhcHdCZWJMaW1vZjRBM3VyZHhZc3VkZzZtaWVicTNkQ0hiQVNJd2J2M1RYUmdoM1lZSmhIRjE3VlpxRCtEUTJmMUxBMFdWL1ZzRXVyZGNKUEZheE1HK0p6R3dmOVpROTkrdk9VWnVRdGx2dmRwZlRJeGhBVzZKdXZqdGgzUU53MyszTVkzeWRVd3diMXE4RWZVbmRhdFRqY3QvWnh4SnUzUGFnSGxXdCtuUG1iWXg5ME8rTlpudFpuUWZGQjcwOEp6L1JES1BnWFcreUJjeWxnMzdhQXZhclEvcU83YlJPM3Z4YlA1MlR5YW5qN2ZzVytaSGRCSGRob2YyVkJQNHpydXJnSDBPRStkN3J0dWtuN09ySTY1dHFCNTcrZDZaeUhQc1dkY3ErNjZ6bVl6RngxRTBMekJBRjVjNEp5SHB3Vy8rNHgrMzFYdy9QS0FoaU11cU05cjdKZ083akFza3FoclB3eTRjcXRuc1pON24rcGFYWjFkN0tCbWRkVkJzaDBVL2hLZUZnWlBDLzRWdjFiUHFmY29IdjU4TERZTkJ2VjlqWmI3SkdSNmtxMkwrNTc2c2JoWVBFNmZTZWdtcUI3SG40c2MrM29HV1I5dmhoeklTTzNDZGNoa2M1OCtrWnFlNjIyTFhyK0U4ays1LzJJRFdpTjkwWTNBTmk4OFA3Y0h6T2wvdGQ1REFXUEJ1RjYxVC9BcSs5ZFFIckJlL1Z2MXUxenQ4SDBuNlhldmJld3NhTjZvenR2Z2pMT2Vmbnh0cG9VYXlpYld1WGM1Rk1aUnp4djZjZldKRmVHL29iNGdYbHpZaTZleS94VUgwTEdpNWJhNEY5UG1WcDlwdk1iNHdLZHIza1VNL0gyT2xUZDFKZ2RQUEZJRDhEbVVmWnFTN3VyYVEzcDJZejE3bTJrOWk2OWVpTHNQWThEaDF6UklmSzJUVkFkdjE5N1BRejlOQzcvK0M4OG9sQzMxWTR2VXg4N1N1SGFjSnVtL3BINzQ2eDdqeUVQRjhlZEZHamYrWDlXMlhNZU5seW5EQzlCeXV4Q2VUai9jS0EwRzhzd3ZxaStmQ3Y4MTV1NGt0Q3NGRmcvWkJEOVRlbVQ4WE1lRFFiRmYzRFdnRjlkQmYwMXp5Rm11QWZQVTN5L1hZaVZmZHZnbnY2ZDU2WnNOWmJXS2ZjU05WMklmWmZobzAxTDI0L0xZQm4zTjRWcDZHVFJ2TUZnZUZ3L0hLVkMyTE9CQlc2WWRJdU93WC9BOGRvNjM2Y1Q2dnVWK25Ub003d2tleG9EcVRkb0ZWSGV3UFBzQjF3OTFMUVljWWoyTFFZWTZGaG5qNU92UHRJRmw0a25yNVVEZ05qM3JKWnNMYWtGdjI2aEY2b2ZmcHMxaFAxZWYzOEpUdXJxbUNhQkR0L1gvUHAydS9LSTBHSWhacUdjRGRGZE8waWt1b0QzdlgxRmZKNHFQbktTMTNiaWUvM3ZZTFpQbWVyQjhYdGc0ZHhVOC8zbUh1VzJjbHk3U0pwbFZXWWw5bE9scjE2ZW8yZGswdExQdXRGV3ZndWFwa1k4Vm9NNWdlVWdMQnFzZ1huRXBJOVBDUnl5WGNkZzlTQk03eVQvaTVvT1hGaXAvQ0p4ZXFOdURHVlRGWjJvWjZrdWI4YkhrZXBicTJpSXRNdFoxOGp3T3dQNU05WERzcWV1WDFDNlhmSklyN3FZMTZJUmh0RmZ4VlBwVjlZa0xCbkYzZnRzQjlHWHFDeWZ1QnJSVzc2ZWgvQTErc011ekh1ZWVwYjkyNk1QNm9qN1FuTFJHK3BvMjQ3MVNKS1BuT2ZZZHQySDM5Znc0Tmp3ci9jUnVtdCtlN1REV2pZZWFZdUQ4N2RvQlRiR1Bzc1QxK2FsaUtHcGNIdS9YUTVmWDBadWdlVW9oc2d6MXZpTWhMZ2Ira2s2VzMvZmhvVXRCbXJqWXVXdWc1akw4c0t2cWgzS2ZoWG9EcCtSZjEySUttbFZkcStOZDN2RlovRmZKd2ZKbjZsb2NTTzB5K0FwNzFNTmJKd2g2cWZPQndDdTlzMEFIZzV2RUxIOElvSDhLN2FSd2ozMWgzRWkyZFBvY1dxdnZjZXo1cTVKZ0FNOTZMN0pBdVpQUWlyZmhkV3RoRnc1RmtJT1VZWFlSZGtzdkhtTWtQL2RwN1hadHJCdFBuZCs5TUJmOUk5UjdRSk1XMit3K1BiTURHcGQzdXNHcytLQjVDdURGZ3R3MWhjaXU0bnNPenRJN3J2cjI0QzNYVHNQdXNzaTUybFUxV1N2M2FjMkJVL0t2YTIvV1V0RFU4YjZXK096OWx0Nmh1dXhoUGJ0ZkczelZjUm92MXJNUEtWZ3c4VVQycHowTzVaL1ducnVUTU53MkxMNTNLcVZ3cnl2THlrdmlHR1Q5OVBuWW5ZQkc2L2s4Q0p3empHZDlGakpJQi9rS3Ara3dDZENzOTVsOER6aFlYTmNQVDRIZ1hkYjBZd2JlU1FwazliSC9qNzlYM0JCKzQ4bm9uZC82K3R3T1pBN2EyZXZDaWcyYXI2VUVqd0c4MHhxL2RRemsvVEtFOXh5c25ZYmRwVk9JbldnODNUT0w3MWtPVDR1Vko2cndZQVpUcTB3T2RhV2dpWXNSY1ZQSzFRRHFXZXljSnpVMjlDZXBMbDQ1WmRlYlorU3E4TUg1cVN3SVFCeFh4dmZhaGZhQzU2dlQ1LytWdWgxYW1UY0tuRE1FMDhLdmYyWXpHVFFuWlZtcll3MWExaVM2Zkk1algvZDV4Ly84WTE4eThMNHcxcjFQQnd5L2VFSjY0K3NRNGc0OUYrTlJkMTM4NENLRDVpbDlTQXhFMVowU1BBYnl4bjA4WGI2bFUxaWRPdDgxRlZrOFdYNnV6ZzVtSURWT215VHF6T1N3MnFHNEhGQTl1MC92aGF4enNURzJmN2VDQkwwUm40K1MwN1Ivc0VBSHBENnY3ZUI1dEVyZHZ0QXZRbk4xT3p5OWpnSDYvSnlYbnFZOXp0bm43aVEwT20rdnE2NitWWnkwYmMrQSthOURPRlQ0d3poZ0dtd1U3WU9INEQzbWZhaVA5MTMxbFVVRnpkZlNROGYwSVhXZmN2NlMwckhmRC9RaGpKM2dMNkhzb0EzMTFyZlY1cFE2TjBrTVlvZmlsbm8yRDAvcDJ1dXFaMDZkOStmWldBWnAyb0dlOVhrcGVQNnh4ZkhsZVJBOGh5YnJkZHp0N3dRT2ZYL080NWk4NURUdDUya3VEOVJ2V3VQM21pbE8yblJBd0h3KzFIbHNFRGd2bmZlWTk2YytkcktodFppZ2VWcjRpb1YwMGNDMy81SjJFZzM5SVZ5RXB6VFMzMVRKUVEraTR1YVVPRURZOWQwMnV4cmNEc1V0algyc1ozVUdFT0twODBWS0ZVYTV6MGJwYWRyUHZVY1JlS1p0aTMxLzIrK0lXd1hQcjJYQmdOcnI5RFI0NXlQOU55MzgrdWMyVlVPOVVzQ3h6ald5RTVzOGFmbjUzVFZnL21tb0FmTzE4Vzc4L1FYT3kvUnBTRm1rQjFJZloyM1BQNHNJbXFkM3BjWjNsemZ4RHUxZkJjeS9ld2hYQVQyQjgyRU9vdUtpZG53R0xodW9aM01sL0k5NlZtZmdQTDVYYXlGb1dieHBLRHZqeDh3Q0hmQk12N2Q2SGRCdkxiZHhjYlB0ZjJWa2dkcTlOVjlrQVBPMTN3citGYVJwaDJibTZuV3pma1BqMGxydnJnSHptNVJaeUZqZ2FSMzdOeVZSbFBoNnVKbGk2RzBmM05wYVV0WkI4M1RpZFJHZTNxUGRoRThDZWM5MkNqRjl4U1JZQ0JuYUlDbzJQdjhKOVc5T0VUQi92cDQxRVRpUGl5Ty94MHdCZ2dQRlBoZkxVUGJKRmd0MHdMWTJMbWJVT090Z2pCa3pzaXpUV0Flb1o3NDREVjd0UmYvN3JKS3pLbHc0eFFyMVNKbUx6aHVxcDJNbFRNUFA3bUxIL3p5TzY3emU0NTlqQWZHUmNreWxaZTl0WFZ5R0ZqZEVaQnMwVDRQN1pVT0RrdWlMblZOYkgwU0I4MkVOb3VaaDkxMkgrL2dvWUw2MW5qVVJPSTlpcGdEcDJzdDlMcTZyTDE4TC9oVXV2RWNSMkRiWnFUNnhmMnI3dmNoeFU4L245TDV6L1NQVU00NmRLZ2w2YmhySzNoeGlNelhVNDMyaDN4dXV3KzZ2RlJCd1ZFZExKaTE3LytlZnJXMW96VEpvbnRJTC94bnFmVmZNdXE5U3N1LzBJQXFjOTF6SzV0QkVPdmJvaTNlWTcxVFBiaHNhZ0szU3RVK1VjcEZpSDJXQkR1aHoveGZidVM3ZUV4YzM1UDRudmY0SmVGMDlqZ3V4bjVRRVBYN0dsNkhzTko4blFacFNxR3QrM3RqM05uZW1DZkVWVmVGcGJYQVhOMmxjeHovSEFvdlEvb1p2OWlNdHUvNjRWdGtGemRPSjE5OGIvQkhmZ2gzeCszUU1BdWY5SFR6RlUxYkxQUVpRKzlZek8vRjJyMmV4M2Z2WXdMZU9HNC8rbEk2MjJMYTM1UHQyYk1BSzdOai8vUnk2MlNUMElXNGNkT29jWGwyUDQ1ai9Sa25RNDJlODlEVHQ3MnlraHNPbDlaVGpCbjlFL040eXRWSDNjeHVmcVhkNy9CTnJ1QytYajljUzVVdVdoT0dNeTVlaG1SaktkN0lKbWpkODRuWGxRU1U2NkdHODEzbjJjdkMwYUdqZy85YzdjTlN6dmV2WkxEUzNHUE01YlVpaXJHZWk5RFR0RnVpQVhkcTZwbDVWc291NGNkQ3BjM2k5YWJDUWlHYzhaMWR1SWJ5cS9qZk5XSlRhcE13Rjh6Myt5ZGMwSjJQem5QVmVQYzNXVjJuWkIxY2ZZMTFzOUlCdkZrSHpkTUlqUHR5bkRmK285enFCZ3gvR2VIK2tJdW5INENrTytQOEl6ZTJVbmFaZFArd3ZibVpvYWpIbVV1QzgyQW02Tk8xQTM4ZVpjWHcrRHQxbE52cVEzbld1dllMRDZ2QXl5T1pHLzUveFdjRy93cWtOWXJDL3F0N0U4ZWw1Q3ovcXhJWnphaFEzU2gzditkL3o4bGpnS3NqRW01c0hjNURCYXZTQWIrZEI4eFlENWw5VENraGU5ekE2UVZEMmdEL2V3ODhOMXpQdndEbDhBTlowU3U3TGxJcFdVTUF6MFphVElGTUpzSHQ3TnduZExVVEVCZEdsQlVzNHVBNTd2emw5ZjhaTFQ5UCtJUVVBZ2QyOTcrblBvcWZTWEdhZkxMNTNUdW1xcHdXYnlYUTcySEg1b3NtNVo2ZEI4N1dBK1hIRFA4cXVrM29lUnFsSXloNDR6YXN2djZ0bjJkZXpwbE55eHcxS1R0T1Y5MHlVdkFqOXdUdURnVDNHbXBQcWM5ZlJKY1E1eVo5cGt5R3d2MW1IOVJmYTBHUm1zRGJNM1VMWXk3VEZuM1ZoWXdzMXVHcjR2eC82ZkhVUlpPTE54VTNhME1pdzU1Nk5qTXM3QzVxbkZOR3hvVGx1NGNkNWozbDluVU5zakN5RUZDWUZ6QzhiL2pIdjFiTmFKMlpOTHNZSW5KYzVFQ2k1N1oyN2hjQ09ZODA0bHVnNktQRjdIRHZwSitHZytqdFZFbmpHczNWdVl4anNKcTFiSDdmOFk5VlBYdnZNN3B2SmQ2SGtEcXFuTXZIbWNSOHdMbS9rT2Vna2FKNGE4Yzh0RFQ2a2k2N2ZWQkVVTldpYWgrWUQ1amRlZjFCN296OXIrTWNJbkpmM1RKVGM5cDVhb0FQMmFQUGlPODRub2R2RmlFdjlKQnhVZnhkQm1uYjYvWXczblJtc2FUT25XV0VuWGN5L3A4YWVIQ0k5TjdNOS85bGRtbmV4M3poQUp0N3VmZkxza3VyalBEVHcrcVRXZytackFmTzJXS1N2LzJGY0ZENUpITktnS1RZY2wrcFprZldzamF3T0F1Zmx0YjBsTDBKYm9BUDJhZk51TXhoZnhIN3kxaXNtWVA4K1A4aE9ScjlOUTdtbnpPTGhGZWxNWVlzMGJ6M3ZxSDYrZFFjNFFKdzNuZXo1YndRZEQ1K3J4bjcwbTVMb3hFT3dhWUYvdG4rMWFqVm9YZzA2WXNmZlpzRDhZOVdJTFQwM2pUMk1VcEhrUGNpZmgzWUM1bC9zN2lxbjBYK0d3SGxaNHNDdzFFWG91QUF3ZHd1QlhhVmR3eDg3dm95VDFFOEtuTVB1ZFZlYWRqemplYnRJNjNQQTg3cmN1RGxUL0J6Z2tEN0pXbTY1N2NTZ3k5M3JZZmxoWEI3YnNsb1BtYlVXTkU4TFRmTVd5eXNHZE8yZWJlNWhYQ3JmZkZYMUxRNnlMMXY2Y1FiMHpkV3ptUHJ2cG9VZkpYQmV6alBSaC9jb1R0MUpZSTkyTDQ0enVzNXdkQndFem1IZnVydW92bnhSRXZSOHJsWnlCcjY1K1I5czFPV2M5YVNxbXhPM2dGMmxOWmFUQS83cFF1a1o2eGJtbTlmRHNzRXMxSGpBdDVXZ2VWcGdpZzNKY1lzRmRXWFhTZU9kUTN3WXBkM0xjN0Qwb2FVZjkwVTJoMVlhL1RiRXdMbUJSemtEODVMVHRGOVpvQVAyTk0xZ3pDbHdEdnVUbll3aDlFL1N0RU9QcERXMTQ0NHZ3d2xXOWpGVEJNYTZBeXB2K0ljVUI2NnRMV3c4YUo3ZUE3Tm9lY0RobEhtN2swVHlHdHkzK1FvRUE3UG1HLzNZZnQ2MDlPTXVVbHAveXBnVWxmcitKR25hZ1VNbVFEbU1PUVhPWWYrNmEzR0x2ai9qSmFjNXYzU2lGZjRoaHpIblJWcFBoNjFTRzM3SUtmUFZlaU92SHdmTWxFUXJ2bmhtZWFFK3huaHdMWWN0R2cyYXA1TmtNV1ZWMnp2MG5ESnY3MkdNamRWWEpaSEZRQ2t1NExhNVdjUXA4L2JNVy94Wmx5bTlQL2tQektjRi93cmVvd2djTXViTUljdUd3RG5zVjNmak9QWkdTYUIveW5ldUtRc1VQRW1CNnZOTUxzZW1NM1l4VlFTZGp3UGlXdnczSmRHNG1TS2dyVGF4NlpQbU1XQisybkxCT0dWdUlEZkVnWDJjNU1iSmVxdXZRRkR5clEzQTVxSGR0TFFmdkhlNmlPZml0dnJ5c2VCZlFacDJZTjkyTDQ0NWMxaVFFRGdIODBWWU53dmx2cnJ1UkIyRkxQdXJxZmt5MjZUbjQxSkphRHNHNEtPRGUreWlyb3k5alFYTnE0WTdCdFM2MkowM2Q4cTg5WWN4TmxvZmxVU25nNlRZSUxRWk1MOUpBVHZhMC9ZbWhTdkJnQ0xhMzFrb2QwZHJYS0NidVl2QW5uSlprRmdGenNkdUNidzRYb256aGk5S2doNC80NlZuZ2ZwZzdnZC95YWtleDdHbTdHeHM0L25JWnh5d01OWnRqQU95dE42WE54STBUeWNVMzNWVUtDcFJkK1YrcHhnNksvdTJNenJNRlh2cjJpN3pPRUc3dHJQWnhMNWg3N3hIRWRoSFptbHc5Wld3dTdqaDVVRXhvSDh5MzRRY3BiWHM0OHd1YStiT3NJV2d1Ykh1SU1yVkFWbjJISk12d3lzM3NkUWVOTy9ndmNycnZrclYwTm5EZUIra0l1bGlVQi9Mdk8xVVBBOHBYVGp0MTdHMmR5M0drOERYU2ovN1o2UDROTzN1SXJDbldjaG5RZUpVWHdrN2oyWDErUXloZnlyMU1NSHBhRFNhdVlVTTJEVERhenF4eVp6bnBFMjdGMG9pdTdHdWZyUmVkMklRSE9oVm0xaHFEWnFuQmpzdUduVzFNMDhsNnJaemlQZitSa20wTmtDS0cxUis3K0JIV3hqdVRoZGxmMjd4cElqMk45NmpVdE8wVzZBRDltM3pjbHVRT0UrdnBnSmVIcS9JVGtiZis2ZHB3Yi9DZTY4ZFlZalNjMytlYTcxMGgzakdwS2Jubm5ySEFUTHhhdi9JWjB4KzhCcE4zU2ZONStIcFpHSVhIbExRbG01TkZVRXJBL3JWQnBVdVdCVHVyc0cvN21qdzljSHU1bUxhMzFKVFFYbVBJckJ2bjVqYmdzUzdsTllUMk03aUYzM3ZueGFoM0RUdDhRRE0zRjFFMzVTVkM4Rk5ubEZIYW5iUFZUUE1DZXR4STliSEs4VTFvNFBXeVdzTG1xZEZvaTdUZ2hqWTV6RkJYSWF5MHdTWElqN3ZYV3hRdVV1cG9PbE9Wd01HNzJ6TnYvMk5kWE5XK0dBR1lCKzVMWEJlMlFBRUw0NVhaQ2RqQ005NTdKOUt6UUoxYmhNWUE1VDdNMi9ER1QrYTFQQTl6RnVhR1FNc3FpOWZsY1NyelJRQnI2eUxCNzlPdXBhZ2VkcngxdlZpOTl5amtJMkRkM0d3VTMyTGcvbXVOcWpZNGRXOXJ0bzZwdzdLR0JERTlyZlVoZWk0UUdjeEFOaW56Y3N0K0thdmhOM01GQUVETUMzNDJxOXNtR1lvMGhyYmNlYVhPVlVuV1h0bXg2R2VnMVJqcGRtWVY3MVBtYjlPbVM4VUE2OVZQVWZ6Y0VDR3dycE9tczg3SG1BNC9aclh3M2p3TGc1MkdoaDF1VUZsN2k1MFhyOXVRM2ZwYUM4RU5Zc3dMWGh3UHBONkR0aTMzY2pzZWs2OTN4eGVITTh1Z3RQbURHUGVWbW9XUHB2QUdOcjh1WVE2K2RhdElxbnJoUGhFVVRZMkJsZ0cyUlQ3M2k1VGp0bSsvK0RWUWZNVVFEbnYrQmQzK2pXL3ppRk9zQ3lFMUc4ZXV0dWdZbk5LUHJwczh3UTF5eGljendxOS9HTVRDMkRQTm0rUjRaZ3p2dDk4NHU3QVZsTkZ3QUQ2cURnbUx6Vk5lOXd3TFVoSHI2VzFqZk5DTG5mbWpwSFVOYzg0bGNHZzhUSEFuWkxZMjVlMHJnbDExY1g1dm5YeFZVSHpOTGpJb2RPZXUvMVpjaUsxM3NGODF4dFViRTdKeDZMRG4rM1VRUmtEZ3BMVHRGdWdBL293RjVoYmhJS3RZNVZsOWVXTGttQUFwZ1ZmdXpUdDlGMUo2NVluTm1XUzFQa3VjbXN2eGdDNW1Ta0N1cTZMcnoxcFBnL2R2L2Zsd2VuWFBLWDc4a2xKdkY2YXFIYmRhU3pjaVd6cVZ0ekEwR1g2N1hOQnpXSUdCS1dtYVJkc0F2YnBGK09jSkxkZC9DY20vUEFpZFlRaDlGRWxwMm5YbHpHRU9YTkpIRTRpRWpRdlp3eXdxTDU4VlJJN2M4cWNKdXZpem9mTERnNmFqMGFqT0xESUlZV04wNjk1aXhPc0I4WHdhdlBROFFhVkZLZ2xINHV1bjBsQnpld0hCTXNnVFRzd3JERm5ibUthOWpPM0JyYU9WWncyWndqUGV1eWpTazNUN3BVajlGSmExejR1N0xJdnZDNXY4TS90bTVxZlc4OVU4K0ptRjdHUmN1ZjBEUEQ1T2lob25ocm9YQmF6Ris1MzFwUEQrMkFuNUdzSFJIR0NldEh4WlhnL2ZYNjZidnVPRFdhS2FJTmpYMTNxcnRaTEMzVEFIcnJPd3JMSjNLMkJyWXduR1lxM29lQXNVRzRmUFRRdDlMcXRzUTdibVdlcUxHbVRxRU1oTDNQS25LYnI0aUxzR09NNjlLUjViRXh6MlkzbjlHditEMlNjWUgxVEVrVlBVQmR1UTNaeXVDZE8wSld6R0NCTk85RDM4ZVo5cHZPQzAzU1NDWGkrN2k2RDArWU01MW1mRlhyNThWM0tNM2VSdmtnbmE4OEx2ZnlwT2ZLZ2pUMVRSWTRCWWg5NnB5UTJlZ2cyMHRLT25aNnp2WVBtYVdEeElaTmY4bHRhSUNOL2RxMGROcENQNVhhU3dhVXMzSTNzQmx5M0lZOUFxTjJTK1Q4cnNaK2NGbnI1M3FNSTlLRlB1cklRQlZ2cDZ4bkt1RHoyVTZWbWNmdGd3elE5c21tTk1xNng1QjdZaW9mWXZJZDZ1TVlOUFZQR1lzMmJLb0xOODJXbnpHbHBMTDdZWlN4K3lFbnpuQmFqRm01MVVRK2tFd1I3U0l1cnM0enVIL25KNGI2Y1Y4K3FDVnYrYlhBOGZWbHFtbllaRFlCZDI3cTRvU3pIN0VaeEljb0dVdGhjZDVmbWlneklOSlNiQmNxR2FmcFVENThUNTgyekFxNS81aFlPVmxNYmNhMjdORC9lWFlSeTErV2E5R0I4UVc1OTZGNUI4MHplcmJ4dTRSNFg1WDNCazhPdXlpdUgxeUI0bjNtK2Nta0REVzdLV1Jqd0hrV2c3M0p0TDk0N2JRN0drMUI0bXZiemxBMFBpcFZlbTNPOHBTKzZMbURlZkpMVzZCbWVKZ1BiYzhYYi9Kd3dpSTM4bzkyVlNacVd4K0tMOEVLOGE5K1Q1cmtON0JkdWMxRVA1SDJ3RzNMWFFmdzQ1UE1hQlBVc1g3Y1pUZGltYmtjUmJYQ3A5K25VZXhTQkhjMHp2YTY0T0Nzb1NHNXpqbG4xV2FSUHA2ZUxVcVlJbTNVWnlyaTg1RFR0czdSZUFhWGFOQ2VPcndDOVRmUG1lUUcvaHcwczFNMjZTL1A5LzlLYzhCK1VCNTJNWjdmOTVjNUI4N1NEN1R5alg4ejd6TXVkSEg1VEVxK3J1QzI3ZFR1eXJVOEx6eXg3UGpNbHAybC9iNEVPMktHZHU4KzRuYnZVanBHTHRVMjY1K21UUXlZRTQwbUdaQnJLUEcwV040SE4zVDRLN3ZzMnJXMWZiZmpmdWJvd3JxUUJIN3lDc2ZINWFoenYzaW1KdjN3UjM2T2plcmdJV3phdzduUFNQTGNKckVCZXVleUdmSGtRZjZtdXNhTmNUaWc0YlY2T2VKOHMwQUY5ZHAxNUd3em1aTTlJaXhjV0VSbUVkTnFzMUxXUmMwRVZldGozWGY5UVA3OFcvdnZRVDIwY2FKeDd2N2s1WVV0bWlvQWNuNytkZ3VZWm5qS1BCUExLblJ3dVFya25IWWZXWVR5a3lRTDV1dlhzc21jYkhIZHhscnJJNVQyS3dDNXlEcHA3dHptZFM4L2dOTk54eXJqNmpPTEhuV0lBNC9KNUtIZHRaSzQvbzBDYjVzSFBuWFlzNGJUNVZEMmtBZkhBd2tMZ3ZOSCtmeEhFUnI2SU9aQkJQWHoyTU9LdUo4MW5HZjVlZ3VabGkwR1BCOFh3UGFmTUtmd2VPVzFlMXNEZ1U2R1hQN013QUx6UXh0MkhmTjhWZXh5Y0NpS1B1ZGl4WW9Bc3hQbVRMRkRRc0pRZDRXVERYODgzekpudkNxaUhzajdRMUxNbGNONzhlSHpJc1pHWlI0QmNuOE1YZytZdnZPK2xNNW05eTVmOTc5OHlsTEZyczRzT015ZnFXZjZXQmoyODRsNlZtQUxWQWgyd0N5bmE0Zm41L1p0ZzR3WmtJMjMwS3JWZnVFaVpLYUVFbStyWjNaWTE1aExXTFdkdUxRMFJPRysyLzErRzRjWkduRElubDNvWSsvOS9ITGpZNWFSNWpwM3ZON2UwRnc5bGZMYThzeTdKTkUyaURxeU14ajBuVHB1WDgreVV2a0JuUnoyd1RjNUI4eE50R0IxeXloenlHNWZIUGt1YWRtaElPaEIyc2VHdnR3V3Q1aUgvazZBbk5xL1FvRlhnM055bEdiSDlHV0pzWk9iV2s5Tlk5c2MvT0hwaFVCRUh2amsyaWxKRzk4ZFVFWHhYRnNmcUdnZTRVNjg1Uk9GcDJpM1FBZHZhdDJYSWV3SENTVjlhNTVRNVpMOGVVR0thMXBqdWV1YjJVVUQ5MmppdjNES2VqQnZOcnd2NC9mVHROQ211VmY5UmpTTzE5ZlhQV2U4SFdIK2RNaWUzZWhqSEFkK3RIYjEwMG53YTh0eUZybUwxNTZGY2hISjNWUGQra0Z2ZEgwSHpNdVRXSnA1TDMxU1VXU2czVGJ0Skc3RE5JdU5yTzArbm5xRHQrWVpUNXBDaHdyTkF2VFAvSTNPYjZ0YVhWUGRlbWkvbjdzSzRjakM2WEx2NVVEMW5DODlhN2YxLzNKaHpNNkJmZWU2dWs2SHYrdnFYZ3VhNTduUlp1SSs5RXAremh5RVhRRXB6YzJJZ1JvL2FSRHVkeXhtZ2w3NUFOM0VYZ1ExeVB4azBkWXRvY2I3aGxEbmtQeTZQL2RhWFFpOS83ZzZTYWYrM2JiMXR2a085WElZeUFscjYrR0ZZZHZ6eno2dlByWFR0dFl2bCtVdjY5TmxOaHE4WmhYK2NOai9hTXFpWWhQeUNlTGwwRU5UN1VNYjdlVFh3WXBpcVovVHNYcjJWT3J1b2RqZ09XajhXZXZsemR4RFlJUGNKK2RRdG9rVk9tVU01ZGJYRURleW5VdmRTMkhqcmJvL2dUUWxybGxOck1MUmtsYTdkcWZPYXhNTXNzVDBhUUVEWk9JR2MvYSt2UHpwZ1VKRkRRN0owRDN2NVVBN3laSE1hMUY1a2VHa0xqMlV4Y213VDR5RGF6dE95QnVseDhQcXR3RXMvc1VBSGJHalg3ak52MTA2a3M2WEYrWVlUYUZCTzN6VXQ5UEkvQ0tDUVdmOFhuOGRONjIzelBlcGx6QUtSKzVxbE5aaGhXR1owTGZIVStYL2plb3dORzJ3UjI5cS9UdEU3WlU0cHorcTJvSG11SGUwMzk2KzNFOE9oTHVSTVBRRzhVcTd2bnJjNHF6MXF5d2VCSjJDRDNDZm14b0cwSVc1UWRzb2NDcEVXbFQ4VmV2bHpkNUJDeGxuN1Bxc2xuRGFmdWVXOXQ4endtajdFNnhxTlJ0WUFlVzVNc3h6SUtYcktmMWIvbC9IaDJhQjUxY2hOTTU1VTM3dUZ2WDB3VisvdnVnbGx2QytvalVGOGwzUm1CVFhxbVY3YXFaTUd4VDFMY1FPR05PMUFuOXhtZm4xT0JOR29OQmE3VkJKUW5Ga29NeHZmdWNBSkdabHUrUE92QjJReGpmUE5oOHgvMzVQMHVsWDZhNW5wZGNVNDB1L1Y4N2RNY1NXQVltMDZhWjd6NHMzQ2JldXZhdEE2clQ2VCtCbkM3NXNXc1U0enZUd2JWTXFTYXhZT3dZRHkydUZaS0RPcnk2a0ZPcURBdVlNVTdUUnRwZ2lneURGNXlXbmFaelpQMDdYcUdZeHJFU2NiL25wK1lKMjhMdUJYTnlmdXQyWHVjNXZxODdtcWYvZlN0Z09sT25wbVVKSHIrNVZYQlBMb2syd0hzK25FS2VYSXRXMmN1alZGS3ZXK1dhQURmaHpQTEVQK3A0SW03aFJOU0tmTm5ES0hjdnV3UlNnelRYczhjWGpsRHBMcG5QWXVaYm84YUw1WndPOTlZVTdjKzM2aGxINWdsYlo5N3BrRVN2TGNTZk5KNXRjc2tFZWZUQlFCUFc4YnBXZ3ZjeUpXYXByMk9ER2J1NE5BWWZPSHFWdEVRMmFLQUhwUmowdE0wMzZSVHZwQzY5SWF4S1lEWVFmUEY5Tm16QkplSittMGViK1ZsQmt3cnRIRURaei9yZXJsUXVwMm9BVFBCYzBOYXFHOVFYeXVxZGx2M0tIaTVKeUZRNzlTb0lMVHRKOWJvQU4rc01qOCtrNmxMcVNCdVVic0M4K1ZCQlEvSnI4dmVENDExNy9Sa2VtMjUvSzF6M1VKdjcrNjEydWxIaWlNNDlKVjZ2YTVWMVFCdVNvdWFGNVFHaEo0aWFBT2RWb1dPbUVsLzNicW9jRHJ0a0FIbE5KSHJremNKbW9tTlRMMFJPRlpvR2J1SUIyWWJ2anpyK20wK0d2cTR6emtuLzNoT0ZoejdMTkY0ZGUvT24zK245Rm90RXp2UGgrN3JVQXV2Z3VhcHgwK3g0b0ZXcEh6QU5ackVNcXp6UGphbktBclZGcFFtQlU2Q1p1N2cwQkI0NXFKMjBSZDR1Smo5ZVZFU1VDdnh1V3hYcGVZQmVwZDFTYnA0Mml6RDN5N3BRK3NhNDVZd2x4ejVtbm9yVVdQZnBkWVYrTzd6MlA2OXR1WXZ0MzZJZEMxSDArYTU3NEw3WnRiUms4RzhYRUFrSE82eEh0M2laclo1VnlveDhmSGVGS3R4RmMyWEZpZ0ExSTdKbWpPa09ZWjQrQmRwdEJYMDBLdld4WW9jcWduRDlXWThMcW1uMUZDTnBjVDgrSGV6bTJXSWY5c0I0ZUlyekQ5WEgzK3IzcDJyNzEyRCtqS2owSHozRHRUZ1R6NndzQ1Z1Z2ZOQzg4OERab0dhZHFCc3VXKytmYlVMYUltY1NGZjlqam81NXl2MURUdDhTU2h6VHcwTG0wY3U5ZzBONnl4THNiMTZTOEZGSWw2MTEvWFBmLzlZajMrdy92UGdTNzhHRFEvei94NkJjM3BpMG5tMTdkd2l4allNOC8yUllGbEtETzkyMG1RbGc0b1pCN2hOQkExUFVNWFNnSjZQUzZQWTlzU3N6QitFUFNnQmRNdGYxZjM2ZkFTVHB0ZmVGZDBiODBIOG50Ni96blF1cU1mSnRpNTg1NWwrbUtpQ0JpWUV3UGJzaFdjcHQxN0ZJRm9ZWHhJbjZYTUtuTWxBWU13TGZTNnRWRjBWVGR1MGtid091Zkh0NFhNajZjZWkvNUp6OS9kd0g1dDd6OEhXckYrMG55aU9LQjVxVU9YZ3BNbTVENWgwOCtVTDA2NFMwelRmdVhXd2VDVmtMSEtDVHhlSTZaZ1BWRU0wSDhwV1BKYmdaZCtPaHFOcEl1bUVlbjl4NXY2d1hsRFAzWmVRTkdvYy8wMUgvRHY3djNuUUdQV2crWWxMTkpJejA0ZlRBcVloQy9jSm9iNDdQTmkyN0FNWmU1VWp3dDBNM2NRQnEyRWpGV0M1aHdrcFR6K29DUmdVT1B5VXJOQVNhMUxVemJOVXgrcStqSnZxQjdHNzV2N2FkL2plQ0xYNDlGTGMwWHdGKzgvQjJwVjJrbHo2ZG5wQTUwM25uMks5Zmo0ZUYxOStWcmdwWCt3UUFlRHRpemdHcDBTNWxCelJRQ0ROQTNsWllFNjFtWlJ0elRQdStpb2p5emhlWGJhdklmU29ZWXZTdUs3L3NYN3o0RlhPMW9iWEJ3ckRtakZSQkhRa053M0Zua3RRWDlNUTVscDJ1ZHVIUXhUM2UreGJFbzFMek5PWk45blptYU1CWVB1MjJZRlh2cTVrNjgwTUQvZHBPbFhkWlV3eHp3MXh1eXRtU0o0bHZlZkF3ZGJuVFFmS3dwb1RlNm5iZS9jb21KbC93b0xFN1YrZUh4OGpNL2F0TUJMUC9jZVJSaTBFamI3bUpleHo3aEtXbll3TGk4MVRmdVZBQVkxMmpRMy9kYjB4c21DVHZ0T1BTYTk3QU9XaGZZQmJmTCtjMkF2cTZENXBKRHJsWjZkb2hXUzFXSHBUdEVnS2RyN016a3JOVTI3RkYwd1hDWE1KYlJQN0RxdmlNR211WklBZ2pUdERMcy9qQUd3VGErNHVXcnBNa3A0bGkvTmczdmRCN0FiN3o4SFhyUUttaGZSUUtTVGJWQXlBMVNHem9DMGY1T3pFaGZvcnR3NlFEOUo0V0pmSmkwN1VIS2E5Z3NuL3FocFR2cWNPRSs5YnFrT0xxb3Yzd291SzhydkE3emJmRC9lZnc1c3RBcWFTNGtFN1pnb0FocFV3c1lpZzlCK1RjNUtUZE51Z1E2R3FZU1Q1dVpsdkNpOUMvaFNTUUJyNDNKcDJobGlmemdPVHlkSG4zUGQ4dUdyRWpabWUxVlpmOFY3KzZBWUR2TGorOC9mNjVkZzJGWkI4M05GQWEwWUt3SWFWRUl3UUgvVE15bE5lNG03bXVjbVFqQTRKV3d1YzlLY3JWSWFTUmxUZ09mRVRhR2xCVTFpc0dMbTFuR2c2WmEvYTdXdnJPYkY4d0xxMzNIYWVFZlBwQTBpMnRMWGkxbWNmZy9lZnc2RGRsVFFnckhkVXZUQnVJQnJ2SFdiYUpKQVpTL0ZYYzEzaFYzenNVa2xrR25iQk52R1VOZWVFK0E1QldlQmVsZTFieE4za0FOc2V0Ni9WZldoaTdVdHA4M3BzZzhvTmVOSXJsYnZQNWUrSFFZbW5qUXY1VFNEUUI1OVVFSjl1M2ViVUEvWWMzSm1nUTRvd2FLRWkwd25pV0hUTTN5aUdJQXQ0L0s0c2VacmdaY3Vnd2I3anBmZWJ1a1R1M3FlNWdVVTNhazVjSzlOZzRPSGRWdFAzejVYZjZEL1l0QjhyQmlnTlU2RmdQZTE5dExqNCtPaSt2S3B3RXVYcGgzUVQ1Szl1RWdYbmxKR0FyeGtHc29MbXNSQTNzeXRZOC9uL0RueDJiL3VhRTY4REdXOHVtenE4ZW1uOUF5NnY4MjVyRDUvVnYzVlF2QWMra3ZRSEZyaTFCRDhqN3JRWDdOUVhwcjJ1R3RZaWpvQWNwNUh6TVBUSWgzQWl3ck9BdlhCdWdrNzlvdmo4SlE2K1RuWHFRNTBaVjVBRVY1S05kM3JQaUJ1R3Ztb0pCcDFIcDZDNTdmZWV3NzljNlFJb0RWT0RRRjluNXhab0FOeVZzb3JhQ1p1RlNzQzVzQ0I0M0pwMnVtemJYUE9lY2QxYjFGOStWWjRHVkorSHpBcnRBOG9UY3dDOVllVDU5QXZQd1dMTXRBV1FYTWFuNXhWZzdRU0xsVy8wLy9uTUtacGYxZllwYytETEFqUTkvYnB0cEIra2c3SDY1a3RlRTJEZ0Rud3VqWmtHY3A2VGR4NTFRNi9yL3Bzd1hOZWVyYWZjNWVDMWwyTHorL256TXN3Wmx1YmVaUjZYMDlpZmZCNm54YjZydkIwOHZ3bWxudEtrdzhVNmlkRkFLMFJqQUdHSWs2K1k0cXFrNEt1K2EvM0tLWWQyUUFNVTF4VS9GTXhBSDBRczBDbHRMR2x0V3V6NnJxdkJSMTRUbnFtTjgwemM5bHNjWjJ1SmVjTks4ZFZXY2JnM3R4VDFlcytZQklFenRzVWcrZi9UUWRKWmgyL0tnSTRrUFRzQUxSTjFvVUJUTTdDVTlDOE5PKzkydzBBZ0I2Tnl4ZlZsMCtGWFhZTU5NN2RQVGFZYnZtN2VTYjE3cjZRWi9pOXg2bjNmVUI4RmllaGpGY0c5RW5NdkxqMHZuTW9Vd3lhbnhkeXJiZHVGN1Jpb1Fob21CMnV3NWljeFg3N1kyR1hiWUVPeU1GRUVRQlFvMW4xdVN2c21zOEZHL2hSMnVCOHNlR3Z2MlIycXJPRVZ3eWNlZzl6L3dtY2R5YXVMOFgzblY5WEg0ZUhvQ0FsblRTWHpvTFNHWWdDUTV1Y3pRcWNtTVVGdXFtN0J3QkFUOGJrY1QydHhQSHRYS0NCSDJ4N2p1ZVoxYnRsOWVWcjRXVkt2L3FCU1JBNDcwTGM2T1BVT1JSRWVuWUF3Q1Q4ZTFjVzZBQUE2SXVDMDdSZnVYdnNNTGU4Uzg5NGR2UEtBc3IwMGl2S0J0TVByQUxuWDVSR0ovMVpQSFd1VDRNQy9LUUlBSUFHSjJhMzFjUWdwbW4vVU5pRVpoN0tmQzg3c04xTktPZjFWTFF2bnI3SjZmMmUwK3B6NmJZQU5abWw4ZTFKUWRjY0EzcnpUQU9pdENpbEVkLzA3R1laaUlyUGJYWGRkd1hVdVdscUgraTVWZWFSNnJsY2hyTFdhUHJpWFdyTEpwbTlUZ0pZSTJnT0FEUTlNWnVsVkZRbHZjLytJbDV6ZGUzWDdpREFZTnhuRnBpSmkrM3hxOEE1VU1lWS9ENjlodWpQd2k0OXBtay9FMkFZdk9tMlp5VGo2NTVWbjgrWmwrMzdJR2crdFA0Z3J0SGNwcnB6ckVSYUZkZkZZcnIyR0RpL1ZSeVFIK25aQVdoZDJsbkpzRXdMdkdacDJnSG8xT1BqWSt3L3BkRUU2bXBURnFHOE5PM3hsTzdNM1J1dU5DZmJ0SUhzYStZYkt1SW03SWZNaS9nNGJhaGhXUDFCZkRiUHdsTW1MbHF1YytGcGM2eDZCeGtTTkFjQTJwaVF4UjIwdnhWMjJSYm9BTWloRDUwR2dYT2d2allsbmlyOVZ0aGx4NVMyWis3ZVlFMjMvTjA4OC9wMm4vczFKdTg5Wm9Qc0Q1YlZaMUw5ejQ5S28zVXhjUDVaNEJ6eUkyZ09BTFExSVl2dm1pdHRGL003bVJFQXlLQVBuUVluZ1lENlRBdTg1cm5iTmxpYkFycDNoYnhPNjZxQWF6dzE3eDMwT0hOV2ZmblpXTE1UQXVlUUdVRnpBS0JOY1RMd1VOZzF6OTAyQURMd05wUjNPaFRJVU1vQ1Zkckp3aGpVbTdsN3c1SUN1U2NsejlQaWFkNVFSakJ5Nm9rYmRyK1FUcDNIRElFUFNxUlZBdWVRRVVGekFLRE5pZGd5bEpmeS9NUUNIUUFaOUtFeHhlczBXTWdFNm1sVDR2aTJ0STA0NzZ0eCtkamRHNVRwbHIrYkYvUjdsSERhL0ZMOUltVUlqTStCVndPMVMrQWNNaUZvRGtBWDdoWEI0Q2RocGFYOSt1QTlpZ0JrMElmRzA2RlRKUUhVcExUMkpMNERkdTYyRFVNMS8zcFRmYm5jOE5kZjA0YnNVdnJ2bUViK1RwdEFJYy9yZlhvMTBMK0NsTzF0K3V3MUNkQTlRWE1BdWhpQTN5cUZ3WXNUc05KT3lsMjViUUJrTUk2S0MrK2ZsQVJRMDd5c3REVHQ1NlBSNkwyN041ZzU0eWJ6QW4rZkV1YVQ2aGJyZmNReXBXei9KUWlldCtYYWdRM29scUE1QU5ESjVDdVVsNmJkQWgyVTc0MGlvQ2RpSCtyOTVrQWQ0L0lTMjVOWk9vVk12MjJhZTkybERXU2xtWWY4TjQ0ZlN4SE5NLzNFUXZDOHZUb1kyd3A5SEhSSDBCd0E2R3JpVldLYTlwbjN2RUhSVGd1NHhxWGJ4QTU5Nk9yOTVnQjFlQnZLeWdJbFRYdlBwUlRGSnh2K3VzU0ErYXJ2THVIYWJSUm4wek84Q3A3SHRPM2VlZDdzbkZVZkJ4MFJOSWYyZUljendEOVpvQVA0M2xJUnNJdEMweW9EZWJZbnNlK1pGWGJaRjZQUjZLMjcxMXZUTFg5WDhtdXpTcWhucDk2cnpFdDlSbnJuK2Y5TFk5RTdwZEpJSDJjREMzUWdCczFMV2FqMkxnZEtWOG83bktWL0FkcWNiSlY0VXU3Y0FoMEFtZlNqc3lCTk8xQlBlMUppRmlncGJIc28zZFBMRFg5OWt6WjVsRnJQbG9YVXM2a25rUjJlNS9zNEZxMCs0K3IvL3J2NmZGVXF0WkxwRURvUWcrWUNlY0E2RzFSb212Y2Y4ZU5FNjdyQXlaVUZPZ0J5TVZVRVFJM3RTV2xab0dadTI2RDZ0WGtQZnI4U1RzcGZDdGF4ajdpdVUzM2k0WUo0K3Z5MzRQUjVYWDNjWERGQXU2Um5Cd0J5TUEzbExkQmR1VzFBQTI0VkFmdVFwaDJvc1QxWmh2S0MwTytra3U2ZFRTbUpINnBuZE42RGVoWTNqWmNRVUp4NkZEbmcrWTZuejYvUzZmT2Z3OU83engrVXpNRmlwa04xRVZvVWcrYmVzd3p0V0NnQytJdCtoMmNuVmdWT3lpOHQwQUg2U1RMcFIyZkJpUjZnbnZha3lEVHQ3bHcvcFBuVnlRRHVjd2tic0wxUG1kZjJKN2ZwM2VmajZ2TnJrSG55VURPWkRxRTlKYVZuQitEbHlXVUo5RHRzbWxCSjB3N29KK0Z3VTBVQTFOaWVsSFF5OEtUcTUyZHVXKy83c2o1bCtwb1hjSTNIVHJoU2gzVDZmRjU5NG56c1g5WG5VN0RaYzY4K0x0akVBcTJSbmgzYXMxUUVBQytLay9LaUZ1aUM5eWdDTlhwOGZGd29CVjd4N0h4UkVrQU43Y2t5bExkQS8yRTBHcDI1ZStWS201RXZOL3oxVFhvdSsxTEg3Z3Zwc3dYcXFMMS9xVDd2VS9yMmY0ZnlEazUwVmhjZDJJQjJPR2tPN1U0NkFhOHFZSHRiR1JjUDNoWjIyZThzMEFHUWliaTQ3YjJSUUIzajhua29NQXVVTzFlMDZjRHViUWtuNTA5bGE2TEJmdWE2K3NUMW4vOVhmWDRMVHA5dmN4eHNZb0ZXbFBSTzg3SGJSUS9vL0FGZW5qZ3R3bE82cnBMTTNUbklYZ2s3ODcrNVRieXlENDN6K3lzbEFkUmtHc3JhaUJNRGZJSUs1ZHAwN3g3U0pvNis5ZG54SU50TkllMEFORHArclQ1WDZmVDV6K0VwQzROTm9NKzBrVTZiUS9OS09tbCs0bmJSQThzQ3JuSHNOdEh3WUhpaEZOakJMSlMxMGVqVWV4UWhleVZraExoM202aGhyRlZhSHdyazI1N0VmbWxhMmp5aUdwZVAzYjJ5cE5QTW05WityM3Y4cTg4THVNWkxkWW9XKzUzYjZoUDduZmpNL1Jwc0tsNFhUNXUvVlF6UXJKL2lBTGpxK0pRRXRDTnVVam5QL0JvTmhHbVNuYUxzT2xHSzQ1TTRVZnF6b011TzcxR2NleDBIOE1xeEl0U2h0RDRVeUhkY2ZsMk5jV09hOW90Q0xqa0dGZWJWWitMdUZkZHZiUndmOVRoRmVKdzdQcVRuTnZmN00vT1kwbUxmYzUvYThubmF0UEUrUFlmSEF5K2E5MEdtUTJqVVQrbHJUQVZ6cmppZ2xjRXdOS1dFRTNTQ0Fld3pTVnBVazZPWXB2MWRRWmNkSnk4VGR3K3lOQzdnR3AwMHA4NCsxRHdmcU1zMFBLMW5sQktzT0k4YmNQdVkwcnVQVXJyaHl5My95ZTlLcVhNeFVEZFRESFEwcmwybVp6Q21KMytiK3FTTGdSWkh6SEo0bGw3dkFEVGdLSDFkS2dwb2hRNk5KcjFSQitpaE9ERXZLY1hzdWZjb1FyYkdCVnpqd20yaVJ2b2pvQmFGcG1tLzh1N1hZa3dWUWZhT1V5WTQ2TG8vdXE0K01YRCtyK3J6V3hqbUs0blVSV2hRVVVIekhxZmlZVGdFREZFSFlMOEpVYW52VWJSQUJ4eGlxUWlvc1ErTjQ2NHZTZ0tvcVUyNUxxeE5XYVZwSjM4MmVibFBzRytmdEt3K1Y5Vm5YUDNmWDFML05KUlhRbnF2T1RSb0ZUUmZLQXBvcFVPUHdaL2NkOENkdVZNMFNOQ2NROXJPT0U3NVZOQWxXNkNEUEdXZnBqcWxIb1E2elJRQlVLTVlOQ3ZwVk4rRkF6aDVTL2ZuUkVrVTRWUjlJdE01MUtMNlRNTlRackZmcTgrM252L0tKekZGdXpzUHpaQ2VIZHFYZTlEdzJDMHExcmlBZ2F5Z09ZYytPKzhMbS9oY3BIZHRBZXpxUmhIUVFQOFo1L29mbFFSUVU1dFNZaGFvdVN4UVdac3FBdmNMNnVxanFzKzgrc1NBY2t6ZkhnOWY5UFgwdWZVbWFNaFBxNGwwTllDTURVanV3Ykt4VzBZUHhLRGhoV0pnZ0cya1lBQjFUTkQvVTlEMXhnVzZjVnBjQkRwVXlLa1lHOHRveWxWNE9oMXFjeXp3YXZGRVg5V3Z4a0RFdTBJdU9aNWluZ1dwcFhNY244WE5ESmRiMWc5bUF5dVNPRjc5a1BrMVhsYjNiU1k3RWdYMFZjdlU3cit2bnRscGVGcFBPdS9ScnpoeGw2RVpQNjM5NzBYSVA1QTNkc3ZvZ1VYdWcrQTRjUkhrb1FHQ0FieDIwbk5idFU4ZlEvNExDU3N4T0RFTEZ1Z0EvU1RkOXAvM1ZmOTVWVkQvQ2VRdmpuSGpLYmRTMG1xL3E5ckI2L1RhSi9JeDNmSjM4NkhkcitvWnZRMWxiSEtiQnE5L29heXg4RHlrUXcycGprMUQrWnRKejkxWmFNYlIydisyU0FQdGROUWxEUHE5RjZWTXVhZWNXN2hGMU5DR3hzbDVTV25hMzNudkcyU2hoSHBvUGthVFl0RDhRVEVBTlkzSlMwelRmdVhPWldmVDV1S0hGT1FhWXIyYUYzemZJUGM2dGt5di9odUhwM2VmMzVYOCsxaHJnbWFzQjgwWEJWeXZRQjU5SVUwMVRUak4vUG9XYmhFMW1SWjJ2ZDZqQ04zTHZRN0d4V0ZCY3hxVEZ1SUZqSUE2MjVVNHYvdFUwbnc1cHBWMjUvS1FnajJiTWhYTUIxdzBKZlRWeHluZE5SUTdMazd2UGgrSHArQjVxZXYwRTNjVDZuZjB3MkEzZHhhYzZZdUZJbUJndmtuNVQ0MFRuQmhZK2xqUUpjZkZJTHZ4b1Z1NWI3NDFOcVFOVHBzRGRadUZzazdxZlVqcGVlbmU5SVgrYXFoejNXWDE1V3NCbDJwK1MxL3FYQXllVDZyLytVc29MM2l1UDRNR0hQM3cvNTEraFhZc01yKytpVnRVbGdKT3NTN2NKV3FlMk14Q1dXbmE0d0tkakRuUW5iRitFbjJuMCtaQUkrM0syOEl1ZSs3T2RTdXRYMXh1K091YkZEZ2VzaEw2NmxPcG9lbFpmN1pJd2ZOL2gzSTJnMWxqZ2diOEdEUmZaSDY5NTI0WmZlbUlnMU1lREd1Z3RIQ0xhTUMwc0xaMDdwWkJaMDcway9BWHA4MkJXaFdZQmVwOE5CbzVKZHY5UE02Y2FYT2RpdVBDdThMdkk1UmEvNjVUMnZiZkNoZ3puN3BqVUw4ZmcrYlhpZ1JhczhqNDJzWnVEM1VQT3BVQ0RUeFhjWUZ1VnRBbG4xcWdnL1lWY0FyRys4eHBzKzkwMmh4b29tMkpZL0tTc2tERjZ4MjdjNTE1djJWTU5GYzgvM3RHYzNmcGRRZjB1Ris3U3YzRWw4em51dW9nMU96b2g4WWdMdFk4Wk40UVNEdEJYK1FjUk5UaGxpZm50dkdyMjBQREU1bVNYaTh6QzFKb2dUNnluREVoL2VTME9kQ0VhVUhYZWh4c0lPcEUyc3k0S1FQUVhBbDlOejU4VU8raE8zR3phZldKejNoODMzbXUyUi9HN2hUVTYyaERwNXl6TjI0YlBSb0FxMmNNNFo0SkJ0REdSTDJVeGYvajlBSGFNODc4K2hadUVXMXkyaHhvcUcwcExVMjdNWGwzYzdkTjVvcm51NzY2aFBLUVNhMW1vOUhvcXZvczBtZXNSTEtvajNHK0ZqZGlmMUVhMEg4bEJzMmR6aHJPSU9GNk5Vam84UUE0MS9SbDNvbFNucHdIMG9MbU5OMmVMa05aYWRvQjh3ZjlKRjJiRnpRdlBLcytzL1FadTNXUTliZzhqc20vS1FrMnRPZHhzLy9saHIvKzVuVTEvMURDQnJmajZyNU8zYXJhbmFlUFRZNzU5RytyVStlL2hyd09iVXpjSGFqWGMwSHpSZWJYN0FUc01BYlNzUk82V0JzazlOWGMzYVltNDB5djZ5WnRFSUdtSnpDbHBXa0gycFB6V0ZJL1NWZjk1akk4blFpOVNaK2NuOE5aOWZtUVBtTjNEN0kzVlFRYzhHd0lEajdmVjVmd3VqdW56ZXUxUGlhN1NLODBJSjk2T1E5UGdXcXZPb0tlT25xbTR0OW4zaUhyS0hvdTdUeWREZVRYdmM3NFBxaHJaUmxuZWwxenQ0WVdUVTFjZ01MR00wNlowNWw0SXJUNlROTG5OdE02SE9lR0YrNFdGTlcyeFBia055WEJNellGVngrTWlUWXFZVFBCcVRYRXdUOERRK3pueGtGbUZlaWxvdzEvN2wzTGREMklQaGxJSjdzTVpld2FKWCs1MWhrVFg5cHVVKzF5QjlaSnpRNWxteW9DS0hKY0xnc1UzNG12MmdpYjF5MnVaZDdaV0pjVzFaYzcvZldnblVxQm4yWGRqRzNXSkFpY1ErOXNDNXJuZWxMTHU1YjdQWWlPbXlLR0Z2RElkYkYwNG9rc3B0Nk1NNzIwcnlhK2REQnhtUWVia1lBeXhqTmYwMllmWUxPcElvQ2k2NjhzVUt4c1crdHprbmE3V1FIWGVKbngybFF2bm9HMFprNUdNZ21jbjdrVFVLK2pMUlUrNTdUUk91SCtpZ1BsNDRIOXpybHVVakVZSzBldWJlTGNyYUVqMDJDQkRuaVM4eUtDVSthd2ZkNGY2NjlOODFDb3RERnNwaVJJd2I2M0cvNzZXNjZ2Q01sc3pGakMvSGJxVmpVbVptbVFWUy9Qdm00Vk9POHFJNFQxZTZqWjBaYS9tMmQ4M1dPM3JwZUQ2TGdvY2puUXpqWEhSVk03MWNxUjQ3MjZxNTV0d1FDNmJGZE4yTUhZTXM0WmNuMTlpWGQzd3Nzc0RrUDU0M0pwMm9saXdIelRBUm1uekhlYjM4NzEyOFpGRGhKbVhVZmZCb2Mzb0JlT3RsVDJSY2ozblNrVHQ2Nlhydnp1V1JFMEwwZU9nK2E1MjBMSGs1WVlqSkttSFlZdDV6bURkM2ZDeTk0cUF1aUZhUkJJR0xwTndWU2JDSGRYd3BycHNYZHZOMXUrUWZhT2JLV01HVGFPUUE4Y0Zkb2hDK2IxVERXb21sUmZ6Z2Zlc2VhMisvcllrMW1NSE52RXVkdENCdUtFM1FJZERGZk9BVGVucW1ENy9IQnFQZ0w5SUUzNzROdnpiYS9hc0lsd3YzcFV3cVp3UWNObVhhWTZSWjcxZE41QlBWMHFlYWpYUzBIemVhYlhQWGJyZW1ldUNQSXJnN1NaZ2Z6bE5tRCtraVowMFBXRVJacDJHTFpjeHpFMzN0MEpMOUovUTcvRzVkSzBEOWUySUtwTmhQc3BvYnhPQlhVOUI4YXdyUjdlV0NweXFOZlJDNFBhdU5qOEpjY08ySzNyajNTSzRHVG81WkIybytYMlNvU3hKelQ3K3ZNbTVIY0taKzdPa0ZIYktrMDdETE4vUEF2NW5sTFZUOEwyK2h2bklPZEtBbnJIKzE2SDE1Ni9DWnN6LzN5emlYRHZ1ZTBpNVBzcTFYVk9temZydktwYlhtR1RiejI5VndlZ2JFYzcvRGRaN2w1eUFyWlhBMmc3NVBLdGIzYUg1aSszZTNTVEpuS1FrMmtvWTNFQnFMZmU1K2d1YlpRRU5yUFFDRDBrQzlRZ3hjRGVwazJNeGtPSG1SVndqWmRwdlpmbVdFdlB1NytMN1pzMUtDalUwUTZWUE1kM0xVZUNlZjN3UG5oWDNZK1RoZ2YxaklMdjBjd3RJY01KaXdVNkdKNUpwdGVsbjRRdDBpSzdQaHY2T3k2WEJXcFl0bTJDbWl1ZWc4UTY5RkQ0dmVmMVRxb3hrekxPVzF2enZudEZEZlU2eXF5UzcwTXdyM0FwN1o0Ty92c0paT3pvY3RvdEtDMWkvbkpxQysrY01pZmo5alUrbTUrVUJBeG1qSm5qNjV3ZW5ES0hGMjA3bFFqMHd6UkkwejZFOGRqWmx2SFlsN1QreGY3ejJsaHU4MExxT1lmWjliVUZNeWY2czY2cnNaN2VaZlM4QURzNjJyR1NMMEorcDgwbmJsL3hac0dDeUhPdWNwcEFwb2tPK1RyTHJFNUQ3djJPRkZuUWY3bSs0MDhhUlhpWlRkWFFjN0pBYWMrRFUrWkRHRlBHazlEcStXRjIzVkFTMTlSbmlpdHIxNG9BeW5PMHgzK2JXeU44WWpkVnVkSTc2UytWeE1ZSlpFNERZRUh6dk9WeWt1NmIwM01VMHI2YXVFUC81VmpQNzRLZ09idzBSendMZVdhSkFPb2ZsMHZUM3UvMlBLN1hidHJFS0VQZDYrdlBzcEQ2WSs3ZHZIY3B5eFo1dW1xaFBkQ2VRczJPOXF5QVRwdFRsNWtpZUxGVHplVzB1YUI1dmhQUm5OcEFwNElvZ2pUdDBQdStjUnp5RExyTnBDRUY0MG5nTzlNZ1RYdGZiWHZWaGsyRTlTaWhITTlsci9Rc0RGbmE0UEt0d1IraEQ0VUdITzM1Mzg4eXUvNkpXMWllYXNBVUI4L2VsYjI5VTczUHFMNnBaL25LNWQ3YzJObElZV0w3S2swNzlGT09RYmM3MlZqZ3hUbGlQSlVvRXhrTVNGcjNlS3NrQmpjZU15YXFwLzRzQ3BuVDJoRFh2SXZNRHRYd3ZVV0QzOXY3ektFQmV3WE5Nenh0cmtNb2t4MXd1OVczcTB3R3dLZGVoWkN0WE5yQW1WdEJZZTJyTk8zUVh6a3V2bXR2NEdVVzFXR1k0L0pGa0FXcVYxNTQxY1lYbVhkcU5TdmdHaSt0S1hvV0JtN1I0UGNXTkljR0hCM3diNllaWGYrcDkzWVVOM2lPaXlFblNtSm51U3dlVGR5S0xPV1E1dXFMVSthVUtEMjNINVVFOUdxYytUYkRjYVpzTExDYnFTS0F3Wm9GV2FENnhDbno5bHlITXRJejJ4alh2SmdLMzFncVQwM09CUVhOb1FGN0I4M1R1eGkrWlBRN1ROekdNcVNkaFRNbHNWZDlpd1BnRy9XTVorcFRESmdmZDN3WkR5WS9GTjdHeGo3cG01S0EzcGk2SmloeVhCdnJpWTNWTU53eHVTeFEvV25QNDdyZnBxdy9kellTTmxKMzVzYm9KRE9uK3JPdHAwMXREQk0waHdZY0hmanZZcEFrbDUxczNuOVVqdmpjSEN1R0lnZVhFN2NoT3ptMGZWZFNxNkdOQlhLUXNrOWRaSFpaSDlPR1kwQmZER3doVFh0dnhIV0tUZXQrWHRYWWpCTEs5Y1FwNkhiS09UallrcXNtNW9RUFZkOHBhQTROT0Nob25vSWtzMHgraDRuYm1MKzBrUGxCU1J4VTMyTEgyblVLWWU4MXowL1hiZCszZEVvWFNtOWpiNE0wN2RBSHVTMFE2U2RodDNsaUhOT2VLd2tnU05QZTkvSFlYUEUwTXA5ZFZsKytGbkNwVTNlcm5UcG8vVFpMVFFTM0Y0b1ZtbkhvU2ZQWUtjZWRiRG1ralQ1Tzd5OGsvOGtQaDd2S1lQS29ubVVpRFlDN1hseTBlNVhla0tZZGV0RXZUak83cktrN0Erb0tzTmVZWEpyMnNzZGo4UlZ5cHh2Kytxc3NkWTBxNGJUNWVYcEdhTlp4a05VaFIwMjBmd3ZGQ3MwNGV1Vy96eVZvSXBpWDk4QjVVbjI1VkJMRlR4NG43a1EydXI0WG43eUxqQjZhS2dJb1ZtNnZBUG9vVlI3c05FOGNteWNDNjZScEwzNDh0c2xjOFRSZWIrNEtmMGFvejZVTkN0bHBJbWgrclZpaEdhOEttbWVVMGxUUVBHOHpSZENMeWFONmxvOHU3OFdkT2sxUDIxaHAycUZjMDR5dVJWcDIySjNGYytDNWNYbHNHMlNCS2tqSytyTnBuZUt1dXFlQ084MHJZZng1S1hWNGE1dzJ6MHZkRzZydjBxc1pnQWE4OXFSNUxpbE5wV2pQZCtBOERkNVJWL2NnK0U0OUc3d3U3OE5VV2pYNktvMXBicFFFRkRmV1BNbmtjaDZDVFlhd2E5M044YlVLUUQ2MEQyV0o0NTlOV1gvbWlxY1YxMmtzbWpzYjVsNVFVMmJIODVUNWxmN1dkNkFoUnpWOW54d0dzeGFvOGpSVEJMVU9uTHBPMDY2ZWRTeHRYT2dxQmUxSGFka1pnTmpHUGlnR0tLSlBmSlBaV0hOcXh6L3NMTGZYS2dBWmtRV3F5RFo5azduaWFhWE8zQmRTMWxOM3F6WHFubnNMSEtDV29Ia2F6UDdXOGUveVZvcVh2RlQzWXhieU9mblRwNEh3b3NQSm82QjU5N3E2QjlMTk1wUTJkaGxzK0lKU3ZNOW9yUGxKNmxIWXUvNENiQnVYeHpHNU5PMlpTKzlPUHQzdzExOXRLR3hWQ1NtNVQxS21LTm9wYStPdC9ybExzVGlnSVhXZE5JK0QyZGd4ZDVuU05PNVNGOURMWjlBY056RG9tSnVkUEhaUjM2Um83MTRYNVMvZExFTnJZN3NlMHdCbGpUVnYwdnRYZ2QzcTd6UTRaUTdzWnFvSXN1ZVVlVDd6MkdYMTVhdDZ6WnFaUTRhOW8xMkZoaDNWL1AxaVVLWExsS1k2M1l3NjVXQWhwR2xkMVRmMXJDTWRMakJLTjhzUVRZTTA3V0NzK2JLN1lHTVpIRkovQVY0a1RYdmVVakJ1MHpqb1RoYWVUcFJ3MnZ3OFpTaWdlWEcrWkhOdjl5WTFmcSs1NG9SbTFSbzBUKzlQbVhUNCsraDA4eGcwajZzdjc1UkU0NVBIKzlETkl1MkZYWXFkbVhid002V2JaYWh0N0RKWTFJZGN4NXBubVl3MS84ckVrc1prd0c3MU40NW52Y0lMMkdkY0hzZmswclRuS2E1SmJkckVPRmM4bmRTWFJYamExSms3Z2R6MmZFaHI5WlRQS3krZ0JYV2ZOTS9oL2VZNjNlNWRLWUpXQjhOZDFMZXAwbTlYR3VDZXQveGp2MGszeThEYldHbmF3Vmh6bTRuM3ljSGVab29BT0VEWG1TMTVudFRzK3RwRFhUcVFNOGo1MDFDTjNVY294MUVUM3pRdE1uL1I2UTVQVmZhVDZzdUZrbWhQUi9WTklEV3Z5V2dUNHM3a2lXSUhhZG9oczdGbTdBL1BNN2lVWHdYTVllLzZHL3RVcDh5QnZja0NsV1diSGpQL25HNzRhNmNodTNWZHlCelcybUo3THRLYVBkMFkxL0E5dnFYRGMwRERqcHI2eGxVbGpoUGlydEluNlhTN1k4ZFRkODk4bS9YdHBCcHNlWDluZTVQUnVCRm8ydUtQbEc0Vy9oN1BMSVBzR3BCTGZ6Z09lU3lZeDRENTNCMkJ2YzBVQWZDS2Nia3NVSG5adHZicUZXL2QxcFc0bGxQQ1dOVTgyemhzS09wNG5iQ1lDN1RrcU9IdlB3bmRCTTdmTzIzZXZuUnk0RlJKZERZZ2p2V3R6ZmNXMlp6UzdrVGl1TTJmNS9RY2ZOZkd4a1dmcjBvQ09qZHZ1VDk4am9BNUhENVhkTW9jcUdOdUxBdFU5MjE2WEhQZGRKRGl3VmdwQ3lVRTJFN1MrSUIybkN2dlR0ckxjUTF6MkR2dEtyU24wYUI1Q3VSMU1hQ05EWkdBWHZzRDVwbVM2RTZxYjIyKzUrdGNhcC9XdE5tZS9ab0NoTUQzdWhqUEFIK1BOWE5JeXk1Z0RvY3pWd1JlVFpyMmJNUzFwMDFCSUdPbGZPcEtDUnUvcCs1V3UrTXhCdzFiTjZuaGU0aHpRWXVhUG1rZTBtbkYyRGkwdmREc3RIbkw1UjJjSE1oaFVOeDJmVE5aYlZqTHAzSStDUWJBeHZiMTNvUWVPdXNMWXpxNzN6dStEQUZ6S0dNOEMvUi9YQzVOZS9lMkJYQ2tFTTVIQ2ZmaVBJMzFhY2RKRUlCdDIrU1YvLzdHNFNabzExRWJQeVFGOHRwKy8zSGM4VGh6aTV1WE5pZm9jUE9aUU42MmVEK2NObTllVyszWWwrclpVWTloZS9zcVRUdDBNODdzZXBGQXdCektHTThDd3pFTnNrQjFOVGFMQWM1TnIyYThTU2VjeVdQK3VnanR2c2J4VU5haVdpNXZCdzFiTlRHT2hySWN0ZldEVWtmOWE4dS8zN3YwM2dpYUZYY3VIaXVHckFiRzh4YnJtODY3dWNsb1d4a2NZc0I4cXNSaEo3R3VXS0NEOWx5SDdrNm94cnIrYndGemVOVjRkaHFjTWdkcWxnS3pBbTNkMkZidXhrejVtUlZ3alplQ3VQL1FaRGFOdUlZdkkwUTc0K0N6VjQ2RHY2U1lHdENpb3paL1dNdUJQQU8yZGhyL2NSemNLSWtzSjVGdDFiZDQydnl0RXErOWJyMXBhWElqWUE3N3RhM1N0RU43ZldGY3pPbnFQZVl4WUQ2UkNnOWViYVlJZ0liRzVmTWdDMVRiWTdPNFRyRnAvZWZCUnNNc1hZY3lObjNiQk5PdVMybnhXekY5NVh4VXZZQU9ITFg5QXpzSW5Bdm9OY3VBT1A5SlpCdjF6UTdGK3MxQzh4a2NCTXpoc0xZMUxqeDhVaExRbkhRNjlWMUhQLzViOVJtblY5NEFyNnZIVHBrRFRZcnRqQ3hRN1lucnE1dldLZWFLSjh1NTYzMGg5MmJxYnJYT1dtN2V6L1VzMVYrZ1pVZGQvTkFPQXVkemFWN3FsOTVsZmE0a3NoOGd0MUhmVHFybllhYTBhNnRiY2JkbjA0RUNBWE40bmRqbTNTa0dhS1FmalAzVDU0NSsvSmZ3ZE1MY0FnVzhyaDdIK2JmRldLQlJza0MxYnR1cFIyMSt2a3E0TnlkcERrQjd6dFBhUHMzTmFRODlESFZUOVcvYVZPaklVVmMvT0FYeS9oM2EyUkVhRzZpNTIxMDdaVnJPUkRMZXE2WUQ1eCtrOWltbWJnbVl3K3ZiVlF0MDBJQ1VJYXFyZ1BsdnNYOFVNSWRhdkEvTlowMENXR1dCa3FhOStURmFYTzg1M2ZEWE4razk4K1JaUjVhRjFCSHo2L2JORlVGalpnZit1eGdya3pVWk9uVFU1UTlQQTl0SmFDZHdmbUhIV3EyRDVWaVdVdTJWTlVpT0E2R21ONm9ZYkwyK2JzMjJURVRySUdBTzliV3JpeUJOTzlUWkI1NTFOSmFJV1NOK3Rwc2ZhcXZMNCtBZGpFQzc0aHhYbXZibXkzaVR1ZUxKWGduajNIT0hjVm9YVC9nYnM5VS9Gbzd0NWFGeEU1dTRvV05IWFY5QWVsZmdKTFNUNHZSSzUxdEx3eS9WWHFGYTJLaHlLazM3cStwV2JKOCtOUGdqZmhVd2g5ck5nalR0VUVjZkdQdW4vNFQyVDZiR1V6ZG4zbDhPdGZlTlRwa0RyWkVGcWhXYnl2Y2hIZElnN3pxeUtHVGVLb0Rid2JqTmEyMGJHUXNmNGxOYXV3YzZkSlREUmFSRnFoZ3MrdGJ3ai9vclRidU9vSmFHM3lKSXVRUGwxVWFWcHVyYkIrL0UyVjlxbDVvY0dQMXFJZ3VOdEtrVzZPRDFmV0NzUTIyblpJOGJDR002OXJkMjhrT3Q5VG5PNnkrVkJOREJ1RHpPcDc4b2ljYkdhcHZXQVFWNHlqRXI0Qm92cmR1M0x0WnRteFhxYXk5aldSNXl5dnhiMVkrNUQ1Q0JvMXd1SkMxV1RWb1k0TWEweDNPMy9sVUQ1WGRLb3ZqSjVDcHdmdFBRajdnMnlOM2JQRFR6eW9NWUZQaFp3QndhYlZNWFFacDJPSFJzT1F2dEI4emorT2RNT25ab2hIb0ZkQ2tHSEdTQnF0OVV1OThMY1lQRFF5SDFtSFo5U0svWDRYVnoyMWlHc3dQK2FleTNKa29ROG5DVTA4WEV3SGxLSGZ4Ynd6OHF2dDk4N3ZidjNmREhlL05aU2ZSRHFtK3hRMjVpbzByY3BiZ1FPTis1YnNWSjVrVUQzenBtRTVCeUZ0b3hDODFueklFKzlYMXYwbmo4UTRzL2RuVzZmRko5bHU0Q05ESmZQRmNTUUZka2dXcWtiUjl2YWR1L1dXOG9ybjdNQzdoVWRiZ2JEa0M5WHF4ZisyYm5qWE5VMmM4Z0kwYzVYbFE2OWZGTGFIYjMyMldhMUxQYklEbVdsWUI1UHdmTjhkNysyc0MzbHRWaDk3clZSUGFHdUJsQ1VBRGFhMHN0ME1IdWZWOU0zN3dJN2Fad2p1OHVIenRkRG8zVjY3aklxbjRCT1l6TDR4aERGcWo2YkR2MXE5MHZUd24zN01TYWZTZmlPcTREVUllUGhXZmhzTTJqRTV1UElDOUh1VjVZR3VTT1EzUHBvNlBQT3VHZEd2MDRvQkl3Ny9la2NsNTkrVG5VbjhaTVZvZnRkV3ZhVU4yS3AraW1kaWxDNjIxcG5PaDhWQkx3WXQ4WHgvbW5MZjNJbUFIaUYrOHVoOGJOd3Y0bmF3Q2FiSk9rYWEvSGRNT2Z4NE5PM21kZTNweDFHWjQyazViNjNORXNnZlBENXJodncyRVoxSDRWTUlmOEhPVjhjV3ZwbzV0Y2dCWTQzOXpncjlKbWVvZjVNQWJPc1pNK2EyRHdmQ2x3L216OWl1MU8zUUh6dUNqd3MxTjAwR2xiT2d2U3RNT21jZVYxNnZ2YUNLekZoZHk0Q0hHV051TUN6ZFh2TTNOR0lMTXh1U3hROWJUdjB5M2p0bXNiRW90VndwclJlUnBmREZXWGRTc0d6cGNETC85OXg4SHpBLzdwcitrUUc1Q1pveEl1TWkxQU4zRUtkdVZ6U3FIQjN3MytPTFNmTnBNTUpwYnhKRmIxUDM4TDliNGVRZUQ4bnhQUHVnUG1jYk9EOTVkREhxYUtBUDdSN3kycnowVUxQeTZPWCtLRzI3RkZDR2lOdWdaa1I1cjJ4dWMxTnV1WFhUZEt5TVR3ZnNDM3FldTF2YmhaWnVHZzRZdnozTlZyeC9iZEZDNWdEaGs3S3VWQzEwN0JOalhnL1NDbzk3OEcvMjNxbkUrVnhtQUgwSEh5TXduMW5wYU1nZlByb2FmNHFYNy9PT2l2TTJBZWd3UC9sbllXc2h1elNOT09NZVZvTktrK2k5RE82ZkwxWVBsTW53aXQxZk9aZVNPUXNkaEdTZE4rV1BzK0RwdmZ6L3ZOaHYxZTFJM2NYVW9UM3FrNGYvdHNMWGRqRzNsSXdIeVZEVzJ1QkNGZlJ5VmRiRG9GR3dOT3Z6UTA2STJkOFcwYUdBNnhzVitsemZ4anh3WS9ua2Irb2hyMVU1d0F4WlNtb2Q3QVR6eGh0aGh3SFl1RG90OXIvSlkzNGVsMHVmZUlRWDV0YUZ5RWtLYWRvUzRnakZPZjkyZll2TmhhRjhGeTZLNnV4N25DQnlVQlpEd21qK09DdDByaUlOdE8rVHBsWHI3clVHK0d5UzZlUTE0dnhsZGVlazFuWE11OVRZZnNDSzhLbUU4RXpDRi9SeVZlZEVvalUzY3diK1YwaUIxQituMlhZYmUwbWF1VHJWZlZaeHFlTmpFSURQUjNramtMVDY5SCtLYU9IVnkvWXZBZzdzS3U2M1VIcTUySmNiQzE5SlJDdHFhS2dJR05KMWZCOHYrRzVsL3hJMWdPM1pzckFpQjNza0RWUHBlSll6QWI5OHV2Ri9lRjlPUG0xQTNPcGFybllKeGUwL2xTRzNsU2ZmNUlwODdIQTUvenhtZHlFZllMbU1jMTlZa01IVkNHbzFJdlBKMDZuMVgvODEvaDZiUmxuWTVUUjNEVjkvUWphWEV6TnZTN25pNWZOZkxYYS9kaWtVNGsxLzBlYkRLYVpOWjhqMWQxYkQ2QU9oWjN4ZGI1dW9PWTNjRjdXcUdRdGpPMW05RDNoWU5KaThIeWVCb2liaHg3STFnT25kYjdXWkNXSFNoblhCN2JMSWM5ZG0vanAySHpHdUcxOFZkdmxKQXg0TVI3dFdzWDF4WFBVcnU0M2tiR1EzRXZyZm11VHAzUGhwYXlQV1hvalhWbTMxZVB4YmlWZ0RrVTVLajBYeUNlc295bkxhdi8rZTlRZjhyMmQ5Vm4yY2ZPT1RYMDgvQzB1TGxyMnN3djJ4cjU5QjdzY1pDeXZjOFR6WGlQejJxOHg1ZWhwNmZPMXphay9CN3FlWTlybk9EL0VyTTdtS0JDY2UzbWpaS2dwMlBKOTlWbkdaN1NzRGNkTFArUytrRWJ4NkQ3K2k4dE8xQ2lxU0tvcGF5TXcvb3pWNDNqK0svcTdtRGNoTC9YRlpmUFBBK0w4TFN1LzlJemNaekdnY3VoYkdoWVM4ZiticzkvK2pGbENiV09Dd1U1NnNzdkVrOCt4MFcwOEpST3BNN1R6ckVqK0J5RFgvRVVUUThhK1RmcFZFRHNISGRkM0Z5bFkzOHhXSmN5QU1RT1U4cjJIZytxMSs1eEhZR2dWWXFmUHRXeEdDVGJaMFBLUy9YdnQzalNQdzFnZ2ZKTWcwd3M5R094SVBaeDA1aVdyL3EvL3hlZU5vYWROUGdqNDFneVptdjRmMmtjcWgrRUROcUJJQzB2VUNCcDJuZHU1OGRoODFyR25mRlk3NVJ3MnZ3OEJTMDV6UG9ySGhjdnRKUDNLVjM3djhQTGF4aXJtTWt5YmFidTNjbnp0VFhlLzRUOU1pekZzdnRsL1RRL1VJNmp2djFDcVRFYWgvcUQ1M0hBK0dlcGdiMjFkMHpHQmM0UFlmZVRyM0YzMlhnOUhmdU85MEhLOXY1UE9CY3B5OE92b1o0c0Q2czZOaTl4TVB6RGhwUjNOWHpMOVhlMVhubmlvT2oyTXJZTEprdVV1bEF3U2VuM0Zta2NHZFBSWFRUNEkrT1k0bFAxK1RsdEdMdXlNeCt5RXVlVUo0b0JLSFJjSHNma0RuaHM5MzdMMzFtYjZGK2RXSVQ2TTdlMi9WeXkyV3BkY2I3bmN4SGpBT093VzZiUk9DNk1tNm1YNlZXMzR4N01nVit6eHJ1S3BTdzhmbENtb3o3K1VtdnZPeCtIWm9QbjB3SWErR2xhNU56M0haTnh3QlJQbDc5OXpVS2xsTzJER0dEUFU1YUh1b0xuOFRuOVR3bDFMTld6c3dNM3BHenp2L2NMQ1JSQWI5cEthZG9wWVhFZ2JySjh1d3FTVjUvSDhKUjYvVU9vSjN2S3RuSG5LbEFlRnhqZWUrY2JaTmxHeERuMmhaSUFDamRWQkFlWHoxeng5TktzZ0d1OEhObzd0RjhwQm03LzlacDF4Uit5eWU2eWxoSFhRMk9BK2Irck5kM1M3dGtQd2ZKOTEzaHJpYVVBM1R2cTh5L1hRdkE4cGlDNXorMWtiRnJzbktjRy9uUFlmNUV6bHRYWnZxZkxkK3hrN2VqdGIzMnJPM2krWHNldU1xdGo0NVI2S0M3b3h4UTlkYjNIOVVzYTFENzdmaUdnZU5NZyt3cmQ5bCtUdGM4c2ZhN1hBdVJ4aytVZm9ma2dlVWhqd2pqbUZDaUhNdHFQYWZBZWM2QUgwbmpqTnlXeHNhM2ZGQ1Q2SWhEVVc5ZUZ6Rk9kTm45WlhJLzlKUVZ1bHpXMW1ZZGtHdjFyVFRjOG5UNlBjWk8zbWJkOVoydXhsRU1PUk1VTjRMWEZVb0NPMjRTcU1nOXhBRGdMemFTVWl4M0hJZzAyRm0wTkpsUGFrOWo1eEE3c05Udi9ZOEJ1MW5Td0xnWWIwejNZdVFPcXJtbWt1cXByYVJCL25lclpvcTNBY3RvWmViWld6MDVyL3AzaUNkUzVRSG5yeitnaU5COFVhdHRINzB6Sy9ybUxmZUR2K3J0bnl5YTJyMzk2U25wck5VNXV0UTlIZmFSM2ZwSHVVbnZqV2FXRitlQk5DaEtaeXpiTWV0L085L3hSS1F6bk9VeW5uZmZackJqWEZtZHR2TjR4cmZmR24zTklwczJ2YVQ1NDNmVjhNQjNPaXI5TFhPczlkTzA2bnNCMzhFbTd5b0gxSjlleDFrOEQ3QVRuMVpkNW1wakZodkd5eG05L2tyN2ZaYXA0OFFUTjdmcm50WUgwRkNDUG4zajlaK25yYTlOQjM2U09kZEhTUGJoS3U3ZXVhaTUvOHF4cmNmRHh2cVlKM2ZFUGRlenVoenAyLzlybk9BMmEzcVM2TlU3MTdMU0JJcm9MZndmTDdkYUc0YlNOVjJrTUlyMHRmYmNlSkw5MWlod0F5TXcwUEswakhDc0tvR0R4RU56N3R0WVc0M3B2ekZZV25vTE5zN0Jmd1BraWZYNWZXOU5kelJjWFRWNTNXdStkckgxZTAvYTNHa3NCMnZYVFVIL3gxS2d0MG9tdk9GQitIK28vZlg2YVBwZHJEZlNxWVEycFkxanYwTzdUbjQzVEoxcWRjSTNxM2tYYVdRT2ZPdkxwV3ZEOFZIWHNiVjJMQTZucnRPRmpWZC9xbXBTZXBNL0ZEM1VzaW9PdjVSN2ZxNjFkMm5GWDVWektIaGkwYVdxZkxORFJGdzloYmNFalBDMTZMQlVMQUpDck9GWkpwemwvVnhwQVpuWUpnTWQxL1U1ZWNaWFc5ZWZoNmJEVU5CeVdhZlM3TmQyMG5oc1BJQzdUbkhLNSt1dzZ0MXc3YkxpS3A2eitmMTFydm9MbE1BQS9EYjBBVWlNZmc3WlhOYVhsMk1YNUQxL2Ixa29hOWgzTFAzWXlaNGVrYktlOENXbDRDcHEvVHdPcXQ2SFprNVluRGRmamZYeExnOGxyUVFRZ2pqMVNPL2lIMHFBd3ErRDRNbjNpT081V3hoUUFvTkJ4K1ZYS2puZXVOSUNNYkF1RXgwTkM3M001alBORFZ0KzQ3dnVhdGQ3VkFjVHZ2c2NMQjZSaVBLZkplTUxxVmFFemE3b3dERDhwZ3U4YStkdndkMUN2clFCNlcyS25FanV4cXh3WE5xVnNIMXhkV3cybzNxUTYxblFBdmFzNkZ3ZFZjeWxwZ1dmYXdaaUI0MnVRcHAzOCtxN1ZRc0FpZmEzbDlTY0FBSm1hQm1uYWdmekY0TzFmQi84eVhkdVA4OFZGT3UyOWVsVm4zVEdWTmc5SWZVdmxmVzJUT0F6THFLcjBTdUdsUXZxN3NaK0VzaGEzVnp1aDVpVXRkS2FkYWQrbGJLK3VmK1JKN0gwOVd3K2dUd3Fkc0s1T2xDOEV5b3Q0NXFiaDcxZGg5TVZDWUt1NGRtKzUzdDROdWI5TDQ2MnBKNk5SUDc0YTZLOC9zd2lBK2toQjVrNzVhRzg4cXpUd0hNYmd6bnFhOXB2cS9rM01aWnRYbGZQTUU3alRQVmRPQTNvTzA5cjRuMnQvbEUzVzJEMS9qOUlPSmNvVXFsMmxQY3Qwc0RLL1owUFEvT0NPSzM3T1FuN0J2WGhDYUpFYTkrc2VsUE5xOExMdzVBMjJuc1ZQcnFuU3ZxWDY5dGRIMEFFNG9LMkxrOGMvMXZvN204UUFBS0Q5Y1htYzE2L1dIcklPbWdPOWI0OVc3K1NPN3Z0d01DY0YwRmVIcFU0enVheDQ0SEFSL282bExEMTlnS0I1UFkzK09IVmtxeUI2L1A5dDdaNWFiOXlkYnFYUDlXeFZ2MVoxcmUwQlZ0eVFjcHMrc2I0NW1RZlUxYjdGVFc1L1piSVJOQWNBZ0U3RzVPdFpvQVROQVpwdGJ5Zmg3M1hldGc1THhjTlAvMXZiRlVjQm5tMmpCTTBiN1FCaXc3KytNMncxNEk1L3RtL0FiL1dPeWRWbkVaNVNHQ3lWTkFPdVkyZXBQazErcUdQamNOakdsWnYwZFZYUHZNY1ZhR3ZDR051Y1kwRnpBQURvYkZ5K3lnSWxhQTdRYnZzYjEzakg0ZS9EVW0vQ1lldTdxN1hkMWF2SjR0ZWxBRG13YzNza2FKNVZ4L0JtL2M4RTZxQzIralVPLzN6ZjE3MEJFNUJiTzZYdkJ3Q0FUc2ZsazJDOUFDRFg5bm1kQTRWQS9XMk5vRGtBQUFBQUFBQUFRM1drQ0FBQUFBQUFBQUFZS2tGekFBQUFBQUFBQUFaTDBCd0FBQUFBQUFDQXdSSTBCd0FBQUFBQUFHQ3dCTTBCQUFBQUFBQUFHQ3hCY3dBQUFBQUFBQUFHUzlBY0FBQUFBQUFBZ01FU05BY0FBQUFBQUFCZ3NBVE5BUUFBQUFBQUFCZ3NRWE1BQUFBQUFBQUFCa3ZRSEFBQTRQK3pkOGZYVVJ2dEhvQ2xjL0kvM0FxOHFRQlRBWnNLY0NyQVZJQ3BnS1dDUUFWZVZ4QlRBZXNLWWlxSVhjRTFGZmpxL1R6TDNjOWdzSzJSTkpLZTV4d2RReEpyUnpNallmS2JlUVVBQUFEQWJBbk5BUUFBQUFBQUFKZ3RvVGtBQUFBQUFBQUFzeVUwQndBQUFBQUFBR0MyaE9ZQUFBQUFBQUFBekpiUUhBQUFBQUFBQUlEWkVwb0RBQUFBQUFBQU1GdENjd0FBQUFBQUFBQm1TMmdPQUFBQUFBQUF3R3dKelFFQUFBQUFBQUNZTGFFNUFBQUFBQUFBQUxNbE5BY0FBQUFBQUFCZ3RvVG1BQUFBQUFBQUFNeVcwQndBQUFBQUFBQ0EyUkthQXdBQUFBQUFBREJiUW5NQUFBQUFBQUFBWmt0b0RnQUFBQUFBQU1Cc0NjMEJBQUFBQUFBQW1DMmhPUUFBQUFBQUFBQ3pKVFFIQUFBQUFBQUFZTGFFNWdBQUFBQUFBQURNbHRBY0FBQUFBQUFBZ05rU21nTUFBQUFBQUFBd1cwSnpBQUFBQUFBQUFHWkxhQTRBQUFBQUFBREFiQW5OQVFBQUFBQUFBSmd0b1RrQUFBQUFBQUFBc3lVMEJ3QUFBQUFBQUdDMmhPWUFBQUFBQUFBQXpKYlFIQUFBQUFBQUFJRFpFcG9EQUFBQUFBQUFNRnRDY3dBQUFBQUFBQUJtUzJnT0FBQUFBQUFBd0d3SnpRRUFBQUFBQUFDWUxhRTVBQUFBQUFBQUFMTWxOQWNBQUFBQUFBQmd0b1RtQUFBQUFBQUFBTXlXMEJ3QUFBQUFBQUNBMlJLYUF3QUFBQUFBQURCYlFuTUFBQUFBQUFBQVprdG9EZ0FBQUFBQUFNQnNDYzBCQUFBQUFBQUFtQzJoT1FBQUFBQUFBQUN6SlRRSEFBQUFBQUFBWUxhRTVnQUFBQUFBQUFETWx0QWNBQUFBQUFBQWdOa1NtZ01BQUFBQUFBQXdXNy9wQWdBQWdJZXA2M3EvK1JMSG9qbVc2UisvK01XM1hUYkh4YzZ4YVk3ejYrdnJLejM2NFA1ZnBQN2ZIay92MGYvaExIM2RwREdJL2ovWG4vVnlaejV2Ky9PWitRd0FBTUJzL203Yy9JVldMd0FBUUdrL3FOZjFwcnBmQ0pqVDErYllEUkN2MHU4dnFwbUhpODE0UkloNGtJNWxjenpKZVBvdjFVM2d1R242K05Uc3Y3UC9senY5djVkNTNwK21NVGlkUStpYkZoMXMrL0psNXROdjUvTzY1R2RHeTJmcysrYmFWZ08wT1JZMC9ET21OcmVjbzRzMFIrUCszOS81MS9kWjFORzFzNlkvbDU3T0FBQXdIWGFhQXdBQVd4RUUzdzZSdmdWcWRWMUh1TGlwYmdMR3VZU0xFU3dlVnZtRHhWM1AwdkVtOWZHNk9UNDAvWHN4OXdtWmRrQkgveDlVZVJjcTNKNzNyOUp4M0h6bVNYVVQrRzRtMkovUmwwZFZ0NEhqN255K1RQTjViVDVuc1o3Qjg3YUxoVEVBQUFDLzVKM21BQURBZlVXNEdPSHhjWFA4YjEzWHB5blVuSlRZMWR3Y3ErYTRhSDc3ZDlWdFlQNmpQbjdUSFAvR1R0Z3A5dTg5eCtDd09XS1g4dWZxSnN4KzB1UEh4K2Q5bmtyLzc4em5xM1R2OXJsRE40TFBkMmsrcjlQdVlSNDNqcXRxK04zVlhWelhJczJOcS9TOGZWVUp6QUVBZ0FFSXpRRUFnTWVLTVBuemxNTGQ1anBpRis1RmRSUDBEUjNjdkpoYS85NmovNWRwc1VMZjRlNnYrbjkvcFAyNTJwblBUd1p1VG9TaC82WUEvNm5INTRQR2NUK040WlN1YVpGSzVQOWI5Yjh3QmdBQTREdENjd0FBb0sxdHVIZzYxakJzSjZ6OXF5b3Z2Tm4yNzNxcVlXTUswS0xzZit3czN5dXcvLzlKQWZUWTV2TzdBdWR6dE9sOHJsVVVIbWs5c2ZzOTdxVi9xOGUvVXg0QUFDQTdvVGtBQUpCTDdEeS9HRk1ZbGtwWGY2aktER3R2ZTVYNjkyQktreWE5Wi91ODZyY00vbU84aTVMeEpaY1lIOUY4anJaOVRtM2w1Mk82cWlaU2xqMHRqb2w3L1oyUkJRQUFTaU0wQndBQWNvcGRyWjlURUZxMFZQSjRVOTI4UTN4TS9mdDM3RG9mKzBSSkFXOWN4M0UxbnRMTUVWNmVsN2h3WWFUeitVM3BDeEVLR05OM0U3cVc4MnFDNzJVSEFBQ21RV2dPQUFCMDRiams0RHkxYlZPTk44QjVsY0xHc1piRGY1cjYvOVVJbTc5ZHVIQlVVSDh1Unp5ZnR3c1I5aXR1VzAvaEluWVdkSGh2T1FBQVVDeWhPUUFBMEpVaWcvUFVwakh0YnI1TGhJMmJzWVdOT3dIYTJIZWMvbFhDanY4MG56K1BmRDQvU1hQNXNHSTdycXNKM0NOVnFpS3dxUVRtQUFCQTRZVG1BQUJBbDQ1TENuVjNBdk9wR0ZWd1BxSEFmT3ZWa01INXhPYnprNnJ3Q2hVOTN5ZFRlZS8zYVNVd0J3QUFSa0JvRGdBQWRPMjBoRExpRXd6TXQ3YTdkQmNsTnpMTmdYVTF2UUR0MVJCQjc0VG44L0ZZWHp1UTBYb0tGekdWM2ZJQUFNQThDTTBCQUlDdTdUWEhhc2dHVERoZzNJb2crclRVc0hIbkhlWlRETkJPcnErdjF6MzNaK3hFL2pEUnVmeTY2YytydVQ0c203SDlVRTJuTFB1N0NnQUFZQ1NFNWdBQVFCL2VETFVUT2dXTXh6UG80d2phVGd0dDJ5U0N3Qi80MGh4SFBjL243UUtFS1phOGZ0djNBb1NTTkdPN2pHZmxSQzVuNVk4OUFBQmdUSDdUQlFBQVFFOVd6WEhZNXdmdUJJeGR1MnlPODNSVTZXdnNsbDJtM3krYUk4TDdyb1BqRjFFUytmcjZlbFhLb0RmdGlWRDVWY2NmOHpYMStYYXNMOUlSZmI3ZGZiOU00N0NYY2N5WEEreUs3dU1kMGJmbjgyYW5ENnZVcC92cHlOV1cyTEUvMWQzejkzMVdyU2R5TFlzZTdua0FBSUNzaE9ZQUFEQk5menp5KzViVlRiQVlYL2N5dHluZS9YelVjOGk0cnJvTEdNL1MrVGZOTlYzYzhkOXNkbitUZ3JHRGRMenNxRjN2bXMrSk5tMkdub1FwUEZ0MWRQcXZxZi9YemJXZTM2Zi9kOW9VOC91d09WNjArT3lEdmdQenRBRGhSVWVuLzVMNjgvUys4em0xYVQvMTVVR0xaOFpaODVtSE0zOW1yenA0NWc3bG9NTm5ic3pCdU8vT001enZzeDhWQUFDQWIzKy9iZjVpcWhjQUFLQzBIOVRyZWxPMUNNZWFuL1ByREcxWVZEZEJUczRkZzIvNzJrM2E0WHZNVDZKZmZoSXNEdG0vVzVkTit4WmpuOGQzaU1ENktFY1o3eFpqOFB3blFYMVhmUmx0amMvTXZRamtMTTNuVFlZMlJsajYwR0Evd3ZybEFBc1Eyc3pOOXptck9hU3k3RjBIdU8vN3FrRFJYRS9NMDF4Vk5TN1RQWHFhZTQ0MDdXenpQOFJpb2NmU1R5c0FBREFkM21rT0FBRDhVSVRDYWZmbjc5Vk5zSmJEWVI5dFR6dTZjNGZ6RWU3OUVYM1NOakR2c0grMzlxSk0rNUR6SnkxYXlCMllmMnlPUmE3M1hqOXlERjczSFpnbmNjMDVBL05ZZlBCbkJIKzVxaEkwNXpsTlFlTHJkUDc3dEdHSUV2ZkZtRkpaOXAzcnlSV1lmNHpGUDNHL3ozbU9BQUFBL1JDYUF3QUFQNVdDeFdWMXM4TzZyV2NwVk9uYXFzb2JNRVo0czk5RnlmT2QvbjJiK2RSSFBmWDF6OFlnbDIzQTIwbDUvMXRqOExPdzkzMnV3UDRoMGs3a25Bc1FZZ0ZJek9mVGpwNFowVWVMNXZqMGl6RmRDa01uVlpZOUxET2RKeGFuSFBrVEdBQUE2SXZRSEFBQXVKZTBJL2RMaGxNdHUyeG5LbVA5SnVNcGV3bHZVdG42NTlYOWR1amVSeXdhK0RERVhFbTd6SE1GZ2R0dzliU25NVmplTWM5UCtpcHYvUU01UC9jazllZEZ4MzE1MVJ4UnJ2MzFIZi9KNFVBNzlvdVJGa084bWRobDdXYzR4OGNoRnFjQUFBRHpKalFIQUFBZTRpRERPZlk3YnVNcTQ3bGU5eG5lcEJCeFdlVUx6bDhOdE5zODF4aHNBL1B6QWNaZ3QxejdXVm8wMHJ2TXU4eFAwdXNGcm5yc3o3aC9iaThHZWQzSElvaVNUYTBzZThibis5Zk16M0FBQUlCN0Vab0RBQUQzbG5hbmZtcDVtczVDOHhSRXZjcDB1cmREN0hiY0NXMXo2YlhFY2NaZDVyMEg1anRqY0xYelNvTFlkWDR3NEcyWGEveSs5RDBYYnMzcC9kUUd1NGh2cktwcGxXWGZhcnRJeC92TEFRQ0FRUWpOQVFDQWgycTdRN1RMbmMrSG1jN3pLWlhxSGtRS0dWOFgxaWQ5Zjk1cTZQTGRhWGY1WU8vZFRxOGFlSm5oVkxFQTRXRElNREl0dUZsNlQvVmt5N0tYOHVjTEFBREFvd2pOQVFDQWg5cTAvUDR1US9NY2dkeGwxWC9RL0oyMEcvZFRobFB0MVhYZHkwN3BGUExtS0NWK051U2loVnZqTU9TdTExempkdFQxTzh4SDBKZEZtSEJaOXExRnkrOC9yd0FBQUFZZ05BY0FBQjRrUS9qMnJJdDIxWFVkNVo5emxEcytLaWpjaTBVQU9kNXYzbGQ1OFZ5ZmMraE95OVlQWjhxaEYyVlZUYk1zKzFhcmE3T3dBZ0FBR0lyUUhBQUFtSXJERE9lSWdMR1k4c0JwZ1VLT0hkZGpDczFQU3RnVlBiUzBhei9IQXBPVlIwTXhZN3FzcGwrVy9ZdVJCZ0FBeGtob0RnQUFUTVV5d3prK0ZIaGQwYWEydTgyZnBNQ3VNNm5zZEk3UzdDdFRPZHQ4amtVZ0cxMDV2QXhsMmMvU1VUbzd4UUVBZ0ZFU21nTUFBSDI3ekgzQ0ZFaTEzWlY3V2RJdTg2MVVybmlkNFZUTGpwdTZuK0Vjbit3eXp6cGVhOTFZakZYMStOTGxzV2ptY0E2ZGxGNnpBUUFBMER1aE9RQUE4Q0FaZGl4ZmROQ3NIRUhMYWNIZHZpNmtqMzVtT2ZFeDZGdmI4ZnJxWGVaRlBUUGJsR1ZmaldneFNkdDJMczBZQUFCZ0NFSnpBQURnb1E0S2JOTXl3em5XcFhiNDlmWDFlZFYraDM3WG9mblVGeTcwclczbGhJMHVIRjZPc3V6Ti9mOWhSSmQ4MGZMN2o4d2FBQUJnQ0VKekFBRGczbElBZE5qeU5Kc09tcFpqVis1NTRkM2ZObERlNjdoOWk1YmZmNVpLMGJ2UDhyeC9mcU1uaTdDcTVsV1d2ZTI4MjJ2bXYrQWNBQURvbmRBY0FBQjRpRlZ6UEdsNWppN0M2YWNGdGltMzFtM01GTWJleGM3b2ljMFhXdDl2VVpWakxtWFovNk5wYjQ3N2VPWGQ1Z0FBUU4rRTVnQUF3TDNVZFgxWXRRdUF0cm9JODlvR0xKc1JETUhVUTlBTGQ5azN5N1lueUJSZTh2am41ZHpLc3UvNjFQTDdZMkhXSmkwNkFBQUE2SVhRSEFBQStLVVVtQjluT05XWGpuWk90dDM5WG54WjhFemw0eGNkelk5bGh0TmN1Tk95K2FvTEJyZHU4VndhWTFuMlhhY1p6aEY5OTNmemJGazN4OEowQWdBQXVpWTBCd0FBN2hTN0pac2pBcERqVEtkY0YzcXBjeWxsdlRDclowRnA5bUdmbTdGRCttV0xVNHl1TFB1dXB1M3huTSsxY09OVmMvd2JmdzdGdTg0N2ZzVUVBQUF3WTcvcEFnQUE0TFlVK215UEp4bFBmYXAzVzdsc2pyMHBYcGh5NGt6azJUbm5zdXk3NGhyZVpUemZ5M1JFSDV0b0FBQkFka0p6QUFDWW9McXVONC84MWdoOG5uWFVySk14NzU0c1JQVGZubTZBWXEycitaWmwzeFdoK1ZHVmQ5RVZBQUJBWjRUbUFBQXdUUzhLYk5QS3NFeHlYTE9JOXhaYlZNSEk1L0NzeTdMdmFxN2pxdW1QdythWGY1c1pBQURBR0hpbk9RQUEwSWVQaFlkQmk1bU13NVV4bUlXbnVxQmZ5ckovcjdtZWVCM0hKN01EQUFBWUE2RTVBQURRdFhnUDk2cndOaTVLNzhRVXlyVjEzbEh6emszem9qelRCYjFiVjhxeS8waGMxeGZUQXdBQUtKM1FIQUFBNk5wQmxPcnQrRFBhaGpMN0krakhZdHVZYVh5WGJwVnZMdHFlSU1yZDY4WitLTXYreTJkRDlNOVhNd1VBQUNpWjBCd0FBT2pTNit2cjZ6NTJJYmNOYmVjU21uYzVGbDluTUFaOXVTaGt2dkFMeXJML1dsb1FFUFBSam5NQUFLQllRbk1BQUtBckVaaXZlL3FzdG1IdzNnaDI1aTdibnFEakhmL25RMS9maEp5WE1GKzRsM2pHS2N2KzYyZlBSWnFUWjZZTUFBQlFJcUU1QUFEUWhUNEQ4NUFqWkR3b3ZFOWZ0dnorczhMSDRFbGQxM1pIVjk4V04zeWQrSHdlUFdYWkh6NnZtMlBaL1BKdHBWdzdBQUJRR0tFNUFBQ1FVd1FoejNzT3pFT08wUHl3MUU2dDYvcXdrRDZhN1JnTUlFZjFCSXNRdXJzbmxXVi9wSFRkTVRjL21Va0FBRUFwaE9ZQUFFQXVKODJ4Nk9rZDV2OGxmV2Jibll2UDZycGVGdHEzaHhuT3NlbTRqWnRDcm5NcWN2VG5rVzdzekxwU2xyM05NL3VpT1dLbi92UDBad2NBQU1DZ2hPWUFBRUJiVWZiN2ordnI2OE9PMzVuOUs1c001eWd1WkV4Qi9vdEMrdWRPcWN6MFpjdlRQTW0wcTM0S2NvelhRZG9SVFY3S3N1ZDdicHpIbngzTkwxL3JEUUFBWUVoQ2N3QUE0TEdpdEc2RTVjdm0yQlRRbnRNTTUzaFo0Rzd6Vlk2eDZtbEJ3NmFRNngyOWRFKzFyWjRRTzZIdE5zL3ZXWXZ2blcxWjlydWtoUjN1ZXdBQVlGQkNjd0FBNENHK05NZmI1dmc5U3VzV0VwWnZuV1k2VHpHQlZsM1hzYVAxUlVGOTA4Zm54THU0VjI2MWJQMzVydW5QaGE0c3d1ekxzdDhoN3ZjOTNRQUFBQXhKYUE0QUFOd2xTbTFINmZYM3pmRm5jL3pQOWZYMWZ1eVNMTEcwY05wSi9TbkRxWjZWRU5xbTNaZnJES2VLb082MHB6RTRyZHJ2amc1SHpmWHZsekN2Qmk1dm5tdmMxcVhjcHpNUDhKVmwvMzQrTEpzdmJ6S2M2a3ZUdC9WRERyMFBBQURzK2swWEFBREFKUDNSNG5zdlJoenNyS3QyN3hyZWl0MjU1eWtFSGtwODlwTWM1K241WGZNeEJtMURzTGp1ZFFScVBiZjl2NlNkL3RHT282WWQ2NzQvUCtaZjg5bXhlS1h0THR3WHNSQ2tPZDlxeUp1emFVUDA0VElXUkF3NXJnTlJsdjM3K1pCcllWQTQxS01BQUVBYlFuTUFBSmlnd3NxbTkzbmR1VUxHc0ExdHovdStqaFF1dnNoMHVsWFB6WTlnTU1mTzBXZnBYSWREektWbURPSnpqOU52ajV2Zlh3MjBpQ0w2NEs4TTU0bUZJQmREaFA4NzRlaDJRY3RtNkFVUlBWT1cvWTVuYktabjlmc2hudE1BQU1DMEtNOE9BQUJNelNyVGVXSzM4NmJ2TXVFcE1IK1Y2WFNmK3E0YWtEN3ZKTlBwWHFYK3FBWVlnK05iLzNnOVVNbjRhTXZYVE9jNlRvc0IrdXpMNkxOTjlkOFZJSjZsZSt0cE5RL0tzbjgvTHc2cVBGVkJ2Z3hkUVFFQUFKZ0dvVGtBQURBcGFTZnRaYWJUYllQenc2N2JIUUZpNXNBOEhBMDBES3VNNTRyZy9MU1BnRFVDM2lqTGY4Y1lETEtJSXUzR3psbld1N2ZnUEgzT3Byb0p5VytiUzNDdUxQc1BubldWc3V3QUFFQmhoT1lBQU1BVTVReUxJeXlOb1BGRFZ3SGZ6bTdjbklINXlWQzdXelB2TmcreEk3WFR3RHJlK1YzZEhmRHV6b1hOQUR2T0kzVDltdkY4TVovWEhjN25SU3gwcUc1MjZ6LzV5WCs2TGNFL1ZjcXkvOWo2Ri9QaXZwUmxCd0FBc2hHYUF3QUFrNVBlUFgyVytiVHhudTZMbkx0MFU3aTRibjc1VC9YenNQYWhJcXc3R25nWWpxcThRVy8wenorNUZ5L0VlTWE3dnB0ZnZxdnVGK1J0Zy9PblBjN25xdzdHODFVSDgvbHBXbndRUWVaOVMyOFBVb0svSjhxeS8rQitxNVJsQndBQUNpUTBCd0FBcHVxd3lodmFodTJ1OHdnYmp5TDBmc3hKVWhud2RmUExmNnU4dTh1L1hYc0tXZ2VUUG4vVndhbTNpeGMrdE9qL3AybjhMcXFiM2RCN2o1Z0hmUWZuTVYvT09welBoNCs5bmpTZlk4ZDQ5T2Q5Rngvc21tSndyaXo3OS9Nazd0Y2NmV0lIUHdBQWtQL3ZMTTFmNHZRQ0FBQ1U5b042WFcrYUx5OGUrLzNOei9tMVh2eTJxL0c0NDQvNTBoeXhzejEyMTE3Y0xoZWNnc2dvNTcxb2ptVTY5anBzejZlbURRZFRtY3YzN1A5Tk9pNStWSzY1YVVQMCtYWWNvbStlWmZ6c1pWOExGRkxvR05mM3BNdjVrejVqMjU4WFBjN25qODNuSFUxZ1hrYW91NTk3bDNuTE5yOGZlbWQyeGo1L20yTkJRdE9lTnY5RExCWkZMUDBwQ3dBQTB5RTBCd0NBRW45UUY1cm43TXQxMWMxdTdoTDFHdUxlcy84WFZmZEI3Mno2dktlRklFTjZuWGJWRi8yTS9ZVzNYZXd5SDNOb0hwVWRtaTkvWlRoVnRyQmFhQTRBQU94U25oMEFBSmk2Q0d1K3pPQTYvMU95dUtUQVBLVGR0Z2NUN3ZmWXRiN3VzVC9qczA0bTNKL0hPZCt6UGdCbDJXOUpDMmRXdVo1eGVoUUFBT2lDMEJ3QUFKaTBGQ0l2bStOeXdwY1pZZEx5UjZYSkN4bURUZlBsOVlUNy8yV2ZRVy9Ubi9GWlp4UHV6K1BIdnErK2dQdndzT0syZFpXbjBzUXFkOGw3QUFDQUxhRTVBQUF3ZVNrNGo5M09YeWQ2aVVlbEJ1WTdZN0J1dnJ5ZmFQK2Y5RkZTL0phWXoxT3RvUEI2cE9Hb1VQZVd1cTVYVlo0eStIYndBd0FBblJLYUF3QUFzNUJDNVdVMXJlQThydVhQQVFMYng0N0JxcHBlYWZHVHRQTzc3NzdjVmxDWVduRCtlaXp6K1JhaDdpMTFYZTgzWDk1bGVzNGQ2bEVBQUtCTFFuTUFBR0EyVW5DK3FLWVJORzVMc3ArT2JBd09xK21VYXY4NFJHQyswNWZiNFB4c0l2UDUrVWdEYzZIdWorVWFTenY0QVFDQXpnbk5BUUNBV2RrSkdqK04rRElpOU44dnZTVDdUOFpnWGQwRTUyUGU5Ujg3b285S21NL05FZk41ekR2NEw2dWJCU0RuSTIyL1VQZVdWSmI5V1laVDJjRVBBQUQwUW1nT0FBRE1UZ29hNDUzUWIwZlkvTmpkdkQvMmtDNEY1OHRxZkx2K2k5d1J2Yk9EZjJ3TEVXS1gvUDZJQTNPaDdpM0tzZ01BQUdNa05BY0FBR1lyaFYzUHEzR1V0NDdkdUgrVXNMczVZLzl2M3pQL2NTUk5qdW9FaTFJRDNoVGs3NDlrUGtjZytqWjJ5YWZxRDJNazFMMmxydXVuelpkY3I0eXdneDhBQU9pTjBCd0FBSmkxQ0VCVGVldFNkK2xHbTk0M2JZeXdkalBCL3I5S0N3RktYcndRQ3hiK2pPb0VwUWU4RVRJV1BwK3I2djkzbDQ5OWg3WlE5d2Q5MGh4N09lYUlIZndBQUVDZmhPWUFBQURWdDEyNmkrWjRYNVVSTm41TmJZbXdmRFdEL3Q5ZHZIQlpTTE8yWXhBQjc2bjUzRnFFNVgrazNlVVhJNSt5UXQxYjZycU8rL2ROcHZ2dVVJOENBQUI5RXBvREFBQWthZGR6N0I2TkVzTVIzZzd4dnUwSWpPTmQ2NHZVbHF1WmpjRTZkdFUzdi95ekdtN24rV1VhLzFHUHdYWStWemZoK2R0cXVNVUlVZForRzVadkpqQk5oYnEzcExMczYweW5zNE1mQUFEb25kQWNBQURnQjFKNEcrK0hqckxoOGM3dExnUDB5L1FaejFNWjlnOXpDOHQvMFArbmFlZjU3OVZONE52MUFvYmJZN0NleWhpazhQeERXb3p3UjNPY1ZOM3ZQajlMNC9aN0ttdS9tZEQwRk9wK0wzYmRLOHNPQUFDTVZ0MzhaVVF2QUFCQWFUK28xM1dFdFU4ZisvMVRmUGQxSWVPeWFMNHNtMk0vSFM4ZWVhb0lnTStiSThacEk0QjdjUC9Ic1dqUi8rRXNqY0g1WE1jZ1BXZVdPM1A2c2FGbkxEaTRTUE41MjU5WEk3ajJSejFqaDNxK3R2eHo0YUxMT1o1S3MrZHczdGZjYWRubVdJaHk3cWtNQUFEVDhYOENEQUNsWXdDdk9qZTE0QUFBQUFCSlJVNUVya0pnZ2c9PSIgZGF0YS1maWxlbmFtZT0iQ05SVVNTSUFfTE9HT1NfYmxhY2stMDIucG5nIiBzdHlsZT0id2lkdGg6IDMwNy42cHg7IGhlaWdodDogNjMuNzY4MXB4OyI+PC9kaXY+CjxwPjxicj48L3A+PHA+PGJyPjwvcD48cD7Ql9C00YDQsNCy0YHRgtCy0YPQudGC0LUsINC00L7RgNC+0LPQvtC5INGH0LjRgtCw0YLQtdC70YwhJm5ic3A7PC9wPjxwPjxicj48L3A+PGRpdj7QktCw0Ygg0LfQsNC60LDQtyDihJYgPHN0cm9uZz48dT57b3JkZXJOdW19PC91Pjwvc3Ryb25nPiDQuNC3INC80LDQs9Cw0LfQuNC90LAgPHN0cm9uZz48dT57c2hvcE5hbWV9PC91Pjwvc3Ryb25nPiZuYnNwO9Cx0YvQuyDRg9GB0L/QtdGI0L3QviDQvtGE0L7RgNC80LvQtdC9Ljxicj48YnI+IDxzdHJvbmc+0JDQtNGA0LXRgSDQtNC+0YHRgtCw0LLQutC4Ojwvc3Ryb25nPjxicj48YnI+PHNwYW4+e2RlbGl2ZXJ5QWRkcmVzc308L3NwYW4+PC9kaXY+PHA+PGJyPjxicj7QlNC70Y8g0L/RgNC+0YHQvNC+0YLRgNCwINC00LDQvdC90YvRhSDQt9Cw0LrQsNC30LA8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigzMiwgMzEsIDMwKTsgZm9udC1mYW1pbHk6ICZxdW90O1NlZ29lIFVJIFdlYiAoQ3lyaWxsaWMpJnF1b3Q7LCAmcXVvdDtTZWdvZSBVSSZxdW90OywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBSb2JvdG8sICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE1cHg7Ij4mbmJzcDs8L3NwYW4+0LLQvtGB0L/QvtC70YzQt9GD0LnRgtC10YHRjCZuYnNwOzxzdHJvbmc+PGEgaHJlZj0ie29yZGVyTGlua30iPtGN0YLQvtC5INGB0YHRi9C70LrQvtC5PC9hPjwvc3Ryb25nPi48L3A+",
            "reportsUseDemoData": false,
            "uid": "55c43dd7-1167-d151-92b4-3f59a47dbb2d",
            "useCustomDlvTariffLogin": true
        }
```

<div id="bkmrk-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%B8%D1%82"><div>изменение происходит если заполнен id.</div></div><div id="bkmrk-"></div><div id="bkmrk-3.-%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-litesett"><div>3. Удаление liteSettings. Метод **DELETE /api/lite/admin/settings/lite?id=333kcjnsd-3jkw393njk-33skdc88.** Удаляет liteSettingsиз базы.</div></div>

# /api/lite/admin/settings/warehouses - настройки склада

1\. Получения списка склада. Метода **GET /api/lite/admin/settings/warehouses.**

2\. Изменение склада реализовано одной операцией. Метод **POST /api/lite/admin/settings/warehouses.** В теле метода передаем json:

```
{
            "accumRegistryEnabled": false,
            "active": true,
            "address": {
                "building": "3",
                "city": "Москва",
                "cityFiasCode": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "country": "RU",
                "fullAddress": "Москва, Котляковская, д 1, стр 3",
                "fullApartment": "",
                "fullKorpusStroenie": "стр. 3",
                "fullStreetAddress": "Котляковская, д. 1, стр. 3",
                "house": "1",
                "region": "Москва",
                "regionFiasCode": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
                "street": "Котляковская",
                "uid": "03f7860c-9bc1-bd24-60d6-0590d61eeea3",
                "useSuggestions": true,
                "zip": "115201"
            },
            "children": [],
            "default": false,
            "defectedWarehouse": null,
            "isAccumRegistryEnabled": false,
            "isActive": true,
            "isDefault": false,
            "isGuaranteedAmount": true,
            "name": "GLOBAL_DELIVERY",
            "operatorType": "MANUAL",
            "packingControl": false,
            "uid": "7cc571a8-8b71-d5c4-4faf-deb08b9b01f5",
            "warehouseOrderType": "NON_ORDER",
            "warehouseServicesForTenantList": [],
            "whOperationType": "SORT_CENTER"
        }
```

<div id="bkmrk-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%B8%D1%82"><div>изменение происходит если заполнен id.</div></div><div id="bkmrk-"></div><div id="bkmrk-3.-%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BA"><div>3. Удаление настроек склада. Метод **DELETE /api/lite/admin/settings/warehouses?id=7cc571a8-8b71-d5c4-4faf-deb08b9b01f5.** Удаляет склад из базы.</div></div>

# /api/lite/admin/settings/stock-correction - коррекция остатков

Коррекция остатков реализована одной операцией. Метод **POST /api/lite/admin/settings/stock-correction.** В теле метода передаем json:

```
{
    "warehouseId": "2224427d-7524-9cf8-23b9-b4aab059678a",
    "lessItems": [
                {
            "afterCorrection": 994686,
            "available": 597,
            "diff": 994089,
            "external": 994686,
            "item": {
                "article": "",
                "barcode": "977156333800820006",
                "img": "https://storage.yandexcloud.net/images-k2c/3962f8ba-15bd-45bb-813e-46dbe557edad.jpg",
                "name": "Gentlemen's Quarterly/GQ Россия №6",
                "productExtId": "1563-3381",
                "productId": "1042",
                "variantExtId": "",
                "variantId": "1042"
            },
            "reserved": 0,
            "reviseError": false
        }
    ],
    "moreItems": [
        {
            "afterCorrection": 0,
            "available": 301,
            "diff": 301,
            "external": 0,
            "item": {
                "article": "",
                "barcode": "977156333800820005",
                "img": "https://storage.yandexcloud.net/images-k2c/cc0edc3b-df39-43f3-9dd1-9ff47d1b6477.jpg",
                "name": "Gentlemen's Quarterly/GQ Россия №5",
                "productExtId": "1563-3381",
                "productId": "1031",
                "variantId": "1031"
            },
            "reserved": 0,
            "reviseError": false
        }
    ]
}
```

<div id="bkmrk-%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D1%8F-%D0%BF%D1%80%D0%BE%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%B8%D1%82"><div>коррекция происходит если заполнен warehouseId.</div></div><div id="bkmrk-"></div><div id="bkmrk-%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D0%BE%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%BE%D0%B2-">Содержимое массивов moreItems и lessItems идентичны этим массивам из ответа на запрос**/api/lite/products/stock\_revise. Соответственно** фронт может использовать почти напрямую ответ запроса остатков, необходимо только идентификатор склада добавить в json.</div>

# /api/lite/admin/settings/order-type - установка типа заказа

Установка типа заказа реализована одной операцией. Метод **POST /api/lite/admin/settings/order-type.** В теле метода передаем json:

```
{ 
    "id":"875c17e3-bb0c-083d-4eaf-69ee3661036d",
    "orderType": "STANDARD"
}
```

<div id="bkmrk-%D0%A2%D0%B8%D0%BF-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0-%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-%D1%81%D0%BC%D0%B5"><div>Тип заказа можно сменить только если заполнен id.</div></div>

# /api/lite/products/find/barcodes - поиск вариантов товаров по ШК

### Поиск варинатов товаров по ШК из списка

/api/lite/products/find/barcodes

<span style="color:#172b4d;">Находит все сжатую информацию о вариатах товаров по их ШК.  
</span>

#### **Пейджинация**

Для пейджинации используются параметры **page** и **size**:

- size - записей на странице
- page - номер страницы.

Пример: `/api/lite/products/find/barcodes?page=0&size=1090`

Значения по умолчанию (если не переданы):

- page=0
- size=1000

Максимальное количество записей на странице - 1000

#### **Пример запроса**:

```JSON
{
  "barcodes": ["1234567890", "1234567891"]
}
```

#### **Пример успешного ответа:**

```JSON
{
  "variants": [
    {
      "id": "00003-62652#0005",
      "name": "Товар 1",
      "barcodes": ["4062955945900"]
    }
  ],
  "recordsTotal": 100
}
```

Поле **recordsTotal** возвращает общее количество записей в системе.

# Маржинальность

# /api/lite/products/prices/margin/history - История изменения средней цены закупки.

### <span style="color: #000000;">Подсказка полного адреса </span>(/api/prompter/address)

**/api/lite/products/prices/margin/history?id=1040.**

 Получения истории изменения Средней ценой закупки по кокнкретному товару. Входной параметр - id товара

```JSON
{
    "history": [
        {
            "date": "2023-09-18 12:53:08",
            "price": 125.00,
            "success": true
        },
        {
            "date": "2023-09-18 12:52:51",
            "price": 135.00,
            "success": true
        },
        {
            "date": "2023-09-12 09:01:30",
            "price": 125.00,
            "success": true
        },
        {
            "date": "2023-09-12 05:25:44",
            "price": 120.00,
            "success": true
        }
    ],
    "success": true
}
```

<div id="bkmrk-"></div><div id="bkmrk--0"></div><div id="bkmrk-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%BB%D0%BE%D1%81%D1%8C-%D0%BF%D0%BE-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87">выполнялось по задаче: [12072](https://openproject.notasoft.ru/projects/root/work_packages/12072/activity)</div><div id="bkmrk--1"></div>

# /api/lite/report/margin - пересчёт отчета по маржинальности.

**/api/lite/report/margin**

Метод принудительного пересчёта отчета по маржинальности и сохранения его в общие отчёты аккаунта

Отчёт состоит из: даты, массива предупреждений и массива каналов продаж. У предупреждений есть три типа (см. ссылку на задачу внизу). Каналы продаж состоят из названия канала и трёх массивов: годовой информации, месячной и недельной (см. JSON). Внутри каналов продаж есть ***totalSales,*** это суммарные значения всех каналов

входные параметры:

**isDelivered** - флаг указания, какой отчет вывести. Если надо вывести отгруженные, то не указывается или false. Если необходимо вывести отчет по доставленным товарам, то true. *<span style="text-decoration: underline;">Внимание</span>: независимо от флага, пересчёт будет совершен на оба отчёта. От флага зависит только вывод.*

```JSON
{
    "channelSales": [        
        {
            "annuallyData": [
                {
                    "margin": 0,
                    "point": "Сен",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
                {
                    "margin": 0,
                    "point": "Окт",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
              
                // ...
                // вырезал 9 месяцев, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": "Авг",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ],
            "channel": "ONLINE",
            "monthlyData": [
                {
                    "margin": 0,
                    "point": 20,
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
               
                // ...
                // вырезал 28 дней, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": 19,
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ],
            "weeklyData": [
                {
                    "margin": 0,
                    "point": "Ср",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 3350.00,
                    "totalSales": 4475.00
                },
                
                // ...
                // вырезал 5 дней, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": "Вт",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ]
        },
        {
            "annuallyData": [ ], // вырезал содержимое, чтобы не растягивать статью в вики
            "channel": "totalSales",
            "monthlyData": [ ], // вырезал содержимое, чтобы не растягивать статью в вики
            "weeklyData": [ ] // вырезал содержимое, чтобы не растягивать статью в вики
        }
    ],
    "date": "2023-09-20",
    "warning": [
        {
            "additionalInfo": "Список товаров: [1029, 1028, 1026, 1025, 1024, 1040]",
            "priority": 1,
            "title": "Нет данных. Для расчета укажите средние цены закупки."
        },
        {
            "additionalInfo": "Если в расчете фиксируются аномальные показатели маржинальности – меньше 1% или больше 50%.",
            "priority": 3,
            "title": "Аномальные показатели. Возможно необходимо актуализировать данные по ценам закупки и затрат."
        }
    ]
}
```

<div id="bkmrk-%D1%82%D0%B0%D0%BA%D0%B6%D0%B5-%D0%B5%D1%81%D1%82%D1%8C-%D0%BE%D1%82%D1%87%D0%B5%D1%82-%D0%BF%D0%BE%D1%82">также есть отчет потоварный, см. соседнюю статью.</div><div id="bkmrk-"></div><div id="bkmrk-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%BB%D0%BE%D1%81%D1%8C-%D0%BF%D0%BE-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87">выполнялось по задаче: [12073](https://openproject.notasoft.ru/projects/root/work_packages/12073/activity)</div>

# /api/lite/products/margin - расчёт отчёта по маржинальности для товара.

**/api/lite/products/margin?id=1040**

Метод расчёта отчета по маржинальности конкретного товара по его humanId. Используется метод GET, потому что никакие расчитанные данные не сохраняются в БД.

Отчёт состоит из: даты, массива предупреждений и массива каналов продаж. У предупреждений есть три типа (см. ссылку на задачу внизу). Каналы продаж состоят из названия канала и трёх массивов: годовой информации, месячной и недельной (см. JSON).

входные параметры:

**isDelivered** - флаг указания, какой отчет вывести. Если надо вывести отгруженные, то не указывается или false. Если необходимо вывести отчет по доставленным товарам, то true.

**skuHumanId** - id товара, на который требуется отчёт.

```JSON
{
    "channelSales": [        
        {
            "annuallyData": [
                {
                    "margin": 0,
                    "point": "Сен",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
                {
                    "margin": 0,
                    "point": "Окт",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
              
                // ...
                // вырезал 9 месяцев, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": "Авг",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ],
            "channel": "ONLINE",
            "monthlyData": [
                {
                    "margin": 0,
                    "point": 20,
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
               
                // ...
                // вырезал 28 дней, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": 19,
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ],
            "weeklyData": [
                {
                    "margin": 0,
                    "point": "Ср",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 3350.00,
                    "totalSales": 4475.00
                },
                
                // ...
                // вырезал 5 дней, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": "Вт",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ]
        },
        {
            "annuallyData": [ ], // вырезал содержимое, чтобы не растягивать статью в вики
            "channel": "totalSales",
            "monthlyData": [ ], // вырезал содержимое, чтобы не растягивать статью в вики
            "weeklyData": [ ] // вырезал содержимое, чтобы не растягивать статью в вики
        }
    ],
    "date": "2023-09-20",
    "warning": [
        {
            "additionalInfo": "Список товаров: [1029, 1028, 1026, 1025, 1024, 1040]",
            "priority": 1,
            "title": "Нет данных. Для расчета укажите средние цены закупки."
        },
        {
            "additionalInfo": "Если в расчете фиксируются аномальные показатели маржинальности – меньше 1% или больше 50%.",
            "priority": 3,
            "title": "Аномальные показатели. Возможно необходимо актуализировать данные по ценам закупки и затрат."
        }
    ]
}
```

<div id="bkmrk-%D1%82%D0%B0%D0%BA%D0%B6%D0%B5-%D0%B5%D1%81%D1%82%D1%8C-%D0%BE%D1%82%D1%87%D0%B5%D1%82-%D0%BE%D0%B1%D1%89">также есть отчет общий на аккаунт, см. соседнюю статью.</div><div id="bkmrk-"></div><div id="bkmrk-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%BB%D0%BE%D1%81%D1%8C-%D0%BF%D0%BE-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87">выполнялось по задаче: [12073](https://openproject.notasoft.ru/projects/root/work_packages/12073/activity)</div>

# Консолидация

# Создание товаров

Для создания товаров можно полноценно использовать [Апи работы с товарами](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/chapter/%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B),

а также [импорты/экспорты](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteimportupload) excel файлов с номеклатурой.

Также полноценно работает и раздел Товары в [ЛК пользователя ](https://lk.kak2c.ru/)

В дополнение к этим стандартным возможностям - есть режим автосоздания номенклатуры для аккаунта Консолидации - прямо из [Апи заказов на отгрузку](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteorders).

Для этого в order.items нужно - в дополнение к стандартным полям строrи заказа (num, variantId, price, quantity, vatRate) - передать поля:

<div id="bkmrk-skutype%2C-barcode%2C-na">**skuType, barcode, name, article**</div>```JSON
 {
 	...
	"items": [ 
                {
                    "num": 1,
                    "variantId": "100-201",
                    "price": 1000.00,              
                    "quantity": 2,                   
                    "skuType": "SKU",                   
                    "vatRate": "VAT_20",                  
                    "barcode": "461234567836",
                    "name": "Конструктор для развития творчества №12",
                    "article": "const-N12"
                }
                ...
             ]
}             
```

Система автоматически проверит наличие указанных товаров по их коду (поле variantId), и создаст, если не будет найден указанный товар.

# Создание заказов

Создание заказов работает по стандартному [Апи заказов](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteorders). Используется "Свой склад" без контроля остатков.

Заказ создается/редактируется по указанному id. Если поле id не задано - то система сгенерирует очередной уникальный человекочитаемый номер из внутреннего пула (вида 1234-1000).

Чтобы заказ был готов к упаковке - необходимо передать статус подтверждения confirmStatus = APPROVED, а также комбинацию способа и статуса оплаты, позволяющую начать упаковку. А также остальные поля по строкам заказа, способу и адресу доставки.

# Упаковка заказов

Упаковка осуществляется передачей по заказу желаемого состояния упакованных мест (количество мест, их товарное содержимое, габариты и масса, уникальные номера товаров (например, честный знак), штрихкод места (опционально)).

### Создание/редактирование всех упакованных мест заказа

/api/lite/orders/consolidation/packing

Создание/редактирование набора упакованных мест заказов. Номер заказа обязательный параметр - поле id.

Система трактует переданный набор упакованных мест как итоговое желаемое состояние упакованных мест заказа. Если уже есть упакованные места - система проанализирует и приведет их в соответствие с переданным набором.

Сверка идет по полю num и barcode.

Если у мест передан штрихкод (поле barcode) - система запишет его, иначе присвоит ШК из внутреннего пула.

Система позволяет передавать сразу много заказов на упаковку в запросе (массив orders).

**Важно.** Сразу после первичной полной упаковки заказа (по данным системы - все товары заказа упакованы) - идет выгрузка заказа в Апи службы доставки. Если получены ошибки от службы доставки - операция вернет success = false и список полученных ошибок. Их необходимо исправить и повторно вызвать упаковку заказа.

####   
**Пример запроса**

```JSON
{
    "orders": [
        {
            "id": "60-71",
			"packings": [				
                {                                 
					"num": 1,
                    "barcode": "123456789",
					"items": [
						{
							"num":1,
							"variantId": "154",
							"quantity": 2,
                           	"accountingAttributes": [
                                  {
                                      "code": "chestnyznak",
                                      "stringValue":"010463001165001521WRA5MP18REV1Y91EE0692LsS8Yf4v2H/umBxy5U/QqZG+pWIGdAqdCktd7H5JAoI="
                                  }
                            	]                            
						},
                        {
							"num":2,
							"variantId": "100-201",
							"quantity": 2                                             
						}                                          
					],
                    "measurements": {
                        "weight": 565,
                        "dimensions": {
                            "height": 10,
                            "width": 11,
                            "depth": 13
                        }
                    } 
				}                
                                           
                ]
        }
    ]
}
```

#### Успешный ответ

```JSON
{
    "orders": [
        {
            "id": "60-71",
            "success": true
        }
    ],
    "success": true
}
```

##### Ошибка:

```JSON
{
    "errors": [
        {
            "code": 0,
            "message": "[1130659] Переданный уникальный номер не соответствует требованиям \"ЧестныйЗнак\""
        }
    ],
    "orders": [
        {
            "errors": [
                {
                    "code": 0,
                    "message": "[1130659] Переданный уникальный номер не соответствует требованиям \"ЧестныйЗнак\""
                }
            ],
            "id": "5113-1141",
            "success": false
        }
    ],
    "success": false
}
```

### Создание/редактирование упакованного места заказа поштучно

PUT /api/lite/orders/consolidation/packing

Создание/редактирование упакованного места заказа поштучно. Влияет только на одно место заказа и изменяет его согласно переданному желаемому состоянию. Остальные места заказа не затрагиваются.

Номер заказа обязательный параметр - поле id.

Формат запроса и ответа аналогичен POST запросу.

####   
**Пример запроса**

```JSON
{
    "orders": [
        {
            "id": "60-71",
			"packings": [				
                {                                 
					"num": 1,
                    "barcode": "123456789",
					"items": [
						{
							"num":1,
							"variantId": "154",
							"quantity": 2                                             
						},
                        {
							"num":2,
							"variantId": "100-201",
							"quantity": 2                                             
						}                                          
					],
                    "measurements": {
                        "weight": 565,
                        "dimensions": {
                            "height": 10,
                            "width": 11,
                            "depth": 13
                        }
                    } 
				}                
                                           
                ]
        }
    ]
}
```

#### Успешный ответ

```JSON
{
    "orders": [
        {
            "id": "60-71",
            "success": true
        }
    ],
    "success": true
}
```

### <span style="color: #000000;">Получение упакованных мест заказа</span>

/api/lite/orders/consolidation/packing

Возвращает перечень упакованных мест заказа.

Обязательный параметр: id заказа.

##### Пример ответа по частично упакованному заказу

```JSON
{
    "orders": [
        {
            "date": "2023-09-26 13:40:13",
            "externalId": "60-72",
            "id": "60-72",
            "items": [
                {
                    "article": "",
                    "barcode": "2000916300001",
                    "img": "https://storage.yandexcloud.net/images-k2c/ea62ff54-ea8f-4a4c-a100-ff3ae38937ca.png",
                    "itemAmountState": {},
                    "itemDimensions": {
                        "depth": 1,
                        "height": 15,
                        "width": 5
                    },
                    "itemWeight": 80,
                    "name": "Расческа в чехле Bro Cosmetics, Цвет: коричневый ",
                    "num": 1,
                    "price": 2846.00,
                    "productExtId": "BR00T-000140",
                    "productId": "1013",
                    "productVariantCount": 3,
                    "quantity": 2,
                    "skuType": "SKU",
                    "variantExtId": "BR00T-000140-2",
                    "variantId": "154",
                    "vatRate": "NO_VAT",
                    "vatSkuProduct": "NO_VAT"
                },
                {
                    "article": "100-201-артикул",
                    "barcode": "100-100-201",
                    "itemAmountState": {},
                    "itemDimensions": {
                        "depth": 10,
                        "height": 10,
                        "width": 10
                    },
                    "itemWeight": 500,
                    "name": "Тест товар - 100-201",
                    "num": 2,
                    "price": 1000.00,
                    "productId": "1066",
                    "productVariantCount": 1,
                    "quantity": 2,
                    "skuType": "SKU",
                    "variantId": "100-201",
                    "vatRate": "VAT_20"
                },
                {
                    "article": "",
                    "barcode": "",
                    "name": "Доставка",
                    "num": 3,
                    "price": 0.00,
                    "quantity": 1,
                    "skuType": "SERVICE",
                    "variantId": "delivery",
                    "vatRate": "NO_VAT"
                }
            ],
            "notPackedItems": [
                {
                    "article": "100-201-артикул",
                    "barcode": "100-100-201",
                    "itemDimensions": {
                        "depth": 10,
                        "height": 10,
                        "width": 10
                    },
                    "itemWeight": 500,
                    "name": "Тест товар - 100-201",
                    "num": 2,
                    "productId": "1066",
                    "quantity": 1,
                    "skuType": "SKU",
                    "variantId": "100-201"
                },
                {
                    "article": "",
                    "barcode": "2000916300001",
                    "img": "https://storage.yandexcloud.net/images-k2c/ea62ff54-ea8f-4a4c-a100-ff3ae38937ca.png",
                    "itemDimensions": {
                        "depth": 1,
                        "height": 15,
                        "width": 5
                    },
                    "itemWeight": 80,
                    "name": "Расческа в чехле Bro Cosmetics, Цвет: коричневый ",
                    "num": 1,
                    "productExtId": "BR00T-000140",
                    "productId": "1013",
                    "quantity": 1,
                    "skuType": "SKU",
                    "variantExtId": "BR00T-000140-2",
                    "variantId": "154"
                }
            ],
            "packings": [
                {
                    "barcode": "3837100281759",
                    "files": [],
                    "items": [
                        {
                            "accountingAttributes": [],
                            "article": "",
                            "barcode": "2000916300001",
                            "img": "https://storage.yandexcloud.net/images-k2c/ea62ff54-ea8f-4a4c-a100-ff3ae38937ca.png",
                            "itemDimensions": {
                                "depth": 1,
                                "height": 15,
                                "width": 5
                            },
                            "itemWeight": 80,
                            "name": "Расческа в чехле Bro Cosmetics, Цвет: коричневый ",
                            "num": 1,
                            "price": 2846.00,
                            "productExtId": "BR00T-000140",
                            "productId": "1013",
                            "productVariantCount": 3,
                            "quantity": 1,
                            "skuType": "SKU",
                            "variantExtId": "BR00T-000140-2",
                            "variantId": "154",
                            "vatRate": "NO_VAT",
                            "vatSkuProduct": "NO_VAT"
                        },
                        {
                            "accountingAttributes": [],
                            "article": "100-201-артикул",
                            "barcode": "100-100-201",
                            "itemDimensions": {
                                "depth": 10,
                                "height": 10,
                                "width": 10
                            },
                            "itemWeight": 500,
                            "name": "Тест товар - 100-201",
                            "num": 2,
                            "price": 1000.00,
                            "productId": "1066",
                            "productVariantCount": 1,
                            "quantity": 1,
                            "skuType": "SKU",
                            "variantId": "100-201",
                            "vatRate": "VAT_20"
                        }
                    ],
                    "measurements": {
                        "dimensions": {
                            "depth": 13,
                            "height": 10,
                            "width": 11
                        },
                        "success": true,
                        "weight": 565
                    },
                    "num": 1
                }
            ],
            "status": "ORDER_INFO_READY_TO_PACK"
        }
    ],
    "recordsTotal": 1,
    "success": true
}
```

### <span style="color: #000000;">Получение стикера упакованного места</span>

/api/lite/orders/consolidation/packing/print

Возвращает pdf файл со стикером 6x6 см для переданного упакованного места, в формате base64.

Обязательный параметр: **barcode** - ШК упакованного места.

```JSON
{
	"success": true,
	"content": "base64"
}
```

Пример стикера:

[![image-1696274700224.png](https://wiki.kak2c.ru/uploads/images/gallery/2023-10/scaled-1680-/image-1696274700224.png)](https://wiki.kak2c.ru/uploads/images/gallery/2023-10/image-1696274700224.png)

# Отгрузка заказов (создание реестра отгрузки)

### Создание/редактирование реестра отгрузки

/api/lite/takeout\_list

Создание реестра отгружаемых заказов, объединенных одной службой доставки. По каждой службе доставки необходимо формировать отдеьный реестр. В отгруженный реестр вносить изменения состава заказов более нельзя.

```JavaScript
{
    "id":"1105",
    "courierCode":"LOGSIS",
    "takeoutDate": "2023-09-22",
    "takeoutHourStart":"09:00",
    "takeoutHourEnd":"18:00",
    "gatherType": "COURIER",
    "date":"2023-09-20 22:12:12", 
    "warehouseCode" : "e98f2e33-d488-d75c-4e38-b912e87429b6",   
    "orders": [{"id":"60-71"}, {"id":"60-72"}]
}
```

**id** - номер реестра,

**courierCode** - код курьерской компании (из перечисления),

<div id="bkmrk-takeoutdate---%D0%B4%D0%B0%D1%82%D0%B0-%D0%BF"><div><div><div>**takeoutDate** - дата передачи заказов в службу доставки,</div><div></div></div></div><div>**takeoutHourStart** - интервал сбора (начало),</div><div></div><div>**takeoutHourEnd** - интервал сбора (окончание),</div><div><div></div><div><div>**date** - дата документа реестра,</div><div></div><div>**gatherType** - способ сбора (COURIER - вызов курьера, SELF_PICKUP - самопривоз),</div><div></div><div><div><div>**warehouseCode** - код склада с которого идет отгрузка (из справочника складов аккаунта),</div><div></div><div><div><div>**orders** - список номеров заказов реестра</div></div></div></div></div></div></div></div>#### Успешный ответ

```JavaScript
{
    "id": "1105",
    "success": true
}
```

### <span style="color: #000000;">Получение реестра отгрузки</span>

/api/lite/takeout\_list

Возвращает реестр отгрузки по его id

Обязательный параметр: id реестра.

##### Пример успешного ответа

```JSON
{
    "recordsTotal": 1,
    "success": true,
    "takeoutLists": [
        {
            "availableForChanges": false,
            "courierCode": "LOGSIS",
            "date": "2023-09-22 11:53:44",
            "id": "1101",
            "orders": [
                {
                    "customer": "Тестовый Покупатель",
                    "date": "2023-09-19",
                    "id": "60-55"
                },
                {
                    "customer": "Тестовый Покупатель",
                    "date": "2023-09-19",
                    "id": "60-56"
                }
            ],
            "status": "SHIPPED",
            "takeoutDate": "2023-09-22",
            "updateTs": "2023-09-22 11:53:44.643",
            "warehouseCode": "e98f2e33-d488-d75c-4e38-b912e87429b6",
            "warehouseManager": {
                "address": {},
                "alternativePhone": "",
                "name": "Не задано",
                "passport": {},
                "patronymic": "",
                "phone": "+73434343434",
                "rawPhone": "Не задано",
                "surname": ""
            },
            "warehouseName": "Свой склад"
        }
    ]
}
```

### <span style="color: #000000;">Получение печатной формы реестра</span>

/api/lite/takeout\_list/print

Возвращает pdf файл спечатной формой реестра А4 для указанного реестра, в формате base64.

Обязательный параметр: **id** реестра.

Пример печатной формы:

[![image-1696275500785.png](https://wiki.kak2c.ru/uploads/images/gallery/2023-10/scaled-1680-/image-1696275500785.png)](https://wiki.kak2c.ru/uploads/images/gallery/2023-10/image-1696275500785.png)

# Упаковочные материалы

# Упаковочные материалы

### Запрос списка упаковочных материалов (GET /api/lite/products)

/api/lite/products

Дублирует [https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproducts ](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproducts)

Описание полей аналогичное запросу товаров.

Существует 4 типа упаковочных материалов:

<table border="1" id="bkmrk-%D0%A3%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BE%D1%87%D0%BD%D1%8B%D0%B5-%D0%BA%D0%BE%D1%80%D0%BE%D0%B1%D0%B0-p" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">Упаковочные короба</td><td style="width: 50%;">PACKING\_MATERIAL\_BOXES</td></tr><tr><td style="width: 50%;">Другие виды расходных материалов</td><td style="width: 50%;">PACKING\_MATERIAL\_OTHER</td></tr><tr><td style="width: 50%;">Допвложения для упаковки</td><td style="width: 50%;">PACKING\_MATERIAL\_ATTACHMENT</td></tr><tr><td style="width: 50%;">Общие материалы</td><td style="width: 50%;">COMMON\_PACKING\_MATERIA</td></tr></tbody></table>

Запросить можно через параметр запроса filters=SKU\_TYPE:

#### **Пример результата запроса**:

/api/lite/products?size=2&amp;filters=SKU\_TYPE:COMMON\_PACKING\_MATERIAL

```JSON
{
    "products": [
        {
            "available": true,
            "deleted": false,
            "id": "COMMON_PACK_Birka",
            "images": [
                {
                    "id": "COMMON_PACK_Birka",
                    "pos": "1.000000000000000",
                    "success": true
                }
            ],
            "shortName": "Бирка + биркодержатель (цвет белый)",
            "type": "COMMON_PACKING_MATERIAL",
            "variants": [
                {
                    "article": "COMMON_PACK_Birka",
                    "id": "COMMON_PACK_Birka",
                    "type": "COMMON_PACKING_MATERIAL",
                    "vat": "NO_VAT"
                }
            ],
            "vat": "NO_VAT"
        }
    ],
    "recordsTotal": 41,
    "success": true
}
```

#### **Фильтрация по полям товара**

Можно задавать фильтр параметром ?query=test - для фильтрации по полям article, humanId, shortName, fullName, description

Дополнительно можно фильтровать по конкректному продукту параметром ?id=1000

Имеется поддержка фильтрации и по другим полям:

- по Id варианта - ?variantId=1001
- по ШК (штрихкоду товара) - ?barcode=0000000000001
- по названию, артикулу - ?query=короб1

#### **Пейджинация**

Для пейджинации используются параметры 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`

### Создание/обновление упаковочных материалов (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: 256px;"><tbody aria-live="polite" aria-relevant="all"><tr style="height: 35px;"><td style="width: 171.175px; height: 35px;">**Поле**</td><td style="width: 125px; height: 35px;">**Тип / формат**</td><td style="width: 512px; height: 35px;">**Описание**

</td></tr><tr role="row" style="height: 57px;"><td class="confluenceTd" style="width: 171.175px; height: 47px;">id</td><td class="confluenceTd" style="width: 125px; height: 47px;">string</td><td class="confluenceTd" style="width: 512px; height: 47px;">Идентификатор продукта. Если не указан, создается новый продукт. Если указан, обновляется продукт с данным id<span style="color: #999999;"> или создаётся новый продукт с пользовательским id.</span>

</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.175px; height: 29px;">extId</td><td class="confluenceTd" style="width: 125px; height: 29px;">string</td><td class="confluenceTd" style="width: 512px; height: 29px;">Дополнительный идентификатор продукта</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.175px; height: 29px;">shortName</td><td class="confluenceTd" style="width: 125px; height: 29px;">string</td><td class="confluenceTd" style="width: 512px; height: 29px;">Наименование продукта</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.175px; height: 29px;">description</td><td class="confluenceTd" style="width: 125px; height: 29px;">string</td><td class="confluenceTd" style="width: 512px; height: 29px;">Описание (может содержать html)</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.175px; height: 29px;">deleted</td><td class="confluenceTd" style="width: 125px; height: 29px;">boolean</td><td class="confluenceTd" style="width: 512px; height: 29px;">Архивная карточка</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.175px; height: 29px;">type</td><td class="confluenceTd" style="width: 125px; height: 29px;">enum</td><td class="confluenceTd" style="width: 512px; height: 29px;">Тип упаковочного материала</td></tr><tr role="row" style="height: 29px;"><td class="confluenceTd" style="width: 171.175px; height: 29px;">variantsToUpdate</td><td class="confluenceTd" style="width: 125px; height: 29px;">объект</td><td class="confluenceTd" style="width: 512px; height: 29px;">Объект варианта товара (см. [POST /api/lite/products/variants](http://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproductsvariants))</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">Пример запроса</div>```JSON
{
    "id": "10106",
    "shortName": "Новый упаковочный короб 1",
    "type": "PACKING_MATERIAL_BOXES",
    "variantsToUpdate": [
        {
            "weight": 1000,
            "dimensions": {
                "width": 10,
                "height": 10,
                "depth": 10
            },
            "article": "242343",
            "barcodes": [
                {
                    "isDefault": true,
                    "type": "COMMON",
                    "value": "342424655"
                }
            ],
            "productId": "10106",
            "variantId": "10234659"
        }
    ]
}
```

#### **Пример положительного ответа:**

```JSON
{
    "id": "10106",
    "success": true,
    "variantsResult": [
        {
            "productId": "10106",
            "success": true,
            "variantId": "10234659"
        }
    ]
}
```

####  

#### **Пример положительного ответа с ошибкой сохранения по указанному варианту:**

<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
{
    "id": "10107",
    "success": true,
    "variantsResult": [
        {
            "errors": [
                {
                    "code": 0,
                    "message": "Штрихкод 3424246755 уже используются в варианте [10234659] Новый упаковочный короб 1, артикул: 242343, ШК: 3424246755 "
                }
            ],
            "productId": "10107",
            "success": false,
            "variantId": "10234654"
        }
    ]
}
```

### Создание/обновление заказа с упаковочными материалами (POST/api/lite/orders)

/api/lite/orders

Дублирует [https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteorders](https://wiki.kak2c.ru/books/kaktus-dlya-razrabotchikov/page/apiliteproducts)

Упаковочные материалы можно добавить к каждому товару в списке items (кроме товара доставки) в заказе списком packingMaterials,   
который содержит в себе 2 дополнительных списка:  
commonMaterials - передаются только общие упаковочные материалы  
customMaterials - 3 других типа упаковочных материалов

```
{   
  "id": "5669-232434357",
  "items": [
    {
      "article": "78787878",
      "barcode": "4254345564",
      "name": "Кактус",
      "productId": "10040",
      "quantity": 3,
      "variantId": "10040",
      "packingMaterials": {
        "commonMaterials": [
          {
            "id": "COMMON_PACK_Birka",
            "shortName": "Бирка + биркодержатель (цвет белый)",
            "type": "COMMON_PACKING_MATERIAL",
            "variants": [
              {
                "article": "COMMON_PACK_Birka",
                "id": "COMMON_PACK_Birka",
                "type": "COMMON_PACKING_MATERIAL",
                "vat": "NO_VAT"
              }
            ],
            "quantity": 1,
            "variantId": "COMMON_PACK_Birka"
          }
        ],
        "customMaterials": [
          {
            "id": "10058",
            "shortName": "тест_ДВ",
            "type": "PACKING_MATERIAL_ATTACHMENT",
            "variants": [
              {
                "article": "66456456",
                "barcodes": [
                  {
                    "isDefault": true,
                    "type": "COMMON",
                    "value": "6564645456"
                  }
                ],
                "dimensions": {
                  "depth": 10,
                  "height": 10,
                  "width": 10
                },
                "id": "1023402",
                "type": "PACKING_MATERIAL_ATTACHMENT",
                "weight": 1000
              }
            ],
            "quantity": 1,
            "variantId": "1023402"
          },
          {
            "id": "10059",
            "shortName": "тест 44 апап",
            "type": "PACKING_MATERIAL_OTHER",
            "variants": [
              {
                "barcodes": [
                  {
                    "isDefault": true,
                    "type": "COMMON",
                    "value": "441441441441441441"
                  }
                ],
                "dimensions": {
                  "depth": 0,
                  "height": 0,
                  "width": 0
                },
                "id": "1023403",
                "type": "PACKING_MATERIAL_OTHER",
                "weight": 0
              }
            ],
            "quantity": 1,
            "variantId": "1023403"
          },
          {
            "id": "10042",
            "shortName": "Короб 01",
            "type": "PACKING_MATERIAL_BOXES",
            "variants": [
              {
                "barcodes": [
                  {
                    "isDefault": true,
                    "type": "COMMON",
                    "value": "34523465"
                  }
                ],
                "dimensions": {
                  "depth": 0,
                  "height": 0,
                  "width": 0
                },
                "id": "1023386",
                "type": "PACKING_MATERIAL_BOXES",
                "weight": 0
              }
            ],
            "quantity": 1,
            "variantId": "1023386"
          }
        ]
      }
    }
  ]
}
```

#### **Пример полного вызова:**

<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
{
    "confirmStatus": "NEED_CONFIRM",
    "createTs": "2025-02-10 17:41:47.618",
    "crossdockEditable": true,
    "currency": "RUB",
    "customerPaymentInProcess": false,
    "date": "2025-02-10 17:41:47",
    "delivery": {
        "address": {
            "fullAddress": "",
            "region": ""
        },
        "deliveryPrice": 0,
        "desiredDeliveryTimeFrom": "09:00",
        "desiredDeliveryTimeTo": "18:00",
        "pvzComment": "",
        "receiver": {
            "address": {
                "fullAddress": "",
                "region": ""
            },
            "alternativePhone": "",
            "passport": {},
            "personType": "CUSTOMER",
            "phone": ""
        }
    },
    "fbmWithFile": false,
    "id": "5669-232434357",
    "insuranceSum": 0,
    "insuranceSumAutoCalculation": true,
    "items": [
        {
            "article": "78787878",
            "barcode": "4254345564",
            "expirationDays": 180,
            "expirationMode": "USE_EXPIRATION",
            "itemDimensions": {
                "depth": 0,
                "height": 0,
                "width": 0
            },
            "itemWeight": 0,
            "name": "Кактус",
            "num": 1,
            "price": 0,
            "productId": "10040",
            "productVariantCount": 1,
            "quantity": 3,
            "quantityAvailable": 0,
            "skuType": "SKU",
            "variantId": "10040",
            "vatRate": "VAT_5",
            "vatSkuProduct": "VAT_5",
            "packingMaterials": {
                "commonMaterials": [
                    {
                        "id": "COMMON_PACK_Birka",
                        "shortName": "Бирка + биркодержатель (цвет белый)",
                        "type": "COMMON_PACKING_MATERIAL",
                        "variants": [
                            {
                                "article": "COMMON_PACK_Birka",
                                "id": "COMMON_PACK_Birka",
                                "type": "COMMON_PACKING_MATERIAL",
                                "vat": "NO_VAT"
                            }
                        ],
                        "quantity": 1,
                        "variantId": "COMMON_PACK_Birka"
                    }
                ],
                "customMaterials": [
                    {
                        "id": "10058",
                        "shortName": "тест_ДВ",
                        "type": "PACKING_MATERIAL_ATTACHMENT",
                        "variants": [
                            {
                                "article": "66456456",
                                "barcodes": [
                                    {
                                        "isDefault": true,
                                        "type": "COMMON",
                                        "value": "6564645456"
                                    }
                                ],
                                "dimensions": {
                                    "depth": 10,
                                    "height": 10,
                                    "width": 10
                                },
                                "id": "1023402",
                                "type": "PACKING_MATERIAL_ATTACHMENT",
                                "weight": 1000
                            }
                        ],
                        "quantity": 1,
                        "variantId": "1023402"
                    },
                    {
                        "id": "10059",
                        "shortName": "тест 44 апап",
                        "type": "PACKING_MATERIAL_OTHER",
                        "variants": [
                            {
                                "barcodes": [
                                    {
                                        "isDefault": true,
                                        "type": "COMMON",
                                        "value": "441441441441441441"
                                    }
                                ],
                                "dimensions": {
                                    "depth": 0,
                                    "height": 0,
                                    "width": 0
                                },
                                "id": "1023403",
                                "type": "PACKING_MATERIAL_OTHER",
                                "weight": 0
                            }
                        ],
                        "quantity": 1,
                        "variantId": "1023403"
                    },
                    {
                        "id": "10042",
                        "shortName": "Короб 01",
                        "type": "PACKING_MATERIAL_BOXES",
                        "variants": [
                            {
                                "barcodes": [
                                    {
                                        "isDefault": true,
                                        "type": "COMMON",
                                        "value": "34523465"
                                    }
                                ],
                                "dimensions": {
                                    "depth": 0,
                                    "height": 0,
                                    "width": 0
                                },
                                "id": "1023386",
                                "type": "PACKING_MATERIAL_BOXES",
                                "weight": 0
                            }
                        ],
                        "quantity": 1,
                        "variantId": "1023386"
                    }
                ]
            }
        },
        {
            "barcode": "",
            "name": "Доставка",
            "num": 2,
            "price": 0,
            "quantity": 1,
            "skuType": "SERVICE",
            "variantId": "delivery",
            "vatRate": "NO_VAT"
        }
    ],
    "legalEntity": {
        "id": "15d72385-dadf-a591-fefe-86c65661463f",
        "name": " Розничный покупатель",
        "type": "COMPANY"
    },
    "manualDiscount": {
        "appliedDiscountValue": 0,
        "discountType": "FIX",
        "discountValue": 0,
        "isActive": false
    },
    "needCustomerPayment": false,
    "needReserve": true,
    "onlinePaymentSum": 0,
    "orderType": "STANDARD",
    "packingOptions": [
        {
            "packSpecialsToSeparatePackingPlace": false
        }
    ],
    "paymentMethodCode": "no-cod",
    "paymentMethodName": "Без наложенного платежа",
    "paymentMethodType": "NO_COD",
    "paymentStatus": "NOT_PAID",
    "status": "ORDER_INFO_NEED_CONFIRM",
    "totalOrderSum": 0,
    "updateTs": "2025-02-10 17:41:48.025",
    "warehouseCode": "21ad85be-09a9-c4f8-72e1-4976f9d5bda6",
    "warehouseFFExportError": false,
    "warehouseFFExported": false,
    "warehouseFFSync": false,
    "warehouseName": "NEW WMS!",
    "warehouseShippingOptions": {
        "packingType": "MIX_PACKINGS"
    }
}
```

#### **Пример положительного ответа:**

```JSON
{
    "c": "825f47b4-fd58-24ce-65e0-2f3cf116caa0",
    "orderId": "5669-232434357",
    "status": "ORDER_INFO_NEED_CONFIRM",
    "success": true
}
```

В запросе информации по заказу по методу GET /api/lite/orders информация по упаковочным материалам отображается аналогично, в виде приведенных выше списков

####  

####