====== API :: Item. Получение/изменение данных о номенклатуре ======
В системе реализован программный интерфейс для получения, добавления и изменения данных о товарной номенклатуре. Данные выгружаются по http протоколу. Формат на выбор - XML или JSON.
===== Пример запроса на получение данных =====
Пример запроса на получение данных о номенклатуре:
http://mycompany.virtpos.ru/api/item?apikey=MySecret&format=xml
==== Параметры запроса ====
параметры, которые не отмечены как **get only**, могут быть переданы как get- или как post-параметры.
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - код товара, для которого надо вернуть данные. Если не указан, то возвращаются данные о всех товарах.
* **external_id** (get only) - код товара во внешней системе учета (например, в 1С)
* **enabled_only** (get only) - опционально, 1 если нужно получить только активные товары, 0 если все.
* **pricelist** - (опционально). В параметре можно передать Id прайслиста. Если ID прайслиста переден, то к каждому товару будут добавлены колонки с ценами из этого прайлиста. Чтобы вернуть цены из прайслиста для интернет-витрины, то вместо ID можно указать ключевое слово "internet": &pricelist=internet.
* **images** - опционально. Если указано значение "1", то к каждому товару будет добавлен список файлов с изображениями. Имена файлов будут перечислены через запятую
* **from_id** - опционально. Вернуть товары начиная с этого ID
* **limit** - опционально. Максимальное количество товаров в ответе
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info
==== Пример ответа сервера ====
Ниже приведен пример ответа сервера в формате XML
1
item
Цвет
2
-
1
Коробка конфет Рафаэлло
1
0
1
G
N
1
5
1,2
{123-543},{000-999}
4607092441788,9785864153055
18
2015-07-11 17:16:49
2015-07-11 17:29:25
-
8
Чипсы Лэйс
1
0
1
G
N
0
5
22222
1,2
{123-543},{000-999}
4607092441788,9785864153055
18
2015-07-11 17:34:58
2015-07-11 17:36:36
Красный
===== Пример запроса на добавление/изменение данных =====
Пример запроса на добавление/изменение данных о товаре:
http://mycompany.virtpos.ru/api/item/update?apikey=MySecret&create_if_not_exist=0&external_id=666
==== Параметры запроса ====
параметры, которые не отмечены как **get only**, могут быть переданы как get- или как post-параметры.
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **id** (get only) - код товара, данные которого надо обновить
* **external_id** (get only) - код товара во внешней системе учета (например, в 1С), данные которого надо обновить
* **create_if_not_exist** (get only) - Если истина, то при неудачном поиске товар будет добавлен в систему.
* **manufacturer_name** - Название производителя. Если значение указано, то происходит проверка, есть ли производитель с таким именем в справочнике. Если нет, то он будет добавлен. Параметр игнорируется, если указан manufacturer_id
* **name** - название товара
* **description** - описание товара
* **article** - артикул
* **enabled** - "0" или "1". признак,что товар активен и незаблокирован
* **volume** - объем
* **manufacturer_id** - id производителя
* **type** - тип товара (G - товар, S - услуга, M - материальная ценность).
* **weight_good_flag** - флаг весового товара. Значения "Y" / "N"
* **not_show_in_shop** - показывать или нет товар в интернет-витрине и мобильном приложении. Значения: "0" / "1"
* **html_template_id** - id шаблона ценника
* **category_id** - id товарной категории ("1" - алкоголь / "2" - товары18+ )
* **group_ids** - разделенный запятой список из id товарных групп, в которые входит товар
* **vat_percent** - ставка НДС
* **attribute1**..**attribute15** - значения гибких полей
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info.
Также возвращается id записи, которая была обновлена или добавлена.
* Флаг **isnew** равен "1", если запись была создана, и "0" если обновлена.
* Если в запросе указаны штрихкоды товара (поле barcodes), то в поле ответа **barcode_errors** возвращаются штрихкоды, не прошедшие проверку по контрольной сумме. А в поле **barcode_conflicts** возвращаются штрихкоды, которые уже назначены другим товарам.
==== Пример ответа сервера ====
1
11
1
4607092441787
===== Пример запроса на массовое добавление/изменение данных =====
Данные для добавления передаются как POST-параметр data в формате JSON.
Пример http запроса для массового обновления/добавления данных
POST /api/item/updateAll?apikey=11112222&format=xml HTTP/1.1
HOST: mycompany.virtpos.ru
content-type: application/x-www-form-urlencoded
content-length: 89
data=[{"id":"1940","description":"Test desc 1"},{"external_id":"1941","description":"Test desc 2"}]
==== Параметры запроса ====
параметры, которые не отмечены как **get only**, могут быть переданы как get- или как post-параметры.
* **apikey** - Секретный ключ для доступа к данным. Обязательный параметр.
* **format** (get only) - формат, в котором сервер отдаст данные. Может принимать значения "xml" или "json". Необязательный параметр.
* **create_if_not_exist** (get only) - Если истина, то при неудачном поиске товар будет добавлен в систему.
==== Параметры data ====
* **id** - код товара, данные которого надо обновить
* **external_id** - код товара во внешней системе учета (например, в 1С), данные которого надо обновить
* **description** - значение товара, которое нужно обновить. В данном случае это описание. Могут быть (name, article, volume, attr1, attr2, attr3, attr4 и т.д.)
==== Ответ сервера ====
В ответ получаем XML или JSON. В ответе обязательно присутствует поле success. Если success=1, то операция выполнена успешно. Если success=0, то произошла ошибка. Дополнительная информация об ошибке содержится в поле info.
Также возвращаются:
* success_count - количество удачно обработанных записей
* fails_count - количество неудачно обработанных записей
* problem_ids - массив, который содержит id неудачно обработанных товаров
* problem_external_ids - массив, который содержит external_id неудачно обработанных товаров
==== Пример ответа сервера ====
1
0
3
1940
1941
1942