Перейти к содержаниюСправка

Category. Товарные категории

Методы для работы с товарными категориями: получение списка категорий вместе с их характеристиками, создание и изменение категорий по одной и пачкой, удаление. Категория определяет набор характеристик (атрибутов), которыми описываются товарные остатки, например размер или объём. О самих характеристиках — в статье Attribute. Характеристики.

Как получить ключ, как формируются запросы и какие бывают ответы и ошибки — в статье Общие сведения. Здесь описаны только особенности методов раздела category.

Методы

Метод Адрес Что делает
Получить категории /api/category Возвращает все категории с их характеристиками
Создать или изменить /api/category/update Обновляет категорию или создаёт новую
Массовое обновление /api/category/batchUpdate Создаёт и обновляет категории из XML
Удалить /api/category/delete Удаляет категорию

Где передавать параметры. Ключ apikey и формат format принимаются и в адресной строке, и в теле POST-запроса. Остальные параметры можно передавать и в адресной строке, и в теле POST. Данные категории передаются массивом category[…]: используйте POST. Значения с кириллицей и пробелами кодируйте.

Формат ответа отличается от других методов. Метод получения возвращает сразу список категорий, без обёртки success, type и count.

Получение категорий

GET https://[компания].myvirtualpos.ru/api/category?apikey=MySecret

Параметров, кроме format, нет: всегда возвращаются все категории одним ответом.

Поля категории

Ответ — список объектов category:

name Строка. Название категории
system Логическое. true — системная категория, например «Алкоголь» или «Товар 18+»
external_id Строка. Код категории во внешней системе
attributes Список характеристик категории. Каждая обёрнута в объект attribute с полем name — названием характеристики

В ответе нет ид категории. Чтобы изменить или удалить категорию по ид, узнайте его в панели управления. Для интеграций надёжнее задавать категориям код external_id через batchUpdate и обращаться по коду.

Пример ответа

[
  {
    "category": {
      "name": "Одежда",
      "system": false,
      "external_id": "CAT-CLOTHES",
      "attributes": [
        { "attribute": { "name": "Размер" } },
        { "attribute": { "name": "Цвет" } }
      ]
    }
  },
  {
    "category": {
      "name": "Алкоголь",
      "system": true,
      "external_id": null,
      "attributes": []
    }
  }
]

Тот же ответ при format=xml (без общего корня-обёртки, категории идут друг за другом). Логические значения в XML: 1 для true и пустой элемент для false:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <category>
    <name>Одежда</name>
    <system/>
    <external_id>CAT-CLOTHES</external_id>
    <attributes>
      <attribute><name>Размер</name></attribute>
    </attributes>
  </category>
</root>

Создание и изменение

POST https://[компания].myvirtualpos.ru/api/category/update?apikey=MySecret
category[name]=Одежда&category[system]=0

Без id и external_id создаётся новая категория. С id или external_id изменяется существующая.

Параметры

id Число. Ид изменяемой категории. Приоритетнее external_id
external_id Строка. Код категории во внешней системе, по которому ищется изменяемая категория
category[name] Строка, до 255 символов. Название. Обязательно, должно быть уникальным
category[system] 0 или 1. Признак системной категории

Ответ: {«success»:1,«id»:11}. id — ид категории.

Код external_id через update задать нельзя. Метод его не записывает: при создании категории код остаётся пустым, а поиск по external_id находит только категории, у которых код уже задан. Чтобы создавать категории с кодом во внешней системе, используйте batchUpdate.

Подробности ошибок не выдаются. При любой ошибке (в том числе при повторяющемся названии) придёт общее сообщение Could not create category. See error log..

Массовое обновление

POST https://[компания].myvirtualpos.ru/api/category/batchUpdate?apikey=MySecret&create_if_not_exists=1
batch=<root><category>…</category></root>

Параметр batch — XML с категориями. Категория ищется по id, а если его нет — по external_id.

<root>
  <category>
    <external_id>CAT-CLOTHES</external_id>
    <name>Одежда</name>
  </category>
  <category>
    <external_id>CAT-SHOES</external_id>
    <name>Обувь</name>
  </category>
</root>
create_if_not_exists 1 — создавать категории, которые не найдены. Без него будут только обновляться существующие. Внимание: в названии параметра exists
category/id Ид категории
category/external_id Код категории во внешней системе. Записывается только при создании категории
category/name Название категории. Обновляется у существующих категорий

Ответ: {«success»:1,«errors»:«…»}. В поле errors — тексты ошибок по категориям, которые обработать не удалось, разделённые переводом строки; пустая строка означает, что ошибок нет. Успешные категории сохраняются, ошибочные пропускаются.

Удаление

GET https://[компания].myvirtualpos.ru/api/category/delete?apikey=MySecret&id=11
id Число. Ид удаляемой категории

Ответ: {«success»:1}.

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

Примеры запросов

Задача Запрос
Все категории /api/category?apikey=MySecret
Создать категорию POST /api/category/update?apikey=MySecret, тело: category%5Bname%5D=Odezhda&category%5Bsystem%5D=0
Переименовать категорию по ид POST /api/category/update?apikey=MySecret&id=11, тело: category%5Bname%5D=Odezhda2
Создать категории с кодами из 1С POST /api/category/batchUpdate?apikey=MySecret&create_if_not_exists=1, тело: batch=…
Удалить категорию /api/category/delete?apikey=MySecret&id=11

Ошибки

Ошибка авторизации и общие ошибки описаны в статье Общие сведения. Ошибки приходят с кодом HTTP 200 и success равным 0:

Сообщение Метод Причина Что делать
Invalid format update Не передан массив category[…] Передайте данные как category[name]=…
category not found update Категория с таким id или external_id не найдена Проверьте идентификатор
Could not create category. See error log. update Не заполнено название, название не уникально или другая ошибка сохранения Проверьте данные; подробности в журнале сервера
Please specify id of record delete Не указан id Передайте id
Batch does not exists batchUpdate Не передан batch Передайте XML в batch
Invalid batch format batchUpdate batch не является корректным XML Проверьте XML

Ошибки по отдельным категориям в batchUpdate приходят в поле errors успешного ответа: Could not find or create category … (категория не найдена, а create_if_not_exists не указан) и Could not save category … (не удалось сохранить).

Связанные разделы