Содержание
Команды API
Введение
API предназначен для управления данными в Sellper из внешних приложений.
Это позволяет синхронизировать работу интернет-магазинов с управленческим учётом в Sellper.
API реализован основываясь на принципах REST.
Обмен осуществляется в формате XML по протоколу HTTPS посредством запросов GET, PUT, DELETE, POST.
Авторизация запросов:
- Basic-авторизация - логин и пароль зарегистрированного в системе пользователя
- С помощью token-ключа - генерируется системой в момент инсталляции приложения (см. раздел «Приложения») и передается в заголовке запроса «Karkas-Token».
Форма запросов:
POST https://<домен>.sellper.ru/admin/clients.xml GET https://<домен>.sellper.ru/admin/client/<id>.xml ...
Подписки на события представляет собой возможность получать уведомления об изменениях на складе путем отправки http-запроса. При возникновении события по указанному в подписке адресу будет выполнен POST-запрос, в теле которого будет передано описание события в формате XML.
Приложения
Приложения в системе «Sellper» могут быть двух видов: общие и частные. Общие приложения доступны для всех клиентов «Sellper». Частные приложения доступны только их авторам или заказчикам.
Общие положения:
- Изначально разработка приложения производится на собственном хосте разработчика, но при необходимости, разработчику может быть предоставлен выделенный хостинг на сервере Sellper, где будет доступен удобный PHP-класс для работы с крон-службами.
- Разработка может вестись с использованием PHP, а для хранения информации использоваться СУБД Postgres, MySQL или текстовые файлы
- Настройка приложения производится администратором(владельцем) домена через форму создания нового приложения (см. ниже) в настройках Sellper.
- Первоначально приложение рассматривается как частное (доступно только в домене, где оно создано)
- По окончании тестирования приложение становится общим (доступно всем доменам для установки и настройки)
Фактически, приложение может находится где угодно, важно лишь правильно настроить URL установки, входа и удаления.
После того как пользователь нажал ссылку установки приложения в настройках приложений, генерируется уникальный token-ключ, который отправляется в качестве GET-параметра по указанному URL установки приложения (см. форму редактирования свойств приложения). Помимо параметра «token» отправляется также GET-параметр «domain» c названием текущего домена. В этот момент, полученный token-ключ необходимо сохранить и использовать для token-авторизации для API-запросов (передавать в заголовке «Karkas-Token» с каждым запросом).
Чтобы настроить приложение, администратору необходимо заполнить соответствующие поля, нажав кнопку создания нового приложения в списке приложений (меню Настройки / Приложения):
- Классификация приложения
- Название приложения (будет показываться в списке приложений)
- URL логотипа приложения
- URL сайта приложения
- URL описания приложения
- Текст краткого описания приложения (в html формате, будет показываться в списке приложений)
- URL для установки приложения (например http://myapp.ru/install)
- URL страницы входа в приложение, куда попадает пользователь после нажатия кнопки входа в приложение (например http://myapp.ru/login)
- URL страницы приложения, куда отправляется запрос после нажатия кнопки удаления приложения (например http://myapp.ru/uninstall)
- Контакты для пользователей.
В дальнейшем, при необходимости сделать разрабатываемое приложение общим для всех клиентов, необходимо получить согласие от администрации. Приложение может быть как бесплатным, так и платным - в зависимости от тарифа и договоренности с администрацией.
Склады и магазины
Получение списка складов
Запроc:
GET /admin/stores.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <stores type="array"> <store id="1"> <name>Главный склад</name> <is_self>1</is_self> <read_only>0</read_only> </store> <store id="2"> <name>Дополнительный склад</name> <is_self>0</is_self> <read_only>1</read_only> </store> </stores>
Добавление склада
Тег <read_only> является признаком только чтения, который не дает право пользователю изменять основные свойства склада: название, признак собственного склада.
Тег <is_self> является признаком собственного склада, который может использоваться внешними приложениями при сопоставлении складов, например со складами маркетплейса.
Тег <shops_limit> ограничивает количество действующих магазинов, которые можно связать со складом. По-умолчанию, будет равняться 10.
Запрос:
POST /admin/shops.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <store> <name>Склад магазина</name> <read_only>0</read_only> <is_self>1</is_self> <shops_limit>1</shops_limit> </store>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <store id="2"> <name>Склад магазина</name> <read_only>0</read_only> <is_self>1</is_self> </store>
Получение списка магазинов
Запроc:
GET /admin/shops.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <shops type="array"> <shop id="1"> <name>Мой интернет-магазин</name> <store>1</store> <read_only>0</read_only> </shop> <shop id="2"> <name>Моя розничная точка</name> <store>1</store> <read_only>0</read_only> </shop> </shops>
Добавление магазина
Тег <read_only> является признаком только чтения, который не дает право пользователю изменять основные свойства магазина: название, принадлежность к складу, признак розничного магазина, признак интернет-магазина, принадлежность к маркетплейсу.
Запроc:
POST /admin/shops.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <shop> <name>Новый магазин</name> <read_only>1</read_only> <ns>ozon</ns> </shop>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <shop id="3"> <name>Новый магазин</name> <store>2</store> <read_only>1</read_only> </shop>
Изменение магазина
Запроc:
PUT /admin/shops/1.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <shop> <name>Другое название магазина</name> <store>2</store> </shop>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <shop id=5> <name>Другое название магазина</name> <store>2</store> </shop>
Получение товарных остатков у конкретного склада
Помимо общего состояния склада имеется возможность получить вместо полного списка только те позиции, которые подверглись изменению на складе, начиная с указанной даты. К измененным остаткам относится товар, у которого изменились количественно-стоимостные показатели.
Запроc:
GET /admin/stores/1.xml?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся позиции.
- page-size - размер страницы (количество модификаций товаров на странице). По-умолчанию и не может превышать 250.
- changed-from=<date time> - только те остатки, которые подверглись изменению с указанной даты. Удаленные товары будут указаны с количеством = 0. Дату можно указать как в формате 'YYYY-MM-DD HH:II:SS', так и указав timestamp.
- product-id=<N> - остатки только по одному товару с идентификатором N
- extId=<N> - остатки только по одному товару с внешнем кодом N
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
- with-totals=1 - признак того, что в ответе нужно показать общее кол-во позиций на складе (атрибут totalItemsCount тега store).
- category - ID категории (фильтр)
- article - маска поиска по артикулу (фильтр).
- name - маска поиска по названию (фильтр)
- barcode - поиск по штрих-коду (фильтр)
- good-filter - фильтр по параметрам товара в формате JSON. Например: {«parameters»:[{«ns»:«wb»,«name»:«Комплектация», «value»:«кеды»}, {«name»:«Торговая марка», «value»:«Vorsh»}], «name»:«%Кроссовки V534%»,«article»:«V534 черн CITY»}
Например, чтобы отобрать все товары, у которых артикул начинается на «2», используйте в запросе параметр: …&article=2%25 , где %25 в url-кодировке (символ % ) означает любую последовательность символов
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <store type="array"> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="123" extId="3004">Товар 1</product> <modification> <parameter name="Размер">55</parameter> </modification> <quantity>100</quantity> <price>10</price> <cost>2</cost> <currency>RUB</currency> <rate>1</rate> <discount>0</discount> <barcodes> <barcode>2047308355270</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="123" extId="3004">Товар 1</product> <modification> <parameter name="Размер">57</parameter> </modification> <quantity>10</quantity> <price>10</price> <cost>2</cost> <currency>RUB</currency> <rate>1</rate> </item> </items> </store>
Получение товарных остатков сразу по нескольким складам
Помимо общего состояния указанных складов имеется возможность получить вместо полного списка только те позиции, которые подверглись изменению на указанных складах, начиная с указанной даты. К измененным остаткам относится товар, у которого изменились количественно-стоимостные показатели.
Запроc:
GET|POST /admin/stores_items.xml?parameter=value
Параметры: … - теже параметры, что у предыдущего запроса
- stores - идентификаторы рассматриваемых складов, указанные через запятую.
- filter - тело запроса, переданное методом POST. Реализует фильтрацию по списку штрих-кодов: <filter><barcodes><barcode>12334…</barcode>…</barcodes></filter>.
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="123" extId="3004">Товар 1</product> <modification> <parameter name="Размер">55</parameter> </modification> <quantity>100</quantity> <price>10</price> <cost>2</cost> <currency>RUB</currency> <rate>1</rate> <barcodes> <barcode>2047308355270</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="123" extId="3004">Товар 1</product> <modification> <parameter name="Размер">57</parameter> </modification> <quantity>10</quantity> <price>10</price> <cost>2</cost> <currency>RUB</currency> <rate>1</rate> </item> </items>
Изменение цен на складе
Запроc:
PUT /admin/stores_prices.xml?parameter=value
Метод позволяет изменить отпускные цены товара сразу на одном или нескольких складах.
Если параметр stores не передан, изменение будет применено ко всем складам домена. Если параметр передан, цена будет изменена только на указанных складах.
Параметры:
- stores - идентификаторы рассматриваемых складов, указанные через запятую.
Тело запроса:
- Корневой тег <product> - одиночное обновление.
- Корневой тег <products> - пакетное обновление.
- Идентификатор товара можно передать одним из способов:
- <productId> или <productID>
- <extId>
- <article> вместе с <name>
Пример одиночного запроса:
<?xml version="1.0" encoding="UTF-8"?> <product> <extId>wb_150204079</extId> <price>11900</price> <discount>200</discount> </product>
Пример пакетного запроса:
<?xml version="1.0" encoding="UTF-8"?> <products> <product> <productId>123</productId> <price>1490</price> <discount>100</discount> </product> <product> <extId>wb_150204079</extId> <price>11900</price> </product> </products>
Ответ на одиночный запрос:
<?xml version="1.0" encoding="UTF-8"?> <product id="123" extId="wb_150204079" stores="67,68" matched-stores="2" updated="1"> <name>Рубашка Апельсин 33549 в полоску</name> <price>11900</price> <discount>200</discount> <final_price>11700</final_price> <applied_stores> <store id="67">Главный склад</store> <store id="68">Склад маркетплейсов</store> </applied_stores> </product>
Ответ на пакетный запрос:
<?xml version="1.0" encoding="UTF-8"?> <products type="array" count="2" stores="67,68"> <product id="123" extId="wb_150204079" stores="67,68" matched-stores="2" updated="1"> <name>Рубашка Апельсин 33549 в полоску</name> <price>11900</price> <discount>200</discount> <final_price>11700</final_price> <applied_stores> <store id="67">Главный склад</store> <store id="68">Склад маркетплейсов</store> </applied_stores> </product> <product extId="wb_missing"> <error code="404">Product with extId='wb_missing' is not found</error> </product> </products>
Получение торговых предложений (формат ICML)
Атрибут «quantity» тега <offer> в ответе содержит количество товарной позиции на всех складах.
Запроc:
GET /admin/icml.xml
Параметры:
- stores - идентификаторы рассматриваемых складов, указанные через запятую.
- good-filter - фильтр по параметрам товара в формате JSON. Например: {«parameters»:[{«ns»:«wb»,«name»:«Комплектация», «value»:«кеды»}, {«name»:«Торговая марка», «value»:«Vorsh»}], «name»:«%Кроссовки V534%»,«article»:«V534 черн CITY»}
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <yml_catalog date="2013-06-20 10:09:18"> <shop> <name>Vorsh</name> <company>Интернет-магазин Vorsh</company> <categories> <category id="12">Кроссовки</category> <category id="13">Мокасины</category> <category id="14">Туфли</category> <category id="15">Ботинки</category> <category id="16">Сабо</category> <category id="17">Сандалеты</category> <category id="18">Полусапоги</category> </categories> <offers> <offer id="97709e3f36e134e02ca69192ba8414da" productId="5970" quantity="0"> <price>4700.00</price> <xmlId>97709e3f36e134e02ca69192ba8414da</xmlId> <purchasePrice>2150.00</purchasePrice> <categoryId>12</categoryId> <name>Vorsh Кроссовки V534 черн CITY "черная кожа шнурки" (Размер 39)</name> <productName>Vorsh Кроссовки V534 черн CITY "черная кожа шнурки"</productName> <picture>http://localhost/clients_as/vmens/images/3338.jpg</picture> <picture>http://localhost/clients_as/vmens/images/3170.jpg</picture> <param name="Артикул" code="article">V534 черн CITY</param> <param name="Размер" is-modificator="1">39</param> <param name="Цвет" is-modificator="0">Черный</param> <param name="Подкладка" is-modificator="0">натур. кожа</param> <param name="Материал верха" is-modificator="0">натур. кожа</param> <param name="Производство" is-modificator="0">Bochetti</param> <param name="Тип товара" is-modificator="0">обычный</param> <barcode>2083782861821</barcode> </offer> <offer id="c5febc1bc1e95d99622e53069b51f3f6" productId="5970" quantity="2"> <price>4700.00</price> <xmlId>c5febc1bc1e95d99622e53069b51f3f6</xmlId> <purchasePrice>2150.00</purchasePrice> <categoryId>12</categoryId> <name>Vorsh Кроссовки V534 черн CITY "черная кожа шнурки" (Размер 40)</name> <productName>Vorsh Кроссовки V534 черн CITY "черная кожа шнурки"</productName> <picture>http://localhost/clients_as/vmens/images/3338.jpg</picture> <picture>http://localhost/clients_as/vmens/images/3170.jpg</picture> <param name="Артикул" code="article">V534 черн CITY</param> <param name="Размер" is-modificator="1">40</param> <param name="Цвет" is-modificator="0">Черный</param> <param name="Подкладка" is-modificator="0">натур. кожа</param> <param name="Материал верха" is-modificator="0">натур. кожа</param> <param name="Производство" is-modificator="0">Bochetti</param> <param name="Тип товара" is-modificator="0">обычный</param> <barcode>2092300603737</barcode> </offer> <offer id="1430b747b8dfae0894c1b72443553aad" productId="5970" quantity="1"> <price>4700.00</price> <xmlId>1430b747b8dfae0894c1b72443553aad</xmlId> <purchasePrice>2150.00</purchasePrice> <categoryId>12</categoryId> <name>Vorsh Кроссовки V534 черн CITY "черная кожа шнурки" (Размер 41)</name> <productName>Vorsh Кроссовки V534 черн CITY "черная кожа шнурки"</productName> <picture>http://localhost/clients_as/vmens/images/3338.jpg</picture> <picture>http://localhost/clients_as/vmens/images/3170.jpg</picture> <param name="Артикул" code="article">V534 черн CITY</param> <param name="Размер" is-modificator="1">41</param> <param name="Цвет" is-modificator="0">Черный</param> <param name="Подкладка" is-modificator="0">натур. кожа</param> <param name="Материал верха" is-modificator="0">натур. кожа</param> <param name="Производство" is-modificator="0">Bochetti</param> <param name="Тип товара" is-modificator="0">обычный</param> <barcode>2090315165004</barcode> </offer> </offers> </shop> </yml_catalog>
Категории товаров
Получение списка категорий
Запроc:
GET /admin/categories.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <categories type="array"> <category id=23> <name>Брюки</name> <created type="timestamp">2012-01-01 01:01:01 +0400</created> </category> <category id=25> <name>Сапоги</name> <created type="timestamp">2012-01-01 01:01:01 +0400</created> </category> </categories>
Запрос категории
Запроc :
GET /admin/categories/25.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <category id=25> <name>Одежда/Костюмы</name> <created type="timestamp">2012-01-01 01:01:01 +0400</created> </category>
Добавление категории
Запроc:
POST /admin/categories.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <category> <name>Одежда/Мужская/Сорочки</name> </category>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <category id="56"> <name>Одежда/Мужская/Сорочки</name> <created type="timestamp">2012-01-01 01:01:01 +0400</created> </category>
Изменение категории
Запроc:
PUT /admin/categories/55.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <category> <name>Сапоги</name> </category>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <category id=55> <name>Сапоги</name> <created type="timestamp">2012-01-01 01:01:01 +0400</created> </category>
Удаление категории
Запроc:
DELETE /admin/categories/77.xml
Ответ:
HTTP/1.1 200 OK
Товары
Получение списка товаров
Запроc:
GET /admin/products.xml?parameter=value
По-умолчанию, список сортируется по времени создания товара. Чтобы поменять направление сортировки используйте параметр order-by-creation=desc
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все, нужно в цикле листать страницы пока не закончатся позиции.
- page-size - размер страницы (количество товаров на странице). По-умолчанию и не может превышать 250.
- order-by-creation - сортировать по времени создания товара. Возможные значения desc (по-убыванию) и asc (по-возрастанию).
- stores - признак наличия товара на одном из указанных складов (перечислите id складов через запятую) (фильтр)
- category - ID категории (фильтр)
- article - маска поиска по артикулу (фильтр).
- name - маска поиска по названию (фильтр)
- barcode - поиск по штрих-коду (фильтр)
- extId - поиск по внешнему коду
Например, чтобы отобрать все товары, у которых артикул начинается на «2», используйте в запросе параметр: …&article=2%25 , где %25 в url-кодировке (символ % ) означает любую последовательность символов
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <products type="array"> <product id="234234" hidden="false" extId="3004"> <category id="3333">Одежда/Мужская/Сорочки</category> <name>Сорочка мужская B101</name> <article>W-101/202</article> <description>Полное описание товара</description> <short-description>Краткое описание</short-description> <created>2009-06-04 14:22:34 +0400</created> <parameters> <parameter name="Торговая марка">Velaner</parameter> <parameter name="Производитель">Россия, ООО "Ромашка"</parameter> <parameter name="Состав">100% хлопок</parameter> <parameter name="Дата производства">2014-02-13</parameter> </parameters> <default-prices> <cost>856</cost> <price>1500</price> <old-price>2000</old-price> </default-prices> <vendor id="10">Chili Technologies S.L.</vendor> <modifications> <modification> <parameter name="Размер">XS</parameter> <barcodes> <barcode>2046497976600</barcode> <barcode>4602347974121</barcode> </barcodes> </modification> <modification> <parameter name="Размер">S</parameter> <barcodes> <barcode>2046497345345</barcode> </barcodes> </modification> <modification> <parameter name="Размер">M</parameter> <barcodes> <barcode>2046497345764</barcode> <barcode>2046497345466</barcode> </barcodes> </modification> </modifications> <images> <image id="123123"> <original-url>image.png</original-url> <url>https://image.sellper.ru/12349.jpg</url> <description/> </image> <image id="123321"> <original-url>image.png</original-url> <url>https://image.sellper.ru/12349.jpg</url> <description/> </image> </images> </product> <product id="234234" extId="3005"> <category id="3333">Одежда/Мужская/Брюки</category> <name>Брюки мужские B2101</name> <article>W-1014/2002</article> <description>Полное описание товара</description> <created>2009-06-04 14:22:34 +0400</created> <parameters> <parameter name="Торговая марка">Velaner</parameter> <parameter name="Производитель">Россия, ООО "Ромашка"</parameter> <parameter name="Состав">70% хлопок</parameter> <parameter name="Дата производства">2014-02-14</parameter> </parameters> <default-prices> <cost>786</cost> <price>2000</price> <old-price>2400</old-price> </default-prices> <vendor id="10">Chili Technologies S.L.</vendor> <modifications> <modification> <parameter name="Размер">44</parameter> <parameter name="Рост">2</parameter> <barcodes> <barcode>2046495345355</barcode> <barcode>2046345345554</barcode> </barcodes> </modification> <modification> <parameter name="Размер">44</parameter> <parameter name="Рост">3</parameter> <barcodes> <barcode>2046497345345</barcode> </barcodes> </modification> <modification> <parameter name="Размер">46</parameter> <parameter name="Рост">2</parameter> <barcodes/> </modification> </modifications> <images> <image id="1234"> <original-url>image4.png</original-url> <url>https://image.sellper.ru/1259.jpg</url> <description/> </image> <image id="1231"> <original-url>image5.png</original-url> <url>https://image.sellper.ru/123.jpg</url> <description/> </image> </images> </product> </products>
Запрос товарной позиции
Запроc:
GET /admin/products/234234.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <product id="234234" hidden="false" extId="3004"> <category id="3333">Одежда/Мужская/Сорочки</category> <name>Сорочка мужская B101</name> <article>W-101/202</article> <description><p><span style="font-family: 'Times New Roman'; font-size: 16px;"> </span></p></description> <short-description>Тут краткое описание товара</short-description> <created>2009-06-04 14:22:34 +0400</created> <parameters> <parameter name="Торговая марка">Velaner</parameter> <parameter name="Производитель">Россия, ООО "Ромашка"</parameter> <parameter name="Состав">100% хлопок</parameter> <parameter name="Дата производства">2014-02-13</parameter> </parameters> <default-prices> <cost>786</cost> <price>2000</price> <old-price>2400</old-price> </default-prices> <vendor id="10">Chili Technologies S.L.</vendor> <modifications> <modification itemId="60a70f9aeb399bec32500d331bbe4152"> <parameter name="Размер">XS</parameter> <barcodes> <barcode>2046497976600</barcode> <barcode>4602347974121</barcode> </barcodes> </modification> <modification itemId="b78f692708305e860c1068819a74457e"> <parameter name="Размер">S</parameter> <barcodes> <barcode>2046497972345</barcode> </barcodes> </modification> <modification itemId="5bb39ec9322f1a831f6c1d3f7bd883ac"> <parameter name="Размер">M</parameter> <barcodes> <barcode>2046497976600</barcode> </barcodes> </modification> </modifications> <images> <image id="123123"> <original-url>image.png</original-url> <url>https://image.sellper.ru/12349.jpg</url> <description/> </image> <image id="123321"> <original-url>image.png</original-url> <url>https://image.sellper.ru/12349.jpg</url> <description/> </image> </images> </product>
Добавление товара
Запрос:
POST /admin/products.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <product extId="123123123"> <categoryId>202</categoryId> или <category>Одежда/Мужская/Сорочки</category> <name>Сорочка мужская B101</name> <article>W-101/202</article> <description>Полное описание товара</description> <short-description>Краткое описание</short-description> <default-prices> <cost>856</cost> <price>1500</price> <old-price>2000</old-price> </default-prices> <parameters> <parameter name="Торговая марка">Velaner</parameter> <parameter name="Производитель">Россия, ООО "Ромашка"</parameter> <parameter name="Состав">100% хлопок</parameter> <parameter name="Дата производства">2014-02-13</parameter> </parameters> <barcodes><barcode>2055566611122</barcode></barcodes> /* если без модификаций товаров */ <modifications> <modification itemId="03f544613917945245041ea1581df0c2"> <parameter name="Размер">XS</parameter> <barcodes> <barcode>2046497345345</barcode> </barcodes> </modification> <modification itemId="a20695d961021da9ca2faca910b5d7de"> <parameter name="Размер">S</parameter> <barcodes> <barcode>2046497375454</barcode> </barcodes> </modification> <modification itemId="9f36407ead0629fc166f14dde7970f68"> <parameter name="Размер">M</parameter> <barcodes> <barcode>2046498767834</barcode> </barcodes> </modification> </modifications> <images> <image> <original-url>http://site.ru/image1.png</original-url> <description>Вид сбоку</description> </image> <image> <original-url>http://site.ru/image2.png</original-url> <description/> </image> </images> </product>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <product id="234234"> <created>2009-06-04 14:22:34 +0400</created> <category id="3333">Одежда/Мужская/Сорочки</category> <name>Сорочка мужская B101</name> <article>W-101/202</article> <description>Полное описание товара</description> <short-description>Краткое описание</short-description> <parameters> <parameter name="Торговая марка">Velaner</parameter> <parameter name="Производитель">Россия, ООО "Ромашка"</parameter> <parameter name="Состав">100% хлопок</parameter> <parameter name="Дата производства">2014-02-13</parameter> </parameters> <modifications> <modification> <parameter name="Размер">XS</parameter> <barcodes> <barcode>2046497345345</barcode> </barcodes> </modification> <modification> <parameter name="Размер">S</parameter> <barcodes> <barcode>2046497375454</barcode> </barcodes> </modification> <modification> <parameter name="Размер">M</parameter> <barcodes> <barcode>2046498767834</barcode> </barcodes> </modification> </modifications> <images> <image id="123123"> <original-url>http://site.ru/image1.png</original-url> <url>https://image.sellper.ru/12349.png</url> <description>Вид сбоку</description> </image> <image id="123321"> <original-url>http://site.ru/image2.png</original-url> <url>https://image.sellper.ru/12349.png</url> <description/> </image> </images> </product>
В случае, если добавляемый товар с указанным extId уже имеется в списке действующих товаров или в списке удаленных (в корзине), то возвращается ошибка 409 с XML конфликтующего товара. Чтобы отличить удаленный товар от действующего, используйте атрибут deleted=0|1 тега <product/> конфликтующего товара.
Добавление множества товаров
При необходимости добавить в рамках одной транзакции множество товаров, необходимо их передавать в корневом тэге <products> Разрешается создавать в одном запросе не более 300 товаров.
Запрос:
POST /admin/products.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <products> <product>...</product> ... <product>...</product> </products>
Ответ:
HTTP/1.1 200 OK
<products> <product>...</product> ... <product>...</product> </products>
Изменение товара
Запроc:
PUT /admin/products/234234.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <product> <extId>3004</extId> <categoryId>202</categoryId> <name>Сорочка мужская B101</name> <article>W-101/202</article> <description>Полное описание товара</description> <short-description>Краткое описание</short-description> <parameters> <parameter name="Торговая марка">Velaner</parameter> <parameter name="Производитель">Россия, ООО "Ромашка"</parameter> <parameter name="Состав">100% хлопок</parameter> <parameter name="Дата производства">2014-02-13</parameter> </parameters> <modifications> <modification> <parameter name="Размер">XS</parameter> <barcodes> <barcode>2046497345345</barcode> </barcodes> </modification> <modification> <parameter name="Размер">S</parameter> <barcodes/> </modification> <modification> <parameter name="Размер">M</parameter> <barcodes> <barcode>2046498767834</barcode> </barcodes> </modification> </modifications> <images> <image> <original-url>http://site.ru/image1.png</original-url> <description>Вид сбоку</description> </image> <image> <original-url>http://site.ru/image2.png</original-url> <description/> </image> </images> </product>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <product id="234234" extId="3004"> <created>2009-06-04 14:22:34 +0400</created> <category id="3333">Одежда/Мужская/Сорочки</category> <name>Сорочка мужская B101</name> <article>W-101/202</article> <description>Полное описание товара</description> <short-description>Краткое описание</short-description> <parameters> <parameter name="Торговая марка">Velaner</parameter> <parameter name="Производитель">Россия, ООО "Ромашка"</parameter> <parameter name="Состав">100% хлопок</parameter> <parameter name="Дата производства">2014-02-13</parameter> </parameters> <modifications> <modification> <parameter name="Размер">XS</parameter> <barcodes> <barcode>2046497345345</barcode> </barcodes> </modification> <modification> <parameter name="Размер">S</parameter> <barcodes/> </modification> <modification> <parameter name="Размер">M</parameter> <barcodes> <barcode>2046498767834</barcode> </barcodes> </modification> </modifications> <images> <image id="123123"> <original-url>http://site.ru/image1.png</original-url> <url>https://image.sellper.ru/12349.png</url> <description>Вид сбоку</description> </image> <image id="123321"> <original-url>http://site.ru/image2.png</original-url> <url>https://image.sellper.ru/12349.png</url> <description/> </image> </images> </product>
Удаление товара
Запроc:
DELETE /admin/products/12343.xml
Ответ:
HTTP/1.1 200 OK
Метрики
Получение списка метрик
Запроc:
GET /admin/metrics.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <metrics type="array" count="2"> <metric id="555"> <code>order_conversion</code> <name>Процент конверсии в заказы</name> <creation_timestamp>2025-05-01 18:50:33</creation_timestamp> </metric> <metric id="556"> <code>cart_adds</code> <name>Добавлено в корзину</name> <creation_timestamp>2025-05-01 18:50:33</creation_timestamp> </metric> </metrics>
Добавление/Изменение метрик
Запрос:
POST /admin/metrics.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <metrics> <metric> <code>order_conversion</code> <name>Процент конверсии в заказы</name> </metric> <metric> <code>cart_adds</code> <name>Добавлено в корзину</name> </metric> </metrics>
В случае, если метрика с указанным code уже существует, то она будет обновлена, а не создана заново.
Ответ:
HTTP/1.1 200 OK
<metrics> <metric id="555"> <code>order_conversion</code> <name>Процент конверсии в заказы</name> <creation_timestamp>2025-05-01 18:50:33</creation_timestamp> </metric> <metric id="556"> <code>cart_adds</code> <name>Добавлено в корзину</name> <creation_timestamp>2025-05-01 18:50:33</creation_timestamp> </metric> </metrics>
Удаление метрики
Запроc:
DELETE /admin/metrics/555.xml
Ответ:
HTTP/1.1 200 OK
Привязка метрик к товару
Запроc:
POST /admin/product_metric.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <items> <item> <ns>wb</ns> <metric> <code>order_conversion</code> </metric> <product id="1098"/> <date>2025-01-18</date> <value>25</value> </item> <item> <ns>wb</ns> <metric id="556"/> <product id="1098"/> <date>2025-01-18</date> <value>100</value> </item> </items>
В случае, если метрика с указанным code отсутствует, то она будет создана. При этом, можно еще добавить в метрику необязательный тег <name>. Но лучше, для добавления или изменения метрик, пользоваться отдельным запросом.
Отзывы
Список отзывов
Запрос:
GET /admin/feedbacks.xml?parameter=value
Параметры:
- page — номер страницы (с 0)
- page-size — размер страницы, макс. 250
- product-id — фильтр по товару
- rating=1..5 — фильтр по оценке
- unanswered=1 — только без ответа
- answered=1 — только с ответами или с дочерними
- follow-up=1 — только продолженные клиентом цепочки
- action-from, action-to — диапазон по <action-time>
- uniq — поиск по внешнему идентификатору
- marketplace — маркетплейс.
Ответ 200:
<?xml version="1.0" encoding="UTF-8"?> <feedbacks type="array"> <feedback id="124" uniq="fbk-002"> <marketplace>wb</marketplace> <product id="456">Брюки мужские B2101</product> <action-time>2025-09-21 10:00:00+00</action-time> <rating>4</rating> <text>Хорошо, но есть нюансы</text> <answer>Спасибо за обратную связь!</answer> <answer-time>2025-09-21 12:05:00+00</answer-time> <parent/> <created>2025-09-21 10:00:00+00</created> </feedback> </feedbacks>
Получение отзыва
Запрос:
GET /admin/feedbacks/124.xml
Описание: По умолчанию метод возвращает полную цепочку, связанную с указанным отзывом (родители и последующие ответы), в тегах `<feedbacks>`.
Ответ 200:
<?xml version="1.0" encoding="UTF-8"?> <feedback id="124" uniq="fbk-002" parent="110"> <marketplace>wb</marketplace> <product id="456">Брюки мужские B2101</product> <action-time>2025-09-21 10:00:00+00</action-time> <rating>4</rating> <text>Хорошо, но есть нюансы</text> <answer>Спасибо за обратную связь!</answer> <answer-time>2025-09-21 12:05:00+00</answer-time> <created>2025-09-21 10:00:00+00</created> <feedbacks> <feedback id="100"> <marketplace>wb</marketplace> <product id="456"/> <action-time>2025-09-20 08:00:00+00</action-time> <rating>4</rating> <text>Корневой отзыв</text> <parent/> </feedback> <feedback id="110" parent="100"> <marketplace>wb</marketplace> <product id="456"/> <action-time>2025-09-20 18:00:00+00</action-time> <rating>4</rating> <text>Ответ на корневой</text> </feedback> <feedback id="124" parent="110"> <marketplace>wb</marketplace> <product id="456"/> <action-time>2025-09-21 10:00:00+00</action-time> <rating>4</rating> <text>Хорошо, но есть нюансы</text> <answer>Спасибо за обратную связь!</answer> <answer-time>2025-09-21 12:05:00+00</answer-time> </feedback> </feedbacks> </feedback>
Примечания: * Цепочка всегда линейная: у каждого отзыва не более одного дочернего элемента. * Ответ продавца хранится в `<answer>` родительского отзыва (без создания новой записи). Ответ клиента после нашего ответа создаётся как новая запись и возвращается в списке `<feedbacks>`. * Порядок внутри `<feedbacks>` — по времени `action-time` от корня к последним сообщениям.
Добавление отзыва
Запрос:
POST /admin/feedbacks.xml
Описание: * Создаёт новый отзыв. * Допустимо сразу передать ответ продавца полями `<answer>` и (опционально) `<answer-time>` — для импорта исторических данных.
Тело запроса (пример без ответа):
<?xml version="1.0" encoding="UTF-8"?> <feedback uniq="fbk-003"> <marketplace>wb</marketplace> <product>456</product> <rating>5</rating> <text>Отличный товар!</text> </feedback>
Тело запроса (пример с немедленным ответом продавца):
<?xml version="1.0" encoding="UTF-8"?> <feedback uniq="fbk-004"> <marketplace>wb</marketplace> <product>456</product> <rating>4</rating> <text>Товар хороший, но упаковка помялась</text> <answer>Приносим извинения, усилим упаковку</answer> <answer-time>2025-09-21 11:05:00+00</answer-time> </feedback>
Ответ 200:
<?xml version="1.0" encoding="UTF-8"?> <feedback id="126" uniq="fbk-003"> <marketplace>wb</marketplace> <product id="456">Брюки мужские B2101</product> <action-time>2025-09-21 11:00:00+00</action-time> <rating>5</rating> <text>Отличный товар!</text> <answer/> <answer-time/> <parent/> <created>2025-09-21 11:00:00+00</created> </feedback>
Ответ на отзыв
Варианты: 1) Сразу в POST создания — передать `<answer>` / `<answer-time>` (см. выше). 2) Отдельно:
PUT /admin/feedbacks/{id}.xml
Запрос (PUT):
<?xml version="1.0" encoding="UTF-8"?> <feedback> <marketplace>wb</marketplace> <answer>Мы исправили проблему, спасибо за сигнал!</answer> </feedback>
Ответ 200 (PUT):
<?xml version="1.0" encoding="UTF-8"?> <feedback id="124"> <marketplace>wb</marketplace> <answer>Мы исправили проблему, спасибо за сигнал!</answer> <answer-time>2025-09-21 12:30:00+00</answer-time> </feedback>
Ответ клиента (продолжение цепочки)
Запрос:
POST /admin/feedbacks.xml
Описание: * Создаёт новую запись-элемент цепочки с ссылкой на родителя через `<parent>`. * `rating` наследуется от родителя; можно не передавать.
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <feedback uniq="fbk-003-reply"> <marketplace>wb</marketplace> <product>456</product> <parent by="uniq">fbk-003</parent> <text>Нюансы от клиента... (комментарий клиента на наш ответ)</text> </feedback>
Ответ 200:
<?xml version="1.0" encoding="UTF-8"?> <feedback id="222" uniq="fbk-003-reply" parent="124"> <marketplace>wb</marketplace> <product id="456">Брюки мужские B2101</product> <text>Нюансы от клиента... (комментарий клиента на наш ответ)</text> </feedback>
Пакетное добавление/изменение отзывов
Запрос:
POST /admin/feedbacks.xml
Описание: Если корневой тег в теле — `<feedbacks>`, запрос обрабатывается как пакетный (аналогично `POST products.xml`). Каждый `<feedback>` может содержать `uniq`, `product`, `rating`, `text`, опционально `<answer>`/`<answer-time>`, `<parent>`, а также `<marketplace>`. При совпадении `uniq` (в пределах одного `ns`) отзыв ПЕРЕЗАПИСЫВАЕТСЯ (upsert). Конфликта нет. В ответе для каждого элемента возвращается атрибут `«created|updated»`.
Изменение отзыва возможно при указании атрибута uniq.
Тело запроса (batch):
<?xml version="1.0" encoding="UTF-8"?> <feedbacks> <feedback uniq="fbk-005"> <marketplace>wb</marketplace> <product>456</product> <rating>5</rating> <text>Всё супер</text> </feedback> <feedback uniq="fbk-006"> <marketplace>wb</marketplace> <product>456</product> <rating>4</rating> <text>Есть небольшие замечания</text> <answer>Принято, поправим</answer> <answer-time>2025-09-21 13:00:00+00</answer-time> </feedback> <feedback uniq="fbk-006"> <marketplace>wb</marketplace> <product>456</product> <rating>5</rating> <text>Перезапись fbk-006</text> </feedback> </feedbacks>
Ответ:
HTTP/1.1 200 OK
<feedbacks> <feedback>...</feedback> ... <feedback>...</feedback> </feedbacks>
Изменение отзыва
Запрос:
PUT /admin/feedbacks/124.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <feedback> <marketplace>wb</marketplace> <answer>Мы исправили проблему, спасибо за сигнал!</answer> </feedback>
Ответ 200:
<?xml version="1.0" encoding="UTF-8"?> <feedback id="124"> <marketplace>wb</marketplace> <answer>Мы исправили проблему, спасибо за сигнал!</answer> <answer-time>2025-09-21 12:30:00+00</answer-time> </feedback>
Удаление отзыва
Запрос:
DELETE /admin/feedbacks/124.xml
Для массового удаления отзывов передайте список id-отзывов через запятую в GET-параметр `ids`:
DELETE /admin/feedbacks.xml?ids=124,567,890
Для удаления отзывов по uniq передайте их через запятую в GET-параметр `uniqs`::
DELETE /admin/feedbacks.xml?uniqs=fbk-1,fbk-2-200
Ответ:
HTTP/1.1 200 OK
Клиенты
Получение списка клиентов
Запроc:
GET /admin/clients.xml?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся позиции.
- page-size - размер страницы (количество клиентов на странице). По-умолчанию и не может превышать 250.
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <clients type="array"> <client id="167"> <name>Иванов Иван Иванович</name> <created>2013-08-25 20:32:08+04</created> <phone>+79115554126</phone> <card>26323</card> <discount>5</discount> <address>ул.Ленина д.5</address> <email>ivanov@mail.ru</email> <comment/> <birthday>1996-01-25</birthday> </client> <client id="185"> <name>Сидоров Сидр Сидорович</name> <created>2013-09-24 12:05:20+04</created> <phone>+79125550252</phone> <card>27652</card> <discount>5</discount> <address/> <email>sidr@yandex.ru</email> <comment/> <birthday/> </client> </clients>
Получение параметров клиента
Запрос:
GET /admin/clients/167.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <client id="167"> <type>person</type> <name>Иванов Иван Иванович</name> <created>2013-08-25 20:32:08+04</created> <phone>+79115554126</phone> <card>26323</card> <discount>5</discount> <start-sales-sum>2000</start-sales-sum> <address>ул.Ленина д.5</address> <email>ivanov@mail.ru</email> <comment/> <sex>1</sex> <birthday>1996-01-25</birthday> </client>
Добавление клиента
Запрос:
POST /admin/clients.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <client> <name>Иванов Иван Иванович</name> <phone>+79115554126</phone> <card>26323</card> <discount>5</discount> <address>ул.Ленина д.5</address> <email>ivanov@mail.ru</email> <comment/> <birthday>1996-01-25</birthday> </client>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <client id="167"> <name>Иванов Иван Иванович</name> <created>2013-08-25 20:32:08+04</created> <phone>+79115554126</phone> <card>26323</card> <discount>5</discount> <address>ул.Ленина д.5</address> <email>ivanov@mail.ru</email> <comment/> <birthday>1996-01-25</birthday> </client>
Изменение клиента
Запрос:
PUT /admin/clients/167.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <client> <name>Иванов Иван Иванович</name> <phone>+79115554126</phone> <card>26323</card> <discount>5</discount> <address>ул.Ленина д.5</address> <email>ivanov@mail.ru</email> <comment/> <birthday>1996-01-25</birthday> </client>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <client id="167"> <name>Иванов Иван Иванович</name> <created>2013-08-25 20:32:08+04</created> <phone>+79115554126</phone> <card>26323</card> <discount>5</discount> <address>ул.Ленина д.5</address> <email>ivanov@mail.ru</email> <comment/> <birthday>1996-01-25</birthday> </client>
Удаление клиента
Запроc:
DELETE /admin/clients/234.xml
Ответ:
HTTP/1.1 200 OK
Пользователи
Получение списка пользователей
Запроc:
GET /admin/users.xml?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся позиции.
- page-size - размер страницы (количество пользователей на странице). По-умолчанию и не может превышать 250.
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <users type="array"> <user id="1"> <name>Наталья Иванова</name> <created>2013-08-25 20:32:08+04</created> <phone>+79115554126</phone> <email>ivanov@mail.ru</email> </user> <user id="2"> <name>Марина Петрова</name> <created>2013-09-24 12:05:20+04</created> <phone>+79125550252</phone> <email>sidr@yandex.ru</email> </user> </users>
Добавление пользователя
Запроc:
POST /admin/users.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <user> <first_name>Мария</first_name> <login>Мария</login> <password>md5(явный_пароль)</password> </user>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <shop id="3"> <name>Новый магазин</name> <created type="timestamp">2012-01-01 01:01:01 +0400</created> </category>
Получение параметров пользователя
Запрос:
GET /admin/users/1.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <user id="1"> <name>Наталья Иванова</name> <created>2013-08-25 20:32:08+04</created> <phone>+79115554126</phone> <email>ivanov@mail.ru</email> </user>
Заказы
Список заказов
Запрос:
GET /admin/orders.xml?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся заказы.
- page-size - размер страницы (количество заказов на странице). По-умолчанию и не может превышать 250.
- id - список идентификаторов заказов, перечисленных через запятую без пробелов
- products=detail - развернутые теги <product>
- only-ids - получить только id заказов
- show-barcodes - признак наличия штрих-кодов в ответе
- created-before=Y-m-d - ограничить период создания справа
- created-after=Y-m-d - ограничить период создания слева
- shop-id=id1,id2…. - фильтр по магазинам
- notFinished=0|1 - фильтр по незаконченным заказа (все статусы, кроме 'declined', 'delivered')
- finished=0|1 - фильтр по законченным заказа (только статусы 'declined', 'delivered')
В ответе присутствует информация о резерве, если заказ еще не отправлен:
<reserved-percent type="integer">73</reserved-percent> - показывает процент реального наполнения товаром по заказу <reserved-all>0</reserved-all> - означает признак полного резервированная (заказ можно отправлять клиенту) <reserve id="21153">Резерв по заказу №16</reserve> - краткую информацию о резерве. Для получения полной информации по резерву необходимо выполнить соответствующий запрос admin/reserves/16.xml
Атрибут hidden является признаком скрытого заказа. Скрытые заказы исключаются из аналитики по заказам. По-умолчанию, все заказы не являются скрытыми.
Чтобы указать признак скрытности заказа, нужно указать соответствующий атрибут (hidden=«0|1») в теге order метода POST или PUT.
Ответ:
<orders type="array"> <order id="16" hidden="0"> <shop id="1">Магазин "Ромашка"</shop> <number>10003</number> <client id="148"> <name>Сидоров Сидр Сергеевич</name> <created>2013-08-15 20:05:41+04</created> <phone>+79215454545</phone> <card>26725</card> <discount>5</discount> <address>ул. Сидорова 55 кв.44</address> <email>sidr@mail.ru</email> <comment/> <birthday>1984-12-23</birthday> </client> <created>2014-06-26 21:44:27+04</created> <status>new</status> <summa>3360.15</summa> <delivery-type id="4">Курьером</delivery-type> <delivery-cost>300.15</delivery-cost> <delivery-address>на деревню дедушке</delivery-address> <delivery-begin-time/> <delivery-end-time>2012-12-12 00:00:00+04</delivery-end-time> <pay-time/> <pay-type>Наличными</pay-type> <comment>оплачено 1000р осталось 2360,15р.</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056" ext="4334"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>0</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <price>400</price> <discount>70</discount> <quantity>2</quantity> </item> </items> <reserved-percent type="integer">73</reserved-percent> <reserved-all>0</reserved-all> <reserve id="21153">Резерв по заказу №16</reserve> </order> </orders>
Информация о заказе
Запрос:
GET /admin/orders/16.xml?parameter=value
Параметры:
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
В ответе присутствует информация о резерве, если заказ еще не отправлен:
<reserved-percent type="integer">73</reserved-percent> - показывает процент реального наполнения товаром по заказу <reserved-all>0</reserved-all> - означает признак полного резервированная (заказ можно отправлять клиенту) <reserve id="21153">Резерв по заказу №16</reserve> - краткую информацию о резерве.
Для получения полной информации по резерву необходимо выполнить соответствующий запрос admin/reserves/16.xml
Ответ:
<order id="16"> <shop id="1">Магазин "Ромашка"</shop> <number>10003</number> <client id="148"> <name>Сидоров Сидр Сергеевич</name> <created>2013-08-15 20:05:41+04</created> <phone>+79215454545</phone> <card>26725</card> <discount>5</discount> <address>ул. Сидорова 55 кв.44</address> <email>sidr@mail.ru</email> <comment/> <birthday>1984-12-23</birthday> </client> <created>2014-06-26 21:44:27+04</created> <status>new</status> <dispatch-required-time/> <summa>3360.15</summa> <delivery-type id="4">Курьером</delivery-type> <delivery-cost>300.15</delivery-cost> <delivery-address>на деревню дедушке</delivery-address> <delivery-begin-time/> <delivery-end-time>2012-12-12 00:00:00+04</delivery-end-time> <pay-time/> <pay-type>Наличными</pay-type> <comment>оплачено 1000р осталось 2360,15р.</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056" ext="4333"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>0</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <price>400</price> <discount>70</discount> <quantity>2</quantity> </item> </items> <reserved-percent type="integer">73</reserved-percent> <reserved-all>0</reserved-all> <reserve id="21153">Резерв по заказу №16</reserve> </order>
Изменение заказа
Запрос:
PUT /admin/orders/16.xml
При указании тега <reserved-all>1</reserved-all> система попытается зарезервировать полностью товар для заказа. Если это не удается, то возвращается ошибка.
Тело запроса:
<order> <number>10003</number> <client>148</client> <dispatch-required-time/> <status>accepted</status> <delivery-type>Курьером</delivery-type> <delivery-cost>300.15</delivery-cost> <delivery-address>на деревню дедушке</delivery-address> <delivery-begin-time/> <delivery-end-time>2012-12-12 00:00:00+04</delivery-end-time> <pay-time/> <pay-type>Наличными</pay-type> <comment>заказ изменен</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product>2557</product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Зеленый</parameter> </modification> <price>400</price> <discount>70</discount> <quantity>5</quantity> </item> </items> <reserved-all>1</reserved-all> </order>
Ответ:
<order id="16"> <shop>1</shop> <number>10003</number> <client id="148"> <name>Сидоров Сидр Сергеевич</name> <created>2013-08-15 20:05:41+04</created> <phone>+79215454545</phone> <card>26725</card> <discount>5</discount> <address>ул. Сидорова 55 кв.44</address> <email>sidr@mail.ru</email> <comment/> <birthday>1984-12-23</birthday> </client> <created>2014-06-26 21:44:27+04</created> <status>new</status> <dispatch-required-time/> <summa>1960.15</summa> <delivery-type id="4">Курьером</delivery-type> <delivery-cost>300.15</delivery-cost> <delivery-address>на деревню дедушке</delivery-address> <delivery-begin-time/> <delivery-end-time>2012-12-12 00:00:00+04</delivery-end-time> <pay-time/> <pay-type>Наличными</pay-type> <comment>заказ изменен</comment> <items type="array"> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557" ext="4334"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <price>400</price> <discount>70</discount> <quantity>5</quantity> </item> </items> <reserved-percent type="integer">100</reserved-percent> <reserved-all>1</reserved-all> <reserve id="21153">Резерв по заказу №16</reserve> </order>
Добавление заказа
Запрос:
POST /admin/orders.xml
Товарную позицию можно идентифицировать 3-мя способами перечисленными в разделе добавления поступления.
- independent-purchase: является значением по-умолчанию и указывает, что при создании заказа необходимо выполнить поступление соответствующего товара на склад, в результате чего товар в свободном остатке не изменится.
- reserve: зарезервировать товар из свободного остатка под заказ.
- find-impersonal-reserve: указывает, что прежде чем пытаться резервировать товар под заказ, сначала пытаться найти ранее сформированный резерв, соответствующий этому заказу.
- all: указывает, что пользователь не может менять статус во всех случаях.
- перечисленные через запятую статусы: указывает, что пользователь не может менять статус только тем заказам, статус которых указан в перечислении.
Тело запроса:
<order ns="ozon"> <shop>1</shop> <number>10150</number> <creation-time>2023-01-22 00:00:00+04</creation-time> <status>packing</status> <status-time>2023-01-23 00:00:00+04</status-time> <client>238</client> <dispatch-required-time/> <delivery-type id="8">Самовывоз</delivery-type> <delivery-cost>500</delivery-cost> <delivery-address>на деревню бабушке</delivery-address> <delivery-begin-time/> <delivery-end-time>2023-01-25 00:00:00+04</delivery-end-time> <pay-time/> <pay-type>Наличными</pay-type> <comment>новый супер заказ</comment> <items type="array"> <item> /* запись по id товара и модификации без кода позиции */ <product>6557</product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <price>300</price> <discount>60</discount> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> /* запись по коду позиции */ <price>1300</price> <discount>0</discount> <quantity>2</quantity> </item> </items> <reserved-all>1</reserved-all> </order>
Ответ:
<order id="26" ns="ozon"> <shop>1</shop> <number>10150</number> <client id="238"> <name>Иванов Иван Сергеевич</name> <created>2013-03-25 10:05:31+04</created> <phone>+79291212121</phone> <card>3425</card> <discount>3</discount> <address>ул. Иванова 55 кв.44</address> <email>ivan@mail.ru</email> <comment/> <birthday>1904-10-23</birthday> </client> <created>2012-06-26 21:44:27+04</created> <dispatch-required-time/> <status>new</status> <summa>3140</summa> <delivery-type id="8">Самовывоз</delivery-type> <delivery-cost>500</delivery-cost> <delivery-address>на деревню бабушке</delivery-address> <delivery-begin-time/> <delivery-end-time>2013-12-12 00:00:00+04</delivery-end-time> <pay-time/> <pay-type>Наличными</pay-type> <comment>новый супер заказ</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="6557"> <name>Носки б-355</name> <article>б-355</article> <category id="54">Носки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images/> <created>2013-01-16 02:06:10+04</created> </product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <price>300</price> <discount>60</discount> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="67"> <name>Табурет</name> <article>2125м</article> <category id="58">Мебель</category> <parameters> <parameter name="Цвет">Красный</parameter> </parameters> <images/> <created>2013-06-24 22:06:10+04</created> </product> <modification/> <price>1300</price> <discount>0</discount> <quantity>2</quantity> </item> </items> <reserved-percent type="integer">100</reserved-percent> <reserved-all>1</reserved-all> <reserve id="21153">Резерв по заказу №16</reserve> </order>
Удаление заказа
Запрос:
DELETE /admin/orders/16.xml
Ответ:
HTTP/1.1 200 OK
Список статусов заказов
Запрос:
GET /admin/orders-statuses.xml
Ответ:
<orders-statuses type="array"> <status id="new">Новый</status> <status id="accepted">В обработке</status> <status id="approved">Согласован</status> <status id="packing">На комплектации</status> <status id="packed">Готов к отправке</status> <status id="dispatched">Отправлен</status> <status id="delivered">Выполнен</status> <status id="declined">Отменен</status> </orders-statuses>
Список типов оплаты
Запрос:
GET /admin/pay-types.xml
Ответ:
<pay-types type="array"> <pay-type id="bn">Безналичный расчет</pay-type> <pay-type id="cash">Наличными</pay-type> </pay-types>
Список типов доставки
Запрос:
GET /admin/delivery-types.xml
Ответ:
<delivery-types type="array"> <delivery-type id="1">Доставка курьером в черте города</delivery-type> <delivery-type id="2">Самовывоз</delivery-type> </delivery-types>
Продажи
Список продаж
Запрос:
GET /admin/sales.xml?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся продажи.
- page-size - размер страницы (количество продаж на странице). По-умолчанию и не может превышать 250.
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<sales type="array"> <sale id="16"> <shop id="1">Ромашка</shop> <store id="1">Склад "Ромашка"</store> <client id="148">Сидоров Сидр Сергеевич</client> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <summa>3360.15</summa> <cash>3360.15</cash> <comment>оплачено наличными</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>0</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <price>400</price> <discount>70</discount> <quantity>2</quantity> </item> </items> </sale> </sales>
Информация о продаже
Запрос:
GET /admin/sales/16.xml
Параметры:
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<sale id="16"> <shop id="1">Ромашка</shop> <store id="1">Склад "Ромашка"</store> <client id="148">Сидоров Сидр Сергеевич</client> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <summa>3360.15</summa> <cash>3360.15</cash> <comment>оплачено наличными</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>0</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <price>400</price> <discount>70</discount> <quantity>2</quantity> </item> </items> </sale>
Добавление продажи
Запрос:
POST /admin/sales.xml
Каждая товарная позиция может быть идентифицирована как уникальным атрибутом <item id='…'>, полученным ранее, так и тегом <product> с тегом модификации, при необходимости. Атрибут <item id='…'> считается более приоритетным над тегами <product> + <modification>
- independent-purchase: является значением по-умолчанию и указывает на необходимо выполнить поступление товара на склад перед его продажей, чтобы значение свободного остатка не изменилось.
- reserve: зарезервировать товар из свободного остатка под продажу.
- find-impersonal-reserve: указывает, что прежде чем пытаться резервировать товар под продажу, сначала пытаться найти ранее сформированный резерв, соответствующий этой продаже.
- reserve: зарезервировать товар из свободного остатка под заказ.
Тело запроса:
<sale uuid="8d2a202e-4d6b-4d3c-9813-6728dc29baa6"> <shop>1</shop> <fin_doc_number>1001240016</fin_doc_number> <client>238</client> <user>23</user> <seller>24</seller> <action-time>2018-10-20 10:36:00</action-time> <cash>500</cash> <comment>новая супер продажа</comment> <items type="array"> <item> <product>6557</product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <price>300</price> <discount>60</discount> <quantity>1</quantity> </item> <item> <product>67</product> <modification/> <price>1300</price> <discount>0</discount> <quantity>2</quantity> </item> </items> </sale>
Ответ:
<sale id="26768"> <shop>1</shop> <fin_doc_number>1001240016</fin_doc_number> <user id="23"> <name>Иванова Лариса</name> </user> <client id="238"> <name>Иванов Иван Сергеевич</name> <created>2013-03-25 10:05:31+04</created> <phone>+79291212121</phone> <card>3425</card> <discount>3</discount> <address>ул. Иванова 55 кв.44</address> <email>ivan@mail.ru</email> <comment/> <birthday>1904-10-23</birthday> </client> <created>2012-06-26 21:44:27+04</created> <summa>2840</summa> <cash>500</cash> <comment>новая супер продажа</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="6557"> <name>Носки б-355</name> <article>б-355</article> <category id="54">Носки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images/> <created>2013-01-16 02:06:10+04</created> </product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <price>300</price> <discount>60</discount> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="67"> <name>Табурет</name> <article>2125м</article> <category id="58">Мебель</category> <parameters> <parameter name="Цвет">Красный</parameter> </parameters> <images/> <created>2013-06-24 22:06:10+04</created> </product> <modification/> <price>1300</price> <discount>0</discount> <quantity>2</quantity> </item> </items> </sale>
Отмена продажи
Запрос:
DELETE /admin/sales/16.xml
Ответ:
HTTP/1.1 200 OK
Возвраты от клиентов
Список возвратов от клиентов
Запрос:
GET /admin/refunds.xml?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся возвраты.
- page-size - размер страницы (количество возвратов на странице). По-умолчанию и не может превышать 250.
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<refunds type="array"> <refund id="16"> <saleId>35623</saleId> <shop id="1">Ромашка</shop> <store id="1">Склад "Ромашка"</store> <client id="148">Сидоров Сидр Сергеевич</client> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <summa>2300</summa> <cash>0</cash> <comment>возвращено по безналу</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> </product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>100</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> </items> </refund> </refunds>
Информация о возврате
Запрос:
GET /admin/refunds/16.xml
Параметры:
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<refund id="16"> <saleId>35623</saleId> <shop id="1">Ромашка</shop> <store id="1">Склад "Ромашка"</store> <client id="148">Сидоров Сидр Сергеевич</client> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <summa>2300</summa> <cash>0</cash> <comment>возвращено по безналу</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> </product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>100</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> </items> </refund>
Добавление возврата
Запрос:
POST /admin/refunds.xml
- reserve: указывает, что при создании возврата необходимо вернуть товар в резерв на склад, в результате чего товар в свободном остатке не изменится.
- default: является значением по-умолчанию и указывает на необходимо вернуть товар в свободный остаток склада.
Тело запроса:
<refund> <fin_doc_number>1001240017</fin_doc_number> <sale>35623</sale> <user>23</user> <cash>500</cash> <comment>возврат брака</comment> <items type="array"> <item> <product>6557</product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <price>300</price> <discount>60</discount> <quantity>1</quantity> </item> <item> <product>67</product> <modification/> <price>1300</price> <discount>0</discount> <quantity>2</quantity> </item> </items> </refund>
Ответ:
<refund id="16"> <fin_doc_number>1001240017</fin_doc_number> <saleId>35623</saleId> <user id="23"></user> <shop id="1">Ромашка</shop> <store id="1">Склад "Ромашка"</store> <client id="148">Сидоров Сидр Сергеевич</client> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <summa>2300</summa> <cash>500</cash> <comment>возвращено по безналу</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056">Рубашка Апельсин 33549 в полоску</product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>100</discount> <quantity>1</quantity> </item> </items> </refund>
Так же имеется возможность выполнить возврат сразу всей продаже целиком, просто указав ее id или uuid. Например:
<refund> <action-time>2014-06-26 21:44:27+04</action-time> <sale>35623</sale> </refund>
или
<refund> <action-time>2014-06-26 21:44:27+04</action-time> <sale uuid="8d2a202e-4d6b-4d3c-9813-6728dc29baa6"/> </refund>
Отмена возврата
Запрос:
DELETE /admin/refunds/16.xml
Ответ:
HTTP/1.1 200 OK
Поступления и закупки от поставщиков
Закупка от поставщика отличается от обычного поступления только наличием тега <vendor>. Тег <cost> определяет суммарную закупочную стоимость всех позиций поступления.
Список поступлений
Запрос:
GET /admin/purchases.xml
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся поступления.
- page-size - размер страницы (количество поступлений на странице). По-умолчанию и не может превышать 250.
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<purchases type="array"> <purchase id="16"> <store id="1">Склад "Ромашка"</store> <vendor id="22">ИП "Иванов И.И."</vendor> <user id="23">Иванов Андрей</user> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <cost>3200</cost> <currency>RUB</currency> <rate>1</rate> <quantity>3</quantity> <comment>возврат брака</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>2</quantity> </item> </items> </purchase> </purchases>
Информация о поступлении
Запрос:
GET /admin/purchases/16.xml
Параметры:
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<purchase id="16"> <store id="1">Склад "Ромашка"</store> <vendor id="22">ИП "Иванов И.И."</vendor> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <cost>3200</cost> <currency>RUB</currency> <rate>1</rate> <quantity>3</quantity> <comment>возврат брака</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>2</quantity> </item> </items> </purchase>
Добавление поступления
Запрос:
POST /admin/purchases.xml
Закупка от поставщика отличается от обычного поступления только наличием тега <vendor>. Тег <cost> определяет закупочную стоимость позиций поступления/возврата.
Тег <currency> определяет валюту текущего поступления. Одно из значений (RUB, USD, EUR, BYN, KZT, UAH).
Тег <rate> определяет курс указанной валюты для текущего поступления.
Товарную позицию можно идентифицировать 3-мя способами (в порядке приоритета):
- явно передать id товарной позиции (атрибут id тега item)
- явно передать ШК товарной позиции (атрибут barcode тега item)
- передать id карточки товара (тег product) + модификацию (тег modification)
Необязательный тег <price> и <discount> позволяют явно задать конкретные отпускные цены. В этом случае срабатывает правило: проставляем указанные цены всему свободному остатку (единая цена на артикул). И, наоборот, если не указывать тег <price>, то берем цены из свободного остатка.
Тело запроса:
<purchase> <store>1</store> <vendor>22</vendor> <user>23</user> <action-time>2020-06-26 21:53</action-time> <comment>новое супер-поступление</comment> <currency>RUB</currency> <rate>1</rate> <items> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product>1056</product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product>2557</product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <quantity>2</quantity> </item> </items> </purchase>
Ответ:
<purchase id="116"> <store id="1">Склад "Ромашка"</store> <vendor id="22">ИП "Иванов И.И."</vendor> <user id="23">Иванов Андрей</user> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <cost>3200</cost> <currency>RUB</currency> <rate>1</rate> <quantity>3</quantity> <comment>возврат брака</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>2</quantity> </item> </items> </purchase>
Изменение поступления
Если поступление еще не проведено (планируемое поступление), то в нем можно менять все.
Если поступление проведено (находится в архиве), то изменить в нем можно все, кроме склада и количества.
Запрос:
PUT /admin/purchases/116.xml
Тело запроса:
<purchase> <store>1</store> <vendor>22</vendor> <user>23</user> <action-time>2020-06-26 21:53</action-time> <comment>новое супер-поступление</comment> <currency>RUB</currency> <rate>1</rate> <items> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product>1056</product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product>2557</product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <quantity>2</quantity> </item> </items> </purchase>
Ответ: Аналогичен, ответу на добавление поступления.
Удаление поступления
Запрос:
DELETE /admin/purchases/116.xml
Ответ:
HTTP/1.1 200
<?xml version="1.0"?> <purchase id="8284"> <store id="1">2-oй Муринский пр. 38</store> <vendor id="3">жанна произвдство</vendor> <created>2022-01-29 17:29:07+03</created> <action-time/> <cost>0</cost> <currency>RUB</currency> <rate>1.00</rate> <quantity>20</quantity> <comment>новое супер-поступление</comment> <items type="array" count="1"> <item id="93a47e2f8219b9304ae61eb25496c7fe"> <product id="48">Халат жен. 215(сатори)</product> <modification> <parameter name="size">40</parameter> <parameter name="colour-sleeve">белый-2</parameter> </modification> <cost>111</cost> <rate>77</rate> <cost_nat>8547</cost_nat> <price>3990</price> <discount>1000</discount> <quantity>20</quantity> </item> </items> </purchase>
Перемещения
Список перемещений
Запрос:
GET /admin/migrations.xml?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся перемещения.
- page-size - размер страницы (количество перемещений на странице). По-умолчанию и не может превышать 250.
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<migrations type="array"> <migration id="16"> <store_from id="1">Склад "Ромашка"</store> <store_to id="2">Главный склад</store> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <cost>3360.15</cost> <quantity>3</quantity> <comment>оплачено наличными</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>0</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <price>400</price> <discount>70</discount> <quantity>2</quantity> </item> </items> </migration> </migrations>
Информация о перемещении
Запрос:
GET /admin/migrations/16.xml
Параметры:
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<migration id="16"> <store_from id="1">Склад "Ромашка"</store> <store_to id="2">Главный склад</store> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <cost>3360.15</cost> <comment>оплачено наличными</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>0</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <price>400</price> <discount>70</discount> <quantity>2</quantity> </item> </items> </migration>
Добавление перемещения
Запрос:
POST /admin/migrations.xml
Тело запроса:
<migration> <store_from>1</store_from> <store_to>2</store_to> <user>23</user> <comment>новое супер-перемещение</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product>6557</product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product>67</product> <modification/> <quantity>2</quantity> </item> </items> </migration>
Ответ:
<migration id="116"> <store_from>1</store_from> <store_to>2</store_to> <user id="23">Иванова Лариса</user> <created>2012-06-26 21:44:27+04</created> <cost>2840</cost> <comment>новое супер-перемещение</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="6557"> <name>Носки б-355</name> <article>б-355</article> <category id="54">Носки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images/> <created>2013-01-16 02:06:10+04</created> </product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <price>300</price> <discount>60</discount> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="67"> <name>Табурет</name> <article>2125м</article> <category id="58">Мебель</category> <parameters> <parameter name="Цвет">Красный</parameter> </parameters> <images/> <created>2013-06-24 22:06:10+04</created> </product> <modification/> <price>1300</price> <discount>0</discount> <quantity>2</quantity> </item> </items> </migration>
Отмена перемещения
Запрос:
DELETE /admin/migrations/116.xml
Ответ:
HTTP/1.1 200 OK
Списания и возвраты поставщикам
Возврат поставщику отличается от обычного списания только наличием тега <vendor>. Тег <cost> определяет закупочную стоимость списания и его позиций.
Список списаний
Запрос:
GET /admin/restores.xml
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся списания.
- page-size - размер страницы (количество списаний на странице). По-умолчанию и не может превышать 250.
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<restores type="array"> <restore id="16"> <store id="1">Склад "Ромашка"</store> <vendor id="22">ИП "Иванов И.И."</vendor> <user id="23">Иванов Андрей</user> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <cost>3200</cost> <quantity>3</quantity> <comment>возврат брака</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>2</quantity> </item> </items> </restore> </restores>
Информация о списании
Запрос:
GET /admin/restores/16.xml
Параметры:
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<restore id="16"> <store id="1">Склад "Ромашка"</store> <vendor id="22">ИП "Иванов И.И."</vendor> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <cost>3200</cost> <quantity>3</quantity> <comment>возврат брака</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>2</quantity> </item> </items> </restore>
Добавление списания
Запрос:
POST /admin/restores.xml
Возврат поставщику отличается от обычного списания только наличием тега <vendor>. Тег <cost> определяет закупочную стоимость позиций списания/возврата.
Товарную позицию можно идентифицировать 3-мя способами перечисленными в разделе добавления поступления.
Тело запроса:
<restore> <store>1</store> <vendor>22</vendor> <user>23</user> <comment>новое супер-списание</comment> <items> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product>1056</product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product>2557</product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>2</quantity> </item> </items> </restore>
Ответ:
<restore id="116"> <store id="1">Склад "Ромашка"</store> <vendor id="22">ИП "Иванов И.И."</vendor> <user id="23">Иванов Андрей</user> <created>2014-06-26 21:44:27+04</created> <action-time>2014-06-26 21:44:27+04</action-time> <cost>3200</cost> <quantity>3</quantity> <comment>возврат брака</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056"> <name>Рубашка Апельсин 33549 в полоску</name> <article>33549</article> <category id="3">Рубашка</category> <parameters> <parameter name="Торговая марка">Апельсин</parameter> <parameter name="Производитель">Китай</parameter> </parameters> <images> <image id="1037"> <original-url>u2ccsAso5FM.jpg</original-url> <url>https://demo.sellper.ru/?image=1037</url> <description>Вид сверху</description> </image> </images> <created>2013-02-26 20:15:00+04</created> </product> <modification> <parameter name="Размер">40</parameter> </modification> <cost>2400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>1</quantity> </item> <item id="010ef0a8841bd2490a7e39a474cfed03"> <product id="2557"> <name>Чулки а-355</name> <article>а-355</article> <category id="76">Чулки</category> <parameters> <parameter name="Торговая марка">Колобок</parameter> <parameter name="Производитель">Россия</parameter> </parameters> <images> <image id="1037"> <original-url>chulki-355.jpg</original-url> <url>https://demo.sellper.ru/?image=3455</url> <description/> </image> </images> <created>2013-06-16 22:16:00+04</created> </product> <modification> <parameter name="Рост">30</parameter> <parameter name="Цвет">Красный</parameter> </modification> <cost>400</cost> <currency>RUB</currency> <rate>1</rate> <quantity>2</quantity> </item> </items> </restore>
Отмена списания
Запрос:
DELETE /admin/restores/116.xml
Ответ:
HTTP/1.1 200 OK
Резервы
Список резервов
Запрос:
GET /admin/reserves.xml?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончатся резервы.
- page-size - размер страницы (количество резервов на странице). По-умолчанию и не может превышать 250.
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
- type - тип(назначение) резерва: migration|reject|order|other
Ответ:
<reserves type="array"> <reserve id="16"> <type>migration</type> <status>new</status> <name>Мой резерв</name> <store id="1">Склад "Ромашка"</store> <store_to id="2">Склад "Второй"</store_to> <vendor id="2">ООО "Поставщик 1"</vendor> <order id="1001">100023</order> <client id="148">Сидоров Сидр Сергеевич</client> <created>2014-06-26 21:44:27+04</created> <comment>возвращено по безналу</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056">Рубашка Апельсин 33549 в полоску</product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>100</discount> <quantity>1</quantity> </item> <barcodes> <barcode>2032914541315</barcode> </barcodes> </items> </reserve> </reserves>
Информация о резерве
Запрос:
GET /admin/reserves/16.xml
Параметры:
- products=detail - развернутые теги <product>
- show-barcodes - признак наличия штрих-кодов в ответе
Ответ:
<reserve id="16"> <type>migration</type> <status>new</status> <name>Мой резерв</name> <store id="1">Склад "Ромашка"</store> <store_to id="2">Склад "Второй"</store_to> <vendor id="2">ООО "Поставщик 1"</vendor> <order id="1001">100023</order> <client id="148">Сидоров Сидр Сергеевич</client> <created>2014-06-26 21:44:27+04</created> <comment>возвращено по безналу</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056">Рубашка Апельсин 33549 в полоску</product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>100</discount> <quantity>1</quantity> <barcodes> <barcode>2032914541315</barcode> </barcodes> </item> </items> </reserve>
Создание резерва
Запрос:
POST /admin/reserves.xml
Тело запроса:
<reserve> <store>1</store> <type>migration</type> /* 'migration', 'restore', 'reject' */ <store_to>2</store_to> /* идентификатор склада-приемника */ <name>Мой резерв</name> <comment>произвольный коментарий…</comment> <items> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product>1056</product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <price>2400</price> <discount>100</discount> <quantity>1</quantity> </item> </items> </reserve>
Ответ:
<reserve id="16"> <type>other</type> <status>new</status> <name>Мой резерв</name> <store id="1">Склад "Ромашка"</store> <created>2014-06-26 21:44:27+04</created> <comment>возвращено по безналу</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056">Рубашка Апельсин 33549 в полоску</product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>100</discount> <quantity>1</quantity> </item> </items> </reserve>
Изменение резерва
Запрос:
PUT /admin/reserves/16.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <reserve> <items> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product>1056</product> <modification> <parameter name="Цвет">Синий</parameter> </modification> <quantity>2</quantity> </item> </items> </reserve>
Ответ:
<reserve id="16"> <type>other</type> <status>new</status> <name>Мой резерв</name> <store id="1">Склад "Ромашка"</store> <created>2014-06-26 21:44:27+04</created> <comment>возвращено по безналу</comment> <items type="array"> <item id="86e03fab6db4c6d9cf33e616622b6c45"> <product id="1056">Рубашка Апельсин 33549 в полоску</product> <modification> <parameter name="Размер">40</parameter> </modification> <price>2400</price> <discount>100</discount> <quantity>2</quantity> </item> </items> </reserve>
Удаление(расформирование) резерва
Запрос:
DELETE /admin/reserves/16.xml
Ответ:
HTTP/1.1 200 OK
Расходы и доходы
Получение списка расходов/доходов
Запроc:
GET /admin/expenditures?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончится список.
- page-size - размер страницы (количество позиций на странице). По-умолчанию равен и не может превышать 250.
- expense - признак расходов (указывается без значения).
- income - признак доходов (указывается без значения).
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <expenditures type="array"> <expenditure id="1"> <budget id="3" class="retail">Из кассы</budget> <expense>1</expense> <employee id="22">Иванов Иван Иванович</employee> <shop id="2">Магазин "Ромашка"</shop> <value>200</value> <comment>такси</comment> <cash>1</cash> <action>2013-09-24 12:05:20+04</action> </expenditure> <expenditure id="1"> <budget id="4" class="retail">В кассу</budget> <income>1</income> <employee id="22">Иванов Иван Иванович</employee> <shop id="2">Магазин "Ромашка"</shop> <value>500</value> <comment>за опоздание</comment> <cash>1</cash> <action>2013-09-24 13:05:20+04</action> </expenditure> </expenditures>
Теги: - cash - признак наличных денег - employee - необязательный тег, привязка расхода к конкретному сотруднику (записать за сотрудником) - shop - необязательный тег, привязка расхода к конкретному магазину (записать за магазином) - expense - признак расхода - income - признак дохода
Получение параметров расхода/дохода
Запрос:
GET /admin/expenditures/2.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <expenditure id="2"> <budget id="3" class="retail">Из кассы</budget> <expense>1</expense> <employee id="22">Иванов Иван Иванович</employee> <shop id="2">Магазин "Ромашка"</shop> <value>200</value> <comment>такси</comment> <cash>1</cash> <action>2013-09-24 12:05:20+04</action> </expenditure>
Добавление расхода/дохода
Запрос:
POST /admin/expenditures.xml
Тег <tag> может быть использован внешними приложениями при дальнейшем полученим расходов по API.
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <expenditure> <fin_doc_number>1001240016</fin_doc_number> <budget>3</budget> <employee>22</employee> <shop>2</shop> <value>200</value> <comment>такси</comment> <cash>1</cash> <payment_type>Баланс</payment_type> <action>2013-09-24 12:05:20+04</action> <tag>MarketplaceCorrectionPointOperation</tag> </expenditure>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <expenditure id="2"> <fin_doc_number>1001240016</fin_doc_number> <budget id="3" class="retail">Из кассы</budget> <expense>1</expense> <employee id="22">Иванов Иван Иванович</employee> <shop id="2">Магазин "Ромашка"</shop> <value>200</value> <comment>такси</comment> <cash>1</cash> <payment_type>Баланс</payment_type> <action>2013-09-24 12:05:20+04</action> </expenditure>
Изменение параметров расхода/дохода
Запрос:
PUT /admin/expenditures/2.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <expenditure> <value>250</value> </expenditure>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <expenditure id="2"> <budget id="3" class="retail">Из кассы</budget> <expense>1</expense> <employee id="22">Иванов Иван Иванович</employee> <shop id="2">Магазин "Ромашка"</shop> <value>250</value> <comment>такси</comment> <cash>1</cash> <action>2013-09-24 12:05:20+04</action> </expenditure>
Удаление дохода/расхода
Запроc:
DELETE /admin/expenditures/2.xml
Ответ:
HTTP/1.1 200 OK
Справочники
Справочник статей расходов и доходов
Получение списка статей
Запроc:
GET /admin/budgets?parameter=value
Параметры:
- page - номер страницы, начиная с нуля. Используется для листания списка. Чтобы получить все нужно в цикле листать страницы пока не закончится список.
- page-size - размер страницы (количество позиций на странице). По-умолчанию и не может превышать 250.
- expense - признак расходов (указывается без значения).
- income - признак доходов (указывается без значения).
- parent - id родительской статьи. Будут возвращены непоредственно дочерние статьи для указанной.
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <budgets type="array"> <budget id="1"> <name>Зарплата</name> <parent/> <comment>основная часть</comment> <default_summa>30000</default_summa> <permanent>1</permanent> <analysis>1</analysis> <expense>1</expense> <income>0</income> <class/> <user id="23">Иванов Иван Иванович</user> <created>2013-09-24 12:05:20+04</created> </budget> <budget id="2"> <name>Процент от продаж</name> <parent id="1">Зарплата</parent> <comment/> <default_summa/> <permanent>0</permanent> <analysis>1</analysis> <expense>1</expense> <income>0</income> <class/> <created>2013-09-24 12:05:20+04</created> </budget> <budget id="3"> <name>Из кассы</name> <parent/> <comment/> <default_summa/> <permanent>0</permanent> <analysis>1</analysis> <expense>1</expense> <income>0</income> <class>retail</class> <created>2013-09-24 12:05:20+04</created> </budget> </budgets>
Теги: - default_summa - сумма, которая будет подставляться по-умолчанию при вводе, если не указана другая - parent - родительская статья - permanent 0|1 - признак постоянной статьи - analysis 0|1 - признак участия в анализе работы предприятия - expense 0|1 - признак того, что статья является статьей расхода - income 0|1 - признак того, что статья является статьей дохода - class - произвольная классификация статьи для внутреннего использования
Получение параметров статьи
Запрос:
GET /admin/budgets/2.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <budget id="2"> <name>Процент от продаж</name> <parent id="1">Зарплата</parent> <comment/> <default_summa/> <permanent>0</permanent> <analysis>1</analysis> <expense>1</expense> <income>0</income> <class/> <created>2013-09-24 12:05:20+04</created> </budget>
Добавление статьи
Запрос:
POST /admin/budgets.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <budget> <name>Процент от продаж</name> <parent>1</parent> </budget>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <budget id="2"> <name>Процент от продаж</name> <parent id="1">Зарплата</parent> <comment/> <default_summa/> <permanent>0</permanent> <analysis>1</analysis> <expense>1</expense> <income>0</income> <class/> <created>2013-09-24 12:05:20+04</created> </budget>
Изменение статьи
Запрос:
PUT /admin/budgets/2.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <budget> <name>% от продаж</name> </budget>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <budget id="2"> <name>% от продаж</name> <parent id="1">Зарплата</parent> <comment/> <default_summa/> <permanent>0</permanent> <analysis>1</analysis> <expense>1</expense> <income>0</income> <class/> <created>2013-09-24 12:05:20+04</created> </budget>
Удаление статьи
Запроc:
DELETE /admin/budgets/2.xml
Ответ:
HTTP/1.1 200 OK
Подписки на события
Программа «Sellper» генерирует события определенных типов, перечисленных ниже. У Вас имеется возможность подписаться на любое из них. Под подпиской понимается привязка любого Вашего URL к конкретному типу события, при наступлении которого, по соответствующему URL будет отправлен POST-запрос с XML-данными события, в том числе данные объекта события <info/> (товара, клиента, склада). На одно событие можно оформить любое количество подписок.
Типы событий в программе:
- order.create - создание нового заказа
- order.update - изменение статуса заказа
- order.delete - удаление заказа
- reserve.create - создание нового резерва
- reserve.update - изменение статуса резерва
- reserve.delete - удаление (расформирование) резерва
- client.create - создание нового клиента
- client.update - изменение свойств клиента
- client.delete - удаление клиента
- product.create - создание нового товара
- product.update - изменение свойств товара
- product.delete - удаление товара
- purchase.create - оприходование нового поступления
- restore.create - списание резерва со склада
- migration.create - перемещение резерва со склада в свободный остаток другого склада
- sale.create - продажа клиенту
- refund.create - возврат от клиента
Фактически подписчик информируется о происшедшем событии не сразу после его наступления, а через небольшой промежуток времени (несколько секунд). В теге <time/> передается реальное время возникновения события - именно когда событие было инициировано программой, а не доставлено подписчику.
Пример данных передаваемых подписчику при генерации события:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2015-10-20 16:43:33</time> <name>product.create</name> <objectId>5362</objectId> <info><product id="10323"> ... </product></info> </event>
Подписка на создание нового заказа
Запроc:
POST /admin/subs.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <sub> <event>order.create</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="101"> <event>order.create</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2020-10-22 19:45:43</time> <name>order.create</name> <objectId>1001</objectId> </event>
Подписка на изменение заказа
Запроc:
POST /admin/subs.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <sub> <event>order.update</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="102"> <event>order.update</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2020-10-22 19:45:43</time> <name>order.update</name> <objectId>1001</objectId> </event>
Подписка на добавление клиента
Запроc:
POST /admin/subs.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <sub> <event>client.create</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="103"> <event>client.create</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2015-10-22 19:45:43</time> <name>client.create</name> <info><client id="443"> ... </client></info> </event>
Подписка на изменение клиента
Запроc:
POST /admin/subs.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <sub> <event>client.update</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="104"> <event>client.update</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2015-10-22 19:45:43</time> <name>client.update</name> <info><client id="443"> ... </client></info> </event>
Подписка на удаление клиента
Запроc:
POST /admin/subs.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <sub> <event>client.delete</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="105"> <event>client.delete</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2015-10-22 19:45:43</time> <name>client.delete</name> <info><client id="443"> ... </client></info> </event>
Подписка на добавление товара
Запроc:
POST /admin/subs.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <sub> <event>product.create</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="106"> <event>product.create</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2015-10-22 19:45:43</time> <name>product.create</name> <info><product id="5432"> ... </product></info> </event>
Подписка на изменение свойств товара
Запроc:
POST /admin/subs.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <sub> <event>product.update</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="107"> <event>product.update</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2015-10-22 19:45:43</time> <name>product.update</name> <info><product id="5432"> ... </product></info> </event>
Подписка на удаление товара
Запроc:
POST /admin/subs.xml
Тело запроса:
<?xml version="1.0" encoding="UTF-8"?> <sub> <event>product.delete</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="108"> <event>product.delete</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2015-10-22 19:45:43</time> <name>product.delete</name> <info><product id="5432"> ... </product></info> </event>
</sub> </file>
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="109"> <event>store.update</event> <url>https://my-inet-magaz.ru/from-antisklad/action.php</url> <store>1</store> </sub>
POST-данные передаваемые подписчику:
<?xml version="1.0" encoding="UTF-8"?> <event> <time>2015-10-22 19:45:43</time> <name>store.update</name> <info><store id="1" modified-time="2015-10-22 19:44:01"></store></info> </event>
Пример PHP-кода подписчика обработки события на изменения остатков на складе:
// Получить и разобрать XML объекта события $data = file_get_contents('php://input'); $xevent = new SimpleXMLElement($data); $eventName = (string)$xevent->name; $storeID = (int)$xevent->info->store->attributes()[['id']]; $time = (string)$xevent->info->store->attributes()[['modified-time']]; // получить измененные позиции склада для store.update $time = urlencode($time); $request = new HTTP_Request2("https://mylogin:mypassword@mydomain.sellper.ru/admin/stores/{$storeID}.xml?changed-from={$time}", HTTP_Request2::METHOD_GET); $request->setConfig(array( 'ssl_verify_peer' => FALSE, 'ssl_verify_host' => FALSE )); $response = $request->send(); $response_Body = $response->getBody(); $xstoreItems = new SimpleXMLElement($response_Body); // сохранить измененные позиции остатков товаров в файл file_put_contents("/tmp/{$eventName}.{$storeID}.xml", $xstoreItems->asXML());
Получение списка подписок
Запроc:
GET /admin/subs.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <subs type="array"> <sub id="100"> <event>order.create</event> <url>https://my-inet-magaz.ru/admin/create-order.php</url> <shop>1</shop> </sub> <sub id="102"> <event>client.create</event> <url>https://my-inet-magaz.ru/admin/create-client.php</url> </sub> </subs>
Получение данных по конкретной подписке
Запроc:
GET /admin/subs/56.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <sub id="56"> <event>order.create</event> <url>https://my-inet-magaz.ru/admin/create-order.php</url> <shop>1</shop> </sub>
Удаление подписки
Запроc:
DELETE /admin/subs/77.xml
Ответ:
HTTP/1.1 200 OK
Заголовки и логические ошибки ответа
В ответе сервера, в случае ошибки 500, может придти xml с логической ошибкой работы приложения.
Например, при попытке создать карточку товара с названием, аналогичным в списке, система вернет xml:
<?xml version="1.0" encoding="UTF-8"?> <error type="logic" index="ALREADY EXISTS" class="product" id="3497" name="1000">Аналогичная карточка товара "1000" уже существует</error>
, где, в качестве атрибутов ошибки, выступает вся необходимая для анализа информация. В значении тега будет представлен «читаемый» текст ошибки.
Возможные заголовки
400 => 'Bad request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not found',
500 => 'Internal Server Error',
501 => 'Not Implemented',
503 => 'Service Temporarily Unavailable',
Получение списка возможных логических ошибок
Запроc:
GET /admin/errors.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?> <errors> <error>IS NOT FOUND</error> <error>ALREADY EXISTS</error> <error>EMPTY VALUE</error> <error>INVALID VALUE</error> <error>IMPOSSIBLE TO DO</error> </errors>