Справочники каталога
Категории, бренды, типы товаров и характеристики со словарём значений: параметры, примеры и все поля.
На этой странице
В справочниках каталога лежат категории, бренды, типы товаров и
характеристики со всеми значениями. Товар ссылается на них
номерами (category_ids, brand.id, type_id, options), поэтому
справочники стоит забрать раньше товаров.
Все четыре адреса требуют права catalog:read, отдают списки страницами и
принимают общие параметры limit, offset, locale и storefront_id. Что
от них зависит и какие ошибки бывают, описано на странице
«Каталог: видимость и синхронизация».
Справочники короткие, поэтому просите их с limit=200.
Переводимые поля (name, value) приходят объектом по языкам магазина. Язык,
на котором поле не заполнено, в объект не попадает, а если поле не заполнено
ни на одном языке, приходит null.
GET /api/v1/categories
Категории, видимые на витрине, плоским списком в порядке дерева. Сразу за
разделом идут его подразделы. Право: catalog:read. Какие категории
считаются видимыми, описано на странице
«Каталог: видимость и синхронизация».
| Параметр | Тип | По умолчанию | Что делает |
|---|---|---|---|
updated_since |
дата и время ISO 8601 | нет | только категории, изменённые начиная с этого момента. Изменением считается правка названия, перевода, адреса (slug), типа и витрин категории, а также включение, перенос и смена адреса её самой или раздела, в котором она лежит. Правка настроек фильтра, условий подборки, сортировки товаров и запрета индексации сюда не попадает, потому что их в ответе нет. Если у любой витрины поменяли домен, языки, способ адресов страниц или другое, от чего зависит ответ, а также если поменяли языки магазина, сюда попадают все категории, потому что меняются их ссылки url. Если владелец добавил, перенёс, переставил или удалил любую категорию, сюда попадают все категории, потому что sort может сдвинуться у любой из них. Выключенные, удалённые и скрытые от этой витрины категории сюда не попадают, их пропажу видно только по полному списку. Подробно в разделе «Изменения: updated_since» |
Листания по after_id у категорий нет. Список короткий, поэтому забирайте его
целиком. Категория, которую выключили или отдали другой витрине, из списка
пропадает. Уберите её и у себя.
curl "https://shop.example.ua/api/v1/categories?limit=200" \
-H "Authorization: Bearer <ключ>"
{
"data": [
{
"id": 303,
"parent_id": null,
"slug": "electrics-and-lighting",
"name": { "ru": "Электрика и свет", "uk": "Електрика та світло", "en": "Electrics and lighting" },
"type": "static",
"depth": 0,
"sort": 1,
"url": "https://shop.example.ua/electrics-and-lighting/",
"updated_at": "2026-08-13T18:20:34Z"
},
{
"id": 304,
"parent_id": 303,
"slug": "lampochki",
"name": { "ru": "Лампочки", "uk": "Лампочки" },
"type": "static",
"depth": 1,
"sort": 2,
"url": "https://shop.example.ua/electrics-and-lighting/lampochki/",
"updated_at": "2026-10-17T07:34:44Z"
},
{
"id": 330,
"parent_id": 303,
"slug": "do-100-grn",
"name": { "ru": "Всё до 100 грн", "uk": "Усе до 100 грн" },
"type": "dynamic",
"depth": 1,
"sort": 9,
"url": "https://shop.example.ua/electrics-and-lighting/do-100-grn/",
"updated_at": "2026-09-02T10:15:00Z"
}
],
"meta": { "total": 3, "limit": 200, "offset": 0 },
"links": { "next": null, "prev": null }
}
| Поле | Тип | Что значит |
|---|---|---|
id |
целое | номер категории |
parent_id |
целое или null |
номер родительской категории. null у раздела верхнего уровня. Родитель всегда есть в этом же списке |
slug |
строка | адрес категории на сайте. Он один на все языки |
name |
объект или null |
название категории по языкам магазина |
type |
строка | static — обычная категория, товары в неё добавляет владелец. dynamic — категория «по условиям», в неё попадают товары, подходящие под условия, например «цена до 100 грн» |
depth |
целое | уровень вложенности. 0 у раздела верхнего уровня, 1 у его подраздела и так далее |
sort |
целое | место категории в дереве. По нему список уже упорядочен. Числа идут по возрастанию, но не подряд |
url |
строка | полный адрес категории на витрине, на языке ответа |
updated_at |
дата | время в UTC, когда у категории в последний раз изменилось то, что видно в ответе (перевод, адрес, место в дереве или ссылка). Это не время правки в панели, и правка настроек фильтра его не сдвигает |
Категории «по условиям» в поле category_ids товара не попадают, потому что
магазин не проверяет условия для каждого товара в ответе. Чтобы получить товары
такой категории, запросите /products?category_id=330. Этот фильтр подбирает
товары по условиям категории так же, как витрина.
GET /api/v1/brands
Бренды магазина. Право: catalog:read. Порядок: как значения расставлены в
характеристике бренда, затем по номеру.
В магазине бренды хранятся как значения характеристики, которую владелец
назначил брендом. Поэтому id бренда совпадает с номером этого значения. Тот же номер приходит в
поле brand.id товара и принимается фильтром /products?brand_id=. Если
характеристика бренда в магазине не назначена, список пустой.
Своих параметров у адреса нет.
curl "https://shop.example.ua/api/v1/brands?limit=200" \
-H "Authorization: Bearer <ключ>"
{
"data": [
{
"id": 2368,
"slug": "philips",
"name": { "ru": "Philips", "uk": "Philips", "en": "Philips" },
"logo": "https://shop.example.ua/storage/brands/2/1040/philips.svg",
"website": "https://www.philips.ua",
"url": "https://shop.example.ua/brand/philips/"
},
{
"id": 2375,
"slug": null,
"name": { "ru": "Feron" },
"logo": null,
"website": null,
"url": null
}
],
"meta": { "total": 2, "limit": 200, "offset": 0 },
"links": { "next": null, "prev": null }
}
| Поле | Тип | Что значит |
|---|---|---|
id |
целое | номер бренда, он же номер значения характеристики бренда |
slug |
строка или null |
адрес страницы бренда. null, если владелец не заводил бренду страницу |
name |
объект или null |
название бренда по языкам магазина |
logo |
строка или null |
полный адрес логотипа со страницы бренда |
website |
строка или null |
сайт производителя со страницы бренда |
url |
строка или null |
полный адрес страницы бренда на витрине. null, если страницы нет |
Бренд, страницу которого владелец выключил или отдал другой витрине, в список не попадает. Бренд без страницы виден всегда.
GET /api/v1/product_types
Типы товаров. Тип задаёт набор характеристик и единицу продажи, которые товар
получает по умолчанию. Право: catalog:read. Порядок: как типы расставлены в
настройках каталога, затем по номеру. От витрины список не зависит.
Своих параметров у адреса нет.
curl "https://shop.example.ua/api/v1/product_types?limit=200" \
-H "Authorization: Bearer <ключ>"
{
"data": [
{
"id": 83,
"code": "lamps",
"name": { "ru": "Лампы", "uk": "Лампи" },
"unit": "pcs",
"qty_step": "1.000",
"qty_min": "1.000",
"feature_ids": [605, 612, 615, 616, 627]
},
{
"id": 91,
"code": "cable",
"name": { "ru": "Кабель", "uk": "Кабель" },
"unit": "m",
"qty_step": "0.500",
"qty_min": "1.000",
"feature_ids": [640, 641]
}
],
"meta": { "total": 2, "limit": 200, "offset": 0 },
"links": { "next": null, "prev": null }
}
| Поле | Тип | Что значит |
|---|---|---|
id |
целое | номер типа |
code |
строка | код типа латиницей |
name |
объект или null |
название типа по языкам магазина |
unit |
строка или null |
единица продажи по умолчанию: pcs, m, kg, g, l, m² или своя единица магазина. Список стандартных единиц отдаёт /shop в поле units |
qty_step |
строка или null |
шаг количества, три знака после точки. При шаге "0.500" кабель продаётся по полметра |
qty_min |
строка или null |
наименьшее количество в заказе, три знака после точки |
feature_ids |
массив целых | номера характеристик типа в том порядке, в котором их расставил владелец. Характеристика «для всех типов» попадает сюда, только если владелец поставил её на место в этом типе. Остальные такие характеристики подходят типу и без этого, в /features у них стоит applies_to_all_types: true |
Единицу, шаг и минимум типа магазин подставляет товару, когда владелец
заводит товар или меняет ему тип и не задаёт эти значения сам. Если потом
владелец поправит настройки типа, у заведённых товаров ничего не поменяется.
Единица продажи приходит в поле unit товара и одна для всех его артикулов.
Шаг и наименьшее количество приходят у каждого артикула своими полями, ровно
такими, какие применит корзина. Заказывайте по ним, а не по значениям типа.
GET /api/v1/features
Характеристики со словарём значений. Право: catalog:read. Порядок: как
характеристики расставлены в справочнике, затем по номеру. От витрины список
не зависит.
Служебные характеристики, скрытые от покупателя, сюда не попадают. Опции
покупки (for_skus: true) приходят всегда, даже скрытые, потому что на них
ссылаются артикулы в поле options.
Своих параметров у адреса нет.
curl "https://shop.example.ua/api/v1/features?limit=200" \
-H "Authorization: Bearer <ключ>"
{
"data": [
{
"id": 616,
"code": "light",
"name": { "ru": "Свет", "uk": "Світло" },
"type": "text",
"format": "select",
"dimension": null,
"unit": null,
"for_skus": true,
"is_filterable": true,
"applies_to_all_types": false,
"product_type_ids": [83],
"values": [
{ "id": 2426, "value": { "ru": "нейтральный", "uk": "нейтральне" }, "color": null },
{ "id": 2428, "value": { "ru": "холодный белый", "uk": "холодне біле" }, "color": null }
]
},
{
"id": 596,
"code": "color",
"name": { "ru": "Цвет", "uk": "Колір" },
"type": "color",
"format": "select",
"dimension": null,
"unit": null,
"for_skus": true,
"is_filterable": true,
"applies_to_all_types": true,
"product_type_ids": [],
"values": [
{ "id": 2348, "value": { "ru": "белый", "uk": "білий" }, "color": "#FFFFFF" }
]
},
{
"id": 606,
"code": "height",
"name": { "ru": "Высота", "uk": "Висота" },
"type": "number",
"format": "single",
"dimension": "length",
"unit": "mm",
"for_skus": false,
"is_filterable": false,
"applies_to_all_types": false,
"product_type_ids": [83],
"values": []
}
],
"meta": { "total": 3, "limit": 200, "offset": 0 },
"links": { "next": null, "prev": null }
}
| Поле | Тип | Что значит |
|---|---|---|
id |
целое | номер характеристики |
code |
строка | код характеристики латиницей |
name |
объект или null |
название характеристики по языкам магазина |
type |
строка | вид значения: text текст, number число, boolean да или нет, color цвет, date дата |
format |
строка | сколько значений бывает у товара и откуда они берутся: single — одно значение, которое вводят вручную; select — одно значение из словаря; multiselect — несколько значений из словаря |
dimension |
строка или null |
семейство единиц у числовой характеристики: length, weight, volume, area, frequency, power, memory, time, temperature, current, charge, voltage. null — число без единиц или не число |
unit |
строка или null |
код единицы, в которой записаны значения, например mm, kg, l, m², W. У товара единица приходит подписью на языке ответа («мм», «Вт») |
for_skus |
логическое | опция покупки, по ней покупатель выбирает вариант товара, например цвет или размер |
is_filterable |
логическое | характеристика участвует в фильтре каталога на витрине |
applies_to_all_types |
логическое | характеристика подходит товарам всех типов |
product_type_ids |
массив целых | номера типов товаров, к которым привязана характеристика. У характеристики «для всех типов» массив бывает пустым |
values |
массив | словарь значений в порядке, заданном владельцем. У характеристик, значения которых вводят вручную, массив пустой |
values[].id |
целое | номер значения. На него ссылаются options[].value_id артикула и features[].values[].id товара |
values[].value |
объект или null |
подпись значения по языкам магазина |
values[].color |
строка или null |
цвет значения в виде #RRGGBB, если он задан в справочнике |