Инструкция по подготовке ХМL фида

для разработчиков

Требования к YML-файлу/XML-файлу

1. В YML нельзя использовать:
  • непечатаемые символы с ASCII-кодами от 0 до 31 (за исключением символов с кодами 9, 10, 13 — табуляция, перевод строки, возврат каретки);
  • эмодзи и другие специальные символы Юникода.
2. Символы "&><' нужно заменять на эквивалентные коды:

 "    ⟶    &quot;
&    ⟶    &amp;
>    ⟶    &gt;
<    ⟶    &lt;
'    ⟶    &apos;
3. Допустимые кодировки YML-файла: UTF-8, windows-1251.
4. В качестве разделителя целой и дробной частей любых чисел, указанных в качестве значений YML‑элементов, независимо от региональных установок используется только точка

Основные элементы YML

Чтобы фиды обрабатывались быстрее, советуем заполнять в файле только элементы из таблицы ниже. Система игнорирует при обновлении фида все другие значения: описания, ссылки на картинки, категории и другие атрибуты. Если вы их укажете, система все равно примет только описанные ниже элементы.

Элемент
Описание

xml header
(обязательно)
Стандартный XML-заголовок. Должен начинаться с первой строки, с нулевого символа.

Пример:

<?xml version='1.0' encoding='UTF-8'?>


yml_catalog
(обязательно)

Любой XML-документ может содержать только один корневой элемент. Формат YML в качестве корневого использует элемент <yml_catalog> с атрибутом date.

Атрибут date - Дата и время момента, на который актуальны данные в файле.

Внимание! Убедитесь, что указываете в файле правильные дату и время. Не указывайте будущие дату и время — вместо них Goojox будет использовать дату и время загрузки файла. Неактуальное значение атрибута date приведет к проблемам в работе с предложениями.

Рекомендуется всегда заполнять атрибут date. Если файл генерируется автоматически, желательно указывать дату и время начала генерации. Допустимый формат значения основан на стандарте RFC 3339 (см. раздел 5.6) со следующими особенностями:

  • Между датой и временем должна стоять латинская буква T или пробел.
  • Можно не указывать секунды и часовой пояс. По умолчанию используется 0 секунд и часовой пояс домашнего региона магазина.

Примеры значений:

  • 2020-11-22T14:37:38+03:00 (рекомендуется).
  • 2020-11-22T14:37:38.2020-11-22 14:37

<yml_catalog date="2024-01-25 15:20">


shop
(обязательно)

В элементе <shop> содержится элемент <offers> со списком предложений магазина. В этот элемент нужно вставить элементы <offer> для каждого предложения.

Формат использования и заполнения элементов и атрибутов соответствует спецификации формата YML.

Пример YML-файла с несколькими ценовыми зонами и несколькими складами


<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2024-01-25T14:37:38+03:00">
    <shop>
        <offers>
            <offer id="0001" group_id="111">
                <vat>20</vat>
                <shipmentPeriod>5</shipmentPeriod>
                <outlets>
                    <outlet id="Склад1" instock="12"/>
                    <outlet id="Склад2" instock="16"/>
                </outlets>
                <priceZones>
                    <priceZone id="СПБ" oldPrice= "1500" price= "1200"/>
                    <priceZone id="Москва" price= "1250"/>
                </priceZones>
            </offer>
            <offer ... >
                ...
            </offer>
        </offers>
    </shop>
</yml_catalog>

Пример YML-файла с единой ценовой зоной и одним складом


<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2024-01-25T14:37:38+03:00">
    <shop>
        <offers>
            <offer id="0001" group_id="111">
                <vat>20</vat>
                <shipmentPeriod>5</shipmentPeriod>
                <instock>50</instock>
                <oldPrice>7200</oldPrice>
                <price>5600</price>
            </offer>
            <offer id="0002" group_id="111">
                <vat>20</vat>
                <count>50</count>
                <oldPrice>7250</oldPrice>
                <price>5650</price>
            </offer>
            <offer ... >
                ...
            </offer>
            ...
        </offers>
    </shop>
</yml_catalog>

Элементы, входящие в <shop>

Элемент
Описание

offers
(обязательно)
В прайс-листе формата YML список всех предложений магазина должен содержаться в элементе <offers>. В этот элемент нужно вставить по одному элементу <offer> для каждого предложения. Является дочерним элементом для элемента <shop>.

Элементы, входящие в <offers>

Элемент
Описание

offer
(обязательно)

Является дочерним элементом <offers>.

Элемент <offer> содержит описание конкретного предложения магазина.


Атрибуты:

  1. id (обязательно)

Идентификатор предложения ID SKU. Должен соответствовать загруженным ID SKU, для которых в системе создана карточка товара.

Ограничения:

  • Может состоять только из цифр, латинских букв и символов кроме /,%, ?, &, <>, ",' , пробела и запятой.
  • Максимальная длина — 64 символа.
  • Должен быть уникальным для каждого предложения.
  • Любые SKU без ID SKU или с нераспознанными ID SKU не участвуют в обработке.
  • Не может повторяться в одном файле.

Пример:

<offer id="CN98354673">


2. group_id (опционально)

В системе определяется как "Код вариационной модели".

Пример:

<offer id="CN98354673" group_id="573">


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


priceZones
(опционально *)

Является дочерним элементом <offer>.

Содержит в себе список ценовых зон, в которых представлен данный товар. Каждая ценовая зона описывается отдельным элементом <priceZone>.


Пример:

<priceZones>

<priceZone id="Moscow" oldPrice= "1500" price= "1200"/>

<priceZone id="SPB" price= "1250"/>

</priceZones>


priceZone
(опционально)

Является дочерним элементом <priceZones>

Каждый элемент <priceZone> задает id ценовой зоны, на которой представлен данный товар, и соответствующая этой ценовой зоне цена товара.

Атрибуты:

  1. id - в данном атрибуте указывается название ценовой зоны
  2. oldPrice - старая цена товара до скидки (необязательно)
  3. price - текущая цена продажи товара

oldPrice
(опционально)

Является дочерним элементом <offer>.

Содержит цену товара до скидки. В системе определяется как "Старая цена".

  • Формат: целое число, больше 1 рубля
  • Старая цена должна быть выше текущей цены

Пример:

<oldPrice>7200</oldPrice>


price
(опционально)

Является дочерним элементом <offer>.

Содержит актуальную цену товара. В системе определяется как "Текущая цена".

  • Формат: целое число, больше 1 рубля.
  • Цена должна быть конечной и соответствовать стоимости товара.

Если товар продается по весу, метражу и т. п. (не штуками), указывайте цену за вашу единицу продажи. Например, если вы продаете кабель бухтами, указывайте цену за бухту.


Пример:

<price>5700</price>


vat
(опционально)

Является дочерним элементом <offer>.

Значение индивидуальной ставки НДС для товара.

Выберите одно из значений:

  • без НДС — NO_VAT / 6 (для магазинов, работающих без НДС)
  • 0% — VAT_0 / 5 / 0
  • 10% — VAT_10 / 2 / 10
  • 20% — VAT_20 / 7 / 20

Если не заполнено, применяется указанная в настройках магазина ставка по умолчанию.


Пример: если ставка НДС для товара 10%

<vat>VAT_10</vat>

или

<vat>2</vat>

или

<vat>10</vat>


outlets
(опционально *)

Является дочерним элементом <offer>.

Содержит в себе список складов, на которых представлен данный товар. Каждый склад описывается отдельным элементом <outlet>.


Пример:

<outlets>

    <outlet id="Склад1" instock="12"/>

    <outlet id="00000000-0000-0000-0000-000000000002" instock="16"/>

</outlets>


outlet
(опционально )

Является дочерним элементом <outlets>.

Каждый элемент <outlet> задает id склада, на котором представлен данный товар, и соответствующее этому складу количество единиц товара.

Атрибуты:

  1. id - в данном атрибуте указывается название склада.
  2. instock - количество единиц данного товара, представленных на указанном складе.

Пример:

<outlet id="outlet_id" instock="12"/>


instock или count
(опционально *)

Является дочерним элементом <offer>.

Содержит количество единиц данного товара, представленного на складе, когда склад только один.


Пример:

<instock>50</instock>

или

<count>50</count>


shipmentPeriod
(опционально)

Является дочерним элементом <offer>.

Значение индивидуального срока отгрузки для товара в разрешенных пределах от 0 до 5 дней.

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


Пример:

<shipmentPeriod>3</shipmentPeriod>


* Примечание:
  1. При работе через единую ценовую зону в файле могут отсутствовать элементы <priceZones>/<priceZone>. Цена товара при работе через единую ценовую зону может быть передана через элемент <price> без указания <priceZones>/<priceZone>. При наличии нескольких ценовых зон, элементы <priceZones>/<priceZone> обязательны.
  2. Если остатки хранятся на одном складе, вы можете передавать их значения через элементы <instok> или <count> без указания <outlets>/<outlet>. При работе с нескольких складов, элементы <outlets>/<outlet> для передачи остатков обязательны.