К содержимому

Документация

Схема выгрузки и преобразования

Создание JSON-профиля

POST /api/v1/exports

{
  "site_id": 1,
  "name": "Каталог для магазина",
  "format": "json",
  "output_module": "json",
  "schema": [
    {"source":"sku","target":"id","cast":"string"},
    {"source":"name","target":"title"},
    {"source":"price","target":"offer.price","cast":"decimal","when_empty":"null"}
  ],
  "format_options": {"pretty":true}
}

Поля source должны существовать в схеме сайта или справочнике системных полей. Получите их через карточку выгрузки. Успешный ответ: 201 и созданный профиль; это ещё не файл. code необязателен при создании и формируется автоматически. format: csv, json, xml. Если schema не передана, система предлагает начальное сопоставление.

Правило поля

Ключ Назначение
source Откуда брать значение
target Имя в результате; точки создают вложенность, images[] задаёт список
label Человекочитаемый заголовок CSV
cast Приведение типа; допустимые значения возвращает карточка выгрузки
when_empty Поведение при пустом значении; используйте справочник профиля
default Значение замены, когда выбран соответствующий режим
split Разделитель строкового списка, до 8 символов

Например offer.price создаёт вложенный объект JSON. В CSV вложенности нет: будет соответствующая колонка. В XML имена элементов должны быть допустимыми XML-именами.

Параметры формата и фильтры

CSV: delimiter: один символ, eol: lf/crlf, bom: логическое значение. JSON: pretty, group_by. XML: root и item. Простая JSON-группировка задаётся путём выходного поля в group_by; для сложных итогов используйте обработку набора.

{"filters":{"where":[{"field":"price","op":"gt","value":0}]},"include_deleted":false}

Операторы: =, !=, contains, empty, not_empty, gt, lt. Максимум 50 условий. Поля и значения проверяйте на реальных записях.

Обработка кодом

PUT /exports/{id}/transformation

{"mode":"mapping","source":null,"base_version_id":null}

mapping: обычное сопоставление; records: изменение записей с сохранением числа и порядка; dataset: обработка набора, группировки и фильтрация. Для кода передайте source с функцией run(\Sdk\Context $ctx). В base_version_id передайте текущую converter_version_id из карточки; null: когда преобразования ещё нет. Это защита от перезаписи чужой правки. При конфликте заново загрузите карточку и объедините изменения.

Проверка: GET /exports/{id}/preview. Режим набора ограничен 10 000 входных записей и 16 МБ. Для endpoint набор ограничен текущей страницей. Обработка кодом и preview расходуют вычислительный бюджет так же, как действия через интерфейс.

Подробности и ограничения: обработка выгрузки кодом.