Специфікація JSON-фіду Pricer24
Специфікація фіду даних для синхронізації з вашим каталогом товарів.
1. Призначення документа
Цей документ описує технічні вимоги до JSON-фіду Pricer24. Загальні принципи роботи з фідами та підтримувані формати описані в окремому матеріалі — «Фіди даних Pricer24: загальні принципи та підтримувані формати».
2. Спосіб передачі даних
Протокол та метод
Ви надаєте URL фіду, а Pricer24 регулярно завантажує файл за цим посиланням методом GET.
Параметр | Значення |
Протокол | HTTP/HTTPS |
Метод | GET |
URL | Надається вами під час онбордингу. Приклад: https://your-domain.com/feed_storage/filename.json |
Content-Type | application/json |
Розклад екстракції | Щогодини, цілодобово, починаючи з 0:00 |
Аутентифікація.
URL фіду може бути відкритим або захищеним. За потреби ви можете обмежити доступ за IP-адресами Pricer24, через Basic Authentication або обома способами одночасно.
3. Формат файлу
Параметр | Значення |
Формат | JSON |
Кодування | UTF-8 |
Стиснення | Не обов’язкове. За необхідності - gzip |
Ліміт розміру | Відсутній |
Новий фід не додається до попереднього, а повністю замінює його як поточний стан каталогу.
Новий фід повністю визначає, які товари вважаються актуальними на даний момент..
4. Структура фіду
На верхньому рівні JSON-фід складається з трьох масивів: категорій, типів цін і товарів.
- categories: структура категорій товарів
- price_types: довідник типів цін
- products: детальний каталог товарів
{
"categories": [ ... ],
"price_types": [ ... ],
"products": [ ... ]
}
Масив categories[ ]:
Масив categories[ ] потрібен для передачі всіх товарних категорій у тій ієрархії, у якій вони існують у вашому каталозі, наприклад: Корм для тварин > Корм для котів > Сухий корм для котів > …
Глибина вкладеності - як у вашому власному каталогу.
Зв’язок між категоріями різних рівнів задається через parent_id.
Формат даних масиву categories[ ]:
Поле | Тип даних | Обов’язкове | Опис |
id | string | Так | Унікальний ідентифікатор категорії. Має залишатися незмінним між фідами |
parent_id | string / null | Так | ID батьківської категорії. Для кореневих категорій значення має бути null |
name | string | Так | Назва категорії товару |
Приклад масиву categories[ ]:
"categories":
[
{ "id": "1000", "parent_id": null, "name": "Бакалея" },
{ "id": "1001", "parent_id": "1000", "name": "Кондитерські вироби" },
{ "id": "1002", "parent_id": "1001", "name": "Торти" },
...
...
{ "id": "100Х", "parent_id": "100(Х-1)", "name": "Каштан"},
{ "id": "100(Х+1)", "parent_id": "100Х", "name": "Каштан 500 г пластик" }
]
Масив price_types[ ]:
У масиві price_types[ ] ви визначаєте, які саме ціни будуть передаватися для кожного товару.
Це можуть бути як типи цін, так і окремі торгові точки або канали продажу - залежно від того, у якому розрізі ви передаєте ціни.
Наприклад:
- роздрібна
- рекомендована роздрібна
- акційна
- оптова
- закупівельна
- перелік всіх цін товару по торгових точках.
Формат даних масиву price_types[ ]:
Поле | Тип даних | Обов’язкове | Опис |
id | string | Так | Унікальний ідентифікатор цінової категорії. Має залишатися незмінним |
name | string | Так | Назва типу ціни. Наприклад: "Роздрібна ціна", "Акційна ціна", "РРЦ", "Магазин Київ" |
Приклади масиву price_types[ ]:
[ { "id": "1", "name": "Моя ціна" } ]
[ { "id": "1", "name": "Роздрібна ціна" },
{ "id": "2", "name": "Акційна ціна" },
{ "id": "3", "name": "РРЦ" } ]
[ { "id": "XXXX", "name": "Магазин Харків" }, `
{ "id": "YYYY", "name": "Онлайн" } ]
Масив products[ ]:
Масив products[ ] є основною частиною фіду: саме тут передаються товари, їх характеристики та ціни.
Формат даних масиву products[ ]:
Поле | Тип даних | Обов’язкове | Опис |
id | string | Так | Унікальний ідентифікатор товару, є ключовим для синхронізації. Один і той самий id повинен завжди означати один і той самий товар у вашому каталозі. |
category_id | string | Так | ID категорії, до якої належить товар. Зазвичай це найнижча категорія в ієрархії, але не обов’язково. Наприклад, в ієрархії Electronics>PC>CPU>Intel клавіатура може належати до категорії PC (якщо немає окремої категорії “Клавіатури”) |
name | string | Так | Назва товару |
vendor | string | Ні | Назва виробника товару |
vendor_code | string | Ні | Артикул товару (код виробника). Передається за наявності. |
barcode | string | Ні | Штрих-код товару (EAN/UPC) |
link | string (URL) | Ні | Посилання на сторінку товару на сайті клієнта |
image_link | string (URL) | Ні | Посилання на зображення товару |
availbilty | string | Так | Статус наявності товару |
prices | array<object> | Так | Масив цін товару (тип ціни, валюта ціни). Має містити хоча б один елемент |
Саме за id система визначає, чи потрібно оновити існуючий запис, чи створити новий.
У товара може змінитися назва, наприклад:
- Samsung Galaxy -> Samsung Galaxy Black 128 Gb
- Purina Pro Adult turkey 85g -> Корм для дорослих котів Purina Pro з індичкою 85г.
але id , який визначає суть товару чи категорії, має залишитися тим же самим.
Не змінюйте id для товару(категорії), якщо по суті це той самий товар чи категорія. Якщо у товара змінився id - це призведе до втрати синхронізації каталогу з пропозиціями конкурентів і потребуватиме повторного налаштування, що призведе до фінансових витрат, яких можна уникнутиМасив prices[ ] всередині масиву products[ ]:
У масиві products.prices[ ] передаються конкретні значення цін товару.
Кожен елемент цього масиву посилається на одну з цінових категорій, описаних у кореневому масиві price_types[ ].
Спочатку ви описуєте всі цінові категорії в основному масиві price_types[ ] **, а потім у кожному товарі (у **products.prices[ ]) передаєте ціни з посиланням на відповідний id з довідника price_types[ ].
products.prices.price_type_id <- price_types.id
Формат даних масиву products.prices[ ]:
Поле | Тип даних | Обов’язкове | Опис |
price_type_id | string | Так | Ідентифікатор типу ціни. Він дорівнює елементу price_types.id кореневого масиву price_types [ ] |
price | number | Так | Ціна конкретного товару. Поле price потрібно передавати як число у форматі JSON. Для дробової частини використовуйте крапку, наприклад 189.99 |
currency | string | Так | Валюта ціни, згідно ISO-4217 (UAH, PLN, USD, EUR…) |
Поле availability - правила передачі
Ви можете передавати availability у тому вигляді, у якому це зберігається у вашій системі, наприклад:
Формат | Товар в наявності | Товар не в наявності |
string | "true" | "false" |
string | "+" | "-" |
string | "1" | "0" |
string | "yes", "in_stock", “Х”, ”В наявності” … | "no", "out_of_stock", ”Не в наявності”… |
Повний приклад фіду
{
"categories": [
{ "id": "1000", "parent_id": null, "name": "Бакалея" },
{ "id": "1001", "parent_id": "1000", "name": "Кондитерські вироби" },
{ "id": "1002", "parent_id": "1001", "name": "Цукерки" }
],
"price_types": [
{ "id": "1", "name": "Магазин Київ 1" },
{ "id": "2", "name": "Магазин Київ 2" },
{ "id": "3", "name": "Магазин Харків 1" },
{ "id": "4", "name": "Онлайн" }
],
"products": [
{
"id": "153",
"category_id": "1002",
"name": "Цукерки 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": "+",
"prices": [
{ "price_type_id": "1", "price": 189.90, "currency": "UAH" },
{ "price_type_id": "2", "price": 189, "currency": "UAH" }
],
},
{
"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": "-",
"prices": [
]
}
]
}
Оновлено: 05/05/2026
Дякуємо!