Складской учет

Выгрузить каталог в формате Яндекс.Маркета с помощью API

Выгрузить каталог в формате Яндекс.Маркета с помощью API

С помощью API вы можете выгрузить список позиций из каталога продукции, опубликованного в СБИС. Каталог выгрузится в yml-формате, который используется для обмена данными с Яндекс.Маркетом.

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

Аутентификация

Перед тем как выгружать каталог, убедитесь, что он опубликован. После этого выполните аутентификацию в СБИС:

Выгрузить каталог

Чтобы выгрузить каталог, выполните POST-запрос.

Адрес для запроса: https://online.sbis.ru/service/.

В заголовке «X-SBISSessionID» передайте «sid» или токен доступа, которые получены после аутентфикации на сервере.

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

В таблице перечислены параметры, которые нужно передать на сервер в json-запросе.

ПараметрТипОписаниеПример
Filter*RecordФильтр отбора номенклатуры для выгрузки
Filter.FolderRecordРаздел, из которого отбирается номенклатура. По умолчанию не задан, номенклатура берется из корня каталога
Filter.Folder.IdIntegerИдентификатор раздела
Filter.Folder.CodeStringКод раздела, из которого будет показана номенклатура. Это поле — первичный ключ для раздела. Номер запишется в фильтр «Folder.Id»
Параметр «Folder.Id» выше «Folder.Code» по приоритету
«X91254079462»
Filter.NomenclatureRecordФильтр для номенклатурных карточек
Filter.Nomenclature.excludeStringНазвание характеристики. Если параметр для карточки указан, то карточка исключается из выгрузки.
Shop*RecordОбъект, в который входит несколько полей (перечислены ниже). Значения полей должны быть подставлены в одноименные теги
Shop.name*StringКраткое название магазина, не более 20 символов.
В названии нельзя использовать слова, не относящиеся к наименованию магазина (например «лучший», «дешевый»), указывать телефон и другие параметры.

Название должно совпадать с опубликованным на сайте фактическим названием, иначе Яндекс.Маркет вправе изменить название, не уведомляя вас

«СБИС»
Shop.company*StringПолное наименование компании-владельца магазина. Нужно для внутренней идентификации, на сайте не публикуется«ООО «Компания Тензор»
Shop.url*StringАдрес сайта главной страницы магазина, не более 50 символов. Допускаются кириллические ссылки«https://sbis.ru»
Shop.platformStringСистема управления контентом, на которой работает магазин (CMS)«СБИС»
Shop.versionStringВерсия CMS«3»
Shop.agencyStringНаименование агенства, которое оказывает техническую поддержку магазина и отвечает за работу сайта«ООО «Компания Тензор»
Shop.emailStringКонтактный адрес разработчиков CMS или агенства, осуществляющего поддержку«sbis@tensor.ru»
Category*RecordОбъект, описывающий название категории
Category.fieldStringСтрока для определения поля, которое содержит название выгружаемого раздела.

Если параметр пустой или название в результате перебора характеристик не определено, то название берется из наименования раздела

«SPROP_Название для yandex»
Category.ReplacementsList[record]Упорядоченный массив объектов. Каждый объект состоит из полей:
  • «tmpl» — регулярное выражение для поиска;
  • «repl» — значение, на которое нужно заменить выражение.
«[{tmpl="^\d+\.\s+?", repl=""}]»
Offer*RecordОбъект, описывающий узел «offer» для товаров
Offer.url*StringШаблон адреса для товара на сайте. Можно указать параметры для замены.
Шаблон:
«https://sbis.ru/catalog/
#PATH_CODE##CODE#/
?utm_source=market.yandex&
utm_medium=cpc&
utm_campaign=market»

Результат:
«https://sbis.ru/catalog/
Computers/Apple/MacBook/
MacBookAir13_i5_1hz_8gb/?utm_source=market.yandex&
utm_medium=cpc&
utm_campaign=market»

Offer.nameRecordОписывает правила для формирования названия товара в предложении
Offer.name.tmplStringШаблон названия товара для маркета. Можно указать параметры для замены.

Если параметр пуст или название в результате замен не определено, то название берется из наименования товара

Шаблон:
«#PROP_Вид# #PROP_Бренд#
#SHORT_NAME#»

Результат:
«Мясорубка Filips HR2713/30»

Offer.name.ReplacementsList[record]Упорядоченный массив объектов. Каждый объект состоит из полей:
  • «tmpl» — регулярное выражение для поиска;
  • «Replacement » — значение, на которое нужно заменить выражение.
«[{Template="^\d+\.\s+?", Replacement=""}]»
Offer.vendorStringСтрока для определения поля, которое содержит название производителя.

Если параметр пустой или название в результате перебора характеристик не определено, то название берется из характеристики «Производитель»

«PROP_Производитель»
Offer.deliveryStringНазвание характеристики, по которой определяется возможность доставки курьером или самовывоза.
«false»
Offer.pickupStringНазвание характеристики, по которой определяется возможность самовывоза из точки или само значение.
«true»
Offer.storeStringНазвание характеристики, по которой определяется возможность самовывоза из магазина или само значение.
«true»
Offer.descriptionStringШаблон для формирования описания предложения.
«#DESCRIPTION#
#PROP_Комплектация#
#PROP_Работа с ОФД#
#PROP_Поддерживаемое ПО#»
Offer.SaleNotesStringКонкретное значение для тега условий продаж или характеристики для его заполнения.
«Предоплата 100%»
Offer.MinQuantityStringКонкретное значение для тега минимального заказа или характеристики для его заполнения.
«Минимальное — 10шт.»
Offer.ManufacturerWarrantyStringНазвание характеристики, по которой определяется наличие гарантии или само значение.
«PROP_Гарантия»

* — обязательный параметр.

Результат

Ссылка для неавторизованного скачивания сгенерированного yml-файла. Сама ссылка на файл будет указана в поле «result».

Правила формирования

Выгрузить можно только те позиции, которые опубликованы в СБИС. Номенклатура берется либо от корня, либо от раздела заданного фильтром «Folder» («Folder.Code»).

Атрибуты «Shop»

Из входящего объекта «shop» формируются теги по заполненным полям объекта.

«Shop.currencies»

В теге «Shop.currencies» записывается константа «<currencies><currency id="RUR" rate="1"/></currencies>».

«Shop.categories»

  1. В качестве параметров «id» и «parentId» используется «@Номенклатура». У разделов, которые находятся в корне или в разделе фильтра «Folder», атрибут «parentId» не задается.
  2. Поле, которое содержит название категории для выгрузки, определяется по параметру «Category.fields». Первое же поле раздела, которое содержит значение, дает название категории. Если «Category.fields» отсутствует или название не определено, то название категории берется из наименования раздела.

«Shop.offers»

Для каждого опубликованного товара в узле «Shop.offers» создается отдельный узел «Offer» упрощенного типа.

Атрибуты «Offer»

  • «Offer@id» — в качестве значения указывается «@Номенклатура».
  • «Offer@available» — если товар заказной, то значение «false». Иначе — «true».
  • «Offer@type» — при упрощенном описании не указывается.

«Offer.url»

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

«Offer.name»

  1. Название составляется по шаблону из параметра «Offer.name.tmpl». Если есть пробелы в начале и в конце названия, они будут удалены. Если строка пустая, то значение берется из названия товара.
  2. Полученное название обрабатывается массивом замен по регулярным выражениям из параметра «Offer.name.repls».
  3. Если итоговое значение пустое, то значение берется из названия товара.

«Offer.vendor»

Значение производителя определяется по характеристеке в параметре. Если значение пусто, то проверяется значение «Производитель» (без учета регистра).

«Offer.price»

Значение цены в каталоге. Если цена не указана, то товар выгружен не будет.

«Offer.currencyId»

Значение всегда «RUR».

«Offer.categoryId»

Содержит идентификатор родительского раздела.

«Offer.picture»

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

«Offer.delivery», «Offer.pickup», «Offer.store»

Проверяется соответствующий входной параметр. Если передано значение «true» или «false», то в документ будет записано их значение.

Если в значении указано название характеристики, то проверяется ее заполнение:

  • не заполнено, текстовое или логическое «Нет», цифровое «0» — проставляется «false»;
  • если другое значение — «true».
  • иначе — не заполняется.

«Offer.description»

Проверяются шаблоны входящего параметра. Если значение характеристики не пустое и содержит текст html-типа, то оно подставляется в виде шаблона «<h3>НазваниеХарактеристики</h3>ЗначениеХарактеристики».

Если в итоговом значении — «HTML» (есть «<Буква»), то значение заключается между «<![CDATA[" и "]]>».

«Offer.SaleNotes», «Offer.MinQuantity»

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

«Offer.ManufacturerWarranty»

Проверяется соответствующий входной параметр. Если передано значение «true» или «false», то в документ будет записано их значение.

Если в значении указано название характеристики, то проверяется ее заполненность:

  • не заполнено, текстовое или логическое «Нет», цифровое «0» — проставляется «false»;
  • если другое значение — «true».
  • иначе — не заполняется.

«Offer.country_of_origin»

Указывается название страны из атрибута «Страна». Атрибут берется из блока описания в карточке номенклатуры.

«Offer.barcode»

Заполняется первым из списка штрихкодом типа «EAN13»,«EAN8» или «UPC», которые начинаются не с «2».

«Offer.param»

Берутся все заполненные характеристики товара, кроме служебных и текста html-типа. Затем, характеристики заполняются в виде отдельных тегов. Характеристики из групп «С иконками», «Служебные» и «Выделенные характеристики» не учитываются.

«Offer.weight»

Указывается вес в кг из блока «Размеры и весь» в карточке номенклатуры.

«Offer.dimensions»

Если в блоке «Размеры и вес» указаны все 3 параметра (ДШВ — длина, ширина, высота), то в теге указывается их значение в сантиметрах.

Формат: три положительных числа с точностью 0.001, разделитель целой и дробной части — точка («.»). Числа должны быть разделены символом «/», без пробелов.

Комментарий

  1. В зависимости от типа, значения характеристик считаются как:
    • логические — «Да»/«Нет»/Пусто;
    • списочные — перечисление выбранных значений через запятую («,»).
  2. Для логических тегов yml-файла значение «false» определяют:
    • логические характеристики — если отрицательные значение («false»);
    • текстовые и списочные характеристики — если значение «Нет» (без учета регистра);
    • числовые характеристики — значение «0».
  3. В итоговый выходной yml-файл пустые теги не попадают.
  4. Файлы для разных витрин-агрегаторов могут генерироваться одновременно.
  5. Для названия характеристики из блока «Описание» в карточке номенклатуры используются префикс «PROP_».

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

{
   "jsonrpc": "2.0",
   "protocol": 5,
   "method": "NomenclatureAPI.ExportYML",
   "params":{
      "Filter":{
         "Folder":{
            "Id":66885
         }
      },
      "Shop":{
         "Company":"ООО \"Компания Тензор\"",
         "Name":"СБИС",
         "Url":"https://sbis.ru/"
      },
      "Category":{
         "Replacements":[
            {
               "Template":"^d+.s+?",
               "Replacement":""
            }
         ]
      },
      "Offer":{
         "Name":{
            "Replacements":[
               {
                  "Template":"^d+.s+?",
                  "Replacement":""
               }
            ],
            "Template":"#PROP_Вид# #PROP_Бренд# #SHORT_NAME#"
         },
         "Delivery":"SPROP_Служебныйкурьер",
         "Description":"#PROP_htmlописание#"
      }
   },
   "id":1
}
Скачать пример

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

{
   "jsonrpc": "2.0",
   "result": "http://online.sbis.ru/fs-public/nomenclature_files/76ddf4b9-bdfc-4027-9b95-97ef5b63214d",
   "id": 1
}
Скачать пример