/api/lite/pub/products
Запрос указанного продукта (публичный)
/api/lite/pub/products
Метод возвращает продукты с вариантами.
Продукт всегда содержит хотя бы один вариант.
Фильтрация по полям товара:
Можно задавать фильтр параметром ?query=test - для фильтрации по полям article , humanId, shortName
Дополнительно можно фильтровать по конкректному продукту параметром ?id=1000
Также можно запрашивать конкретный вариант продукта полями variantId и variantExtId
Параметр available позволяет фильтровать скрытые товары. Если флаг не передан, скрытые товары не филтьруются(отображаются активные + скрытые)
Фильтрация по фильтрам, атрибутам, вариантам товара:
Фронтенд при выборе покупателем значений тех или иных фильтров должен составить поисковый GET запрос и передать его в метод GET /pub/products
в виде суммы параметров:
?filters=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4
для всех фильтров в блоке OTHER
?attributes=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4
для всех фильтров в блоке ATTRIBUTES
?features=field_name1:field_value1,field_value2;field_name2:field_value3-field_value4
для всех фильтров в блоке FEATURES
где field_name - это значение поля filters.fields.name, field_value - это значение поля filters.fields.stringValues для filters.fields.type: "string" или decimalValues для filters.fields.type: "decimal" или true/false для filters.fields.type: "boolean".
Для для filters.fields.type: "decimal" также можно передавать диапазон указывая начальное и конечное значение через дефис: field_name2:field_value3-field_value4
Коллекции
Можно задавать фильтр по коллекциям параметром ?collections=1007,1008 - для фильтрации по id коллекций (можно передавать списком)
Пейджинация
Для пейджинации используются параметры page и size: size - заказов на странице, page - номер страницы.
Пример: /api/lite/products?page=0&size=200
Если параметры не переданы, то дефолтные значения page=0&size=100
Также, для отображение пейджинации следует анализировать параметр recordsTotal, возвращающий общее количество записей (с учетом примененной фильтрации, если она есть).
Сортировка
Для сортировки задается параметр order, принимающий код поля для сортировки и направление сортировки (asc, desc), отделенное символом плюса.
Пример сортировки по имени (возрастание): /api/lite/products?order=shortname+asc
Пример сортировки по имени (убывание): /api/lite/products?order=shortname+desc
Доступные коды сортировки:
- shortname
- article
- price
-
amount
- discount
Пример вызова с одновременной фильтрацией, пейджинацией и сортировкой:
/api/lite/products?query=Поло&order=shortname+asc&page=0&size=200
Последовательность применения поисковых критериев:
- Если задан id продукта - поиск идет только по нему. Выход из поиска
- Если задан variantId конкретного варианта товара - поиск идет по нему (по внутреннему или внешнему коду варианта, согласно настройке аккаунта). Выход из поиска
- Если заданы параметры filters, attributes, features - будет поиск по ним (включая совместно по их комбинациям). Если одновременно задан параметр collections - он будет учтен. Выход из поиска
- Если заданы параметры query или collections - будет поиск по ним (включая совместно по обоим). Выход из поиска
- Иначе выводятся все продукты с учетом запрошенного флага deleted
Поле | Тип\формат | Описание |
recordsTotal | num | Общее количество записей в рамках заданной фильтрации. Используется для пейджинации. |
products |
array | Перечень товарных предложений |
id | string | Идентификатор продукта |
extId | string | Внешний код продукта |
shortName | string | Наименование продукта |
description | string | Описание (может содержать html) |
available | boolean | Отображение для продажи в онлайн-магазине |
deleted | boolean | Архивная карточка |
reviewScore | decimal | Оценка товара |
variants | array | Массив вариантов |
id | string | Уникальный идентификатор варианта. |
extId | string | Внешний код варианта |
article | string | Артикул (sku) товара |
price | decimal | Цена продажи |
oldPrice | decimal | "Старая" цена. Для визуализации скидки. |
stock | object | Остатки товара на всех складах |
pos | num | Порядковый номер варианта, относительно |
optionsUsed | array | Массив, указывающий соответствие опции и её значения для конкретного продукта. Значения указываются как ссылки на значение из общего словаря опций. |
defaultImage | string | Ссылка на изображение из общего массива изображений. Может быть не задан. |
weight | decimal | Вес товара |
dimensions | object | Содержит информацию о размерах |
options | array | Словарь возможных опций для продукта, и также значений опций. Каждое значение опции имеет собственный идентификатор. |
id | string | Идентификатор опции |
name | string | Наименование |
name_plural | string | Наименование во множественном числе |
values | array | Массив значений данной опции |
images | array | Массив изображений продукта. Первое изображение считается основным. |
id | string | Идентификатор изображения |
url | string | URL изображения |
pos | decimal | Позиция изображения в рамках продукта |
collections | array | Массив коллекций, в которые входит продукт |
id | string | Идентификатор коллекции |
attributes | array | Массив значений атрибутов продукта |
id | string | Идентификатор атрибута |
type | enum | Тип атрибута (см. описание атрибутов) |
stringValue | string | Значение атрибута (строка) |
decimalValue | decimal | Значение атрибута (число) |
ordering | decimal | Cортировка |
anyPublicCollections | boolean | Есть хотя бы одна коллекция в каталоге с этим товаром |
Пример результата запроса:
{
"success": true,
"recordsTotal": 2,
"products": [
{
"id": "1002",
"extId": "",
"shortName": "Футболка",
"description": "<p><h1><strong>Лучшие</strong> футболки</h1><br></p>",
"available": true,
"deleted": false,
"reviewScore": 4.0,
"anyPublicCollections": true,
"variants": [
{
"id": "1005",
"extId": null,
"article": "",
"price": 990,
"oldPrice": 1200,
"stock": [
{
"warehouseCode": "a8064680-6f8c-830c-1ea1-0ab8a032e244",
"stockTotal": 40,
"stockAvailable": 38,
"stockReserved": 2
}
],
"ordering": 1,
"optionsUsed": [
{
"id": "size",
"value": "L"
}
],
"defaultImage": "8b16a469-2b8c-4df4-85f2-c9c9afa1f921",
"weight": 500,
"dimensions": {
"height": 5,
"width": 5,
"depth": 10
}
},
{
"id": "1006",
"extId": null,
"article": "",
"price": 990,
"oldPrice": 1200,
"stock": [
{
"warehouseCode": "a8064680-6f8c-830c-1ea1-0ab8a032e244",
"stockTotal": 40,
"stockAvailable": 38,
"stockReserved": 2
}
],
"ordering": 2,
"optionsUsed": [
{
"id": "size",
"value": "M"
}
],
"defaultImage": null,
"weight": 500,
"dimensions": {
"height": 5,
"width": 5,
"depth": 10
}
}
],
"images": [
{
"id": "8b16a469-2b8c-4df4-85f2-c9c9afa1f921",
"url": "https://img.kak2c.ru/i/f/g/IA33pVkwd.jpg?1564511037",
"pos": "10000.000000000000000"
},
{
"id": "8b16a469-2b8c-4df4-85f2-c9c9afa1b323",
"url": "https://img.kak2c.ru/i/f/g/IA33pVkw.jpg?1564511037",
"pos": "5000.00000"
}
],
"collections": [
"1029", "1031"
],
"attributes": [
{
"id": "material",
"type": "string",
"stringValue": "Хлопок 97%, эластан 3%",
"ordering": 1
}
]
}
]
}
Запрос списка брендов по всем продуктам (публичный)
/api/lite/pub/products/brands
Параметр
|
Тип\формат | Описание |
searchString |
string | (необязательный) |
Запрос возвращает список всех существующих брендов магазина. Если задан параметр 'searchString' - возвращает только те бренды, в которых есть вхождение этой строки(в любом месте). Регистр не важен
Пример ответа (/api/lite/pub/products/brands?searchString=кактус)
:
Пример запроса:
{
"brands": [
"Кактус Дейли",
"Кактус ПРО"
]
}