Статті на: Розробникам
Ця стаття також доступна на:

ТЗ на розробку JSON-фіду каталогу

Цей документ містить повні технічні вимоги до структури JSON-файлу для передачі вашого каталогу товарів у систему Pricer24.


Загальні принципи роботи з каталогом, способи передачі та підтримувані протоколи описані у статті Передача каталогу: загальні принципи.


Загальні технічні вимоги


  • Формат даних: валідний JSON у кодуванні UTF-8
  • Спосіб передачі: пряме постійне посилання (URL) на файл через протокол HTTPS/HTTP (за потреби — з Basic Auth або обмеженням за IP)
  • Стиснення: необов'язкове; для великих файлів (> 10 000 позицій) рекомендується gzip (.json.gz)
  • Обсяг файлу: без обмежень на кількість товарів чи розмір
  • Повнота: фід має містити повний актуальний зріз каталогу на момент формування


Повний приклад структури JSON-фіду


{
  "categories": [
    { "id": "1000", "parent_id": null, "name": "Бакалія" },
    { "id": "1001", "parent_id": "1000", "name": "Кондитерські вироби" },
    { "id": "1002", "parent_id": "1001", "name": "Цукерки" }
  ],
  "price_types": [
    { "id": "1", "name": "Роздрібна ціна" },
    { "id": "2", "name": "Акційна ціна" },
    { "id": "3", "name": "РРЦ" },
    { "id": "4", "name": "Онлайн" }
  ],
  "properties": [
    { "id": "weight", "name": "Вага (кг)", "type": "decimal" },
    { "id": "stock", "name": "Залишок на складі", "type": "int" },
    { "id": "follow_rrp", "name": "Чи контролюємо РРЦ", "type": "bool" },
    { "id": "category_manager", "name": "Категорійний менеджер", "type": "string" }
  ],
  "products": [
    {
      "id": "153",
      "category_id": "1002",
      "name": "Цукерки Konti Bonjour Десерт 500г",
      "vendor": "Konti",
      "vendor_code": "08013914",
      "barcode": "4820000356848",
      "link": "https://example.com/products/konti-bonjour-dessert-500",
      "image_link": "https://example.com/products/konti-bonjour-dessert-500.jpg",
      "availability": true,
      "prices": [
        { "price_type_id": "1", "price": 189.90, "currency": "UAH" },
        { "price_type_id": "2", "price": 169.00, "currency": "UAH" }
      ],
      "properties": {
        "weight": 0.500,
        "stock": 25,
        "follow_rrp": true,
        "category_manager": "Олена Шевченко"
      }
    },
    {
      "id": "154",
      "category_id": "1002",
      "name": "Шоколад Milka Oreo 100г",
      "vendor": "Milka",
      "vendor_code": "7622210578266",
      "barcode": "7622210951182",
      "link": "https://example.com/products/milka-oreo-100",
      "image_link": "https://example.com/products/milka-oreo-100.jpg",
      "availability": false,
      "prices": [
        { "price_type_id": "1", "price": 49.50, "currency": "UAH" }
      ],
      "properties": {
        "weight": 0.100,
        "stock": 0,
        "follow_rrp": false,
        "category_manager": "Олена Шевченко"
      }
    }
  ]
}


Структура кореневого об'єкта


На верхньому рівні JSON складається з 4 масивів:

  1. categories — довідник ієрархії категорій
  2. price_types — довідник типів ваших цін
  3. properties — декларація кастомних характеристик товарів
  4. products — основний масив ваших товарів



1. Масив категорій: categories[]


Передає повну ієрархію категорій вашого магазину. Глибина вкладеності не обмежується. Зв'язок задається через parent_id.


Поле

Тип

Обов'язкове

Опис

id

string

Так

Унікальний ідентифікатор категорії в системі обліку. Має бути постійним.

parent_id

string / null

Так

Ідентифікатор батьківської категорії. Для категорій верхнього (кореневого) рівня передається null.

name

string

Так

Назва категорії товарів.


"categories": [
  { "id": "100", "parent_id": null, "name": "Побутова техніка" },
  { "id": "110", "parent_id": "100", "name": "Техніка для кухні" },
  { "id": "112", "parent_id": "110", "name": "Кавомашини" }
]



2. Масив типів цін: price_types[]


Визначає типи цін, які ви передаєте в Pricer24: роздрібні, акційні, РРЦ, ціни окремих міст, каналів продажу тощо.


Поле

Тип

Обов'язкове

Опис

id

string

Так

Унікальний код типу ціни. Має залишатися постійним.

name

string

Так

Назва типу ціни (наприклад, «Роздрібна», «Акційна», «РРЦ», «Магазин Київ»).


"price_types": [
  { "id": "1", "name": "Роздрібна ціна" },
  { "id": "2", "name": "Акційна ціна" },
  { "id": "3", "name": "РРЦ" }
]



3. Масив додаткових властивостей: properties[]


Оголошує кастомні поля товарів, яких немає у стандартній структурі (залишки, собівартість, менеджер, габарити тощо). Усі оголошені поля можна виводити у звіти та використовувати у формулах ціноутворення.


Поле

Тип

Обов'язкове

Опис

id

string

Так

Системний ключ властивості. Саме цей ключ використовується всередині кожного товару в products[].properties.

name

string

Так

Людинозрозуміла назва властивості у звітах та фільтрах системи.

type

string (enum)

Так

Тип даних. Дозволені лише 4 значення: int, decimal, bool, string.


Властивості з невідомими типами даних будуть проігноровані системою.


"properties": [
  { "id": "stock", "name": "Залишок", "type": "int" },
  { "id": "cost_price", "name": "Собівартість", "type": "decimal" },
  { "id": "is_exclusive", "name": "Ексклюзивний товар", "type": "bool" },
  { "id": "brand_country", "name": "Країна бренду", "type": "string" }
]


💡 Як використовуються передані властивості та теги в системі:
  • Усі передані параметри автоматично відображаються в інтерфейсі платформи. Детальніше про те, як працювати з ними в кабінеті, читайте в інструкції Створення та редагування товарів.
  • За цими характеристиками та тегами ви зможете групувати асортимент, будувати фільтри в звітах та налаштовувати сегменти. Детальніше див. статтю Теги товарів.



4. Масив товарів: products[]


Містить повний список ваших товарів та їхніх атрибутів.


Поле

Тип

Обов'язкове

Опис

id

string

Так

Ключовий унікальний код товару у вашій системі. Має бути постійним.

category_id

string

Так

Код категорії товару. Повинен відповідати одному з id у масиві categories[].

name

string

Так

Повна назва товару.

vendor

string

Ні

Бренд / виробник товару.

vendor_code

string

Ні

Артикул виробника (SKU / Part Number).

barcode

string

Ні

Штрихкод товару (EAN-13, UPC). Важливий для автоматичного зіставлення з конкурентами.

link

string (URL)

Ні

Пряме посилання на сторінку товару у вашому магазині.

image_link

string (URL)

Ні

Посилання на фото товару.

availability

boolean / string

Ні

Поточна наявність товару.

prices

array

Ні

Масив цін товару (див. структуру нижче).

properties

object

Ні

Об'єкт зі значеннями кастомних полів у форматі {"key": value}.


УВАГА! Значення поля id не повинно змінюватися для одного й того самого товару. Зміна id призводить до розриву зв'язків з пропозиціями конкурентів і необхідності повторного ручного зіставлення!


Масив цін товару: products[].prices[]

Кожна ціна товару повинна посилатися на відповідний price_type_id із довідника price_types[]:


Поле

Тип

Обов'язкове

Опис

price_type_id

string

Так

Код типу ціни з довідника price_types[].id.

price

number

Так

Числове значення ціни. Дробова частина відділяється крапкою (189.99).

currency

string

Так

Трилітерний код валюти за ISO 4217 (UAH, EUR, USD, PLN).


"prices": [
  { "price_type_id": "1", "price": 1250.00, "currency": "UAH" },
  { "price_type_id": "2", "price": 999.00, "currency": "UAH" }
]


Об'єкт властивостей товару: products[].properties{}

Містить значення оголошених у масиві properties[] характеристик:


"properties": {
  "stock": 14,
  "cost_price": 750.50,
  "is_exclusive": true,
  "brand_country": "Німеччина"
}


Тип даних у значенні поля повинен строго відповідати типу, оголошеному в properties[]. Якщо поле stock оголошене як int, а передано рядок "14", синхронізацію буде зупинено через помилку валідації типів.


Поле availability (наявність)

Поле підтримує будь-який зручний формат із зазначених:


Формат

Товар є в наявності

Товару немає в наявності

boolean (рекомендовано)

true

false

string (знаки)

"+"

"-"

string (числа)

"1"

"0"

string (текст)

"yes", "in_stock", "в наявності"

"no", "out_of_stock", "немає"


Що далі


Оновлено: 04/11/2026

Чи була ця стаття корисною?

Поділіться своїм відгуком

Скасувати

Дякуємо!