/api/lite/products/filters
Получение блоков фильтров
/api/lite/products/filters
Возвращает для заданной коллекции перечень блоков и фильтров в них для поиска товаров.
Блоки бывают трех типов - Для атрибутов, для опций, и другие. Атрибуты и опции выделены в отдельные блоки ввиду потенциально большого количества справочников и значений в них.
Блоки можно запрашивать в режиме для покупателя и для владельца магазина.
В режиме для покупателя - загрузится список вручную сформированных блоков фильтров и выбранных значений фильтров, которые нужно отобразить покупателю.
В режиме для продавца - загрузятся автоматически сформированные блоки со всеми фильтрами и со всеми значениями фильтров и справочников в них - это будет использовать продавец для ручного поиска товаров для формирования заказов или других сценариях использования поиска товаров.
Значения в атрибутах, опциях и пр. - автозаполняются по факту их использования в том или ином товаре. Это будет делаться асинхронно по регламенту, а не при исполнении запроса поиска, т.к. операция дорогая по времени.
Обязательный параметр запроса - ?collectionId=123
Опциональный параметр - режим запроса - под покупателем или под продавцом. По умолчанию - под покупателем
?mode=client или ?mode=customer
Фронтенд при выборе покупателем значений тех или иных фильтров должен составить поисковый 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
Поля возвращаемого значения:
Параметр | Тип / формат | Описание |
filterBlocks | array | Массив блоков |
id | string | Идентификатор блока |
type | enum | Тип блока. ATTRIBUTES (только атрибуты товаров), FEATURES (только опции товаров), OTHER (остальные поля товаров) |
mode | enum |
Режим работы блока. CUSTOMER (покупатель, отображены выбранные продавцом фильтры в блоке), CLIENT (продавец - отображены все возможные поля и блоки) |
ordering | integer | Сортировка |
collectionId | string | Идентификатор коллекции к которой относится данный блок фильтров |
filters | Массив | Перечень фильтров в блоке |
enabled | boolean | Виден на витрине |
type | enum | Тип фильтра. PRICE, STOCK_AVAILABLE, SIZE_WIDTH, SIZE_DEPTH, SIZE_HEIGHT, WEIGHT, COUNTRY_OF_ORIGIN, ATTRIBUTES, FEATURES, DISCOUNT_AVAILABLE, IS_NOVELTY, BRAND, IS_BESTSELLER, |
ordering | integer | Сортировка |
fields | Массив | Поля фильтра |
name | string | Наименование поля |
nameReadable | string | Наименование поля для пользователя |
type | enum | Тип поля. string, decimal, boolean |
ordering | integer | Сортировка |
stringValues | Массив | Массив строковых значений поля |
decimalValues | Массив | Массив числовых значений поля |
Пример ответа:
{
"success": true,
"filterBlocks": [
{
"id": "1029",
"type": "OTHER", // ATTRIBUTES, FEATURES
"mode": "CUSTOMER", //CLIENT
"ordering": 10,
"collectionId": "123456"
"filters":[
{
"type":"PRICE", // STOCK_AVAILABLE, SIZE_WIDTH, SIZE_DEPTH, SIZE_HEIGHT, WEIGHT, COUNTRY_OF_ORIGIN, ATTRIBUTES, FEATURES, DISCOUNT_AVAILABLE, IS_NOVELTY, BRAND, IS_BESTSELLER
"enabled": true,
"ordering": 10,
"fields":[
{
"name" : "field1",
"nameReadable": "Поле 1",
"type": "string", // decimal, boolean
"ordering": 10,
"stringValues": [
"value1", "value2"
]
},
{
"name" : "field2",
"nameReadable": "Поле 2",
"type": "decimal",
"ordering": 11,
"decimalValues": [
15.2, 16.8
]
},
{
"name" : "field3",
"nameReadable": "Поле 3",
"type": "boolean",
"ordering": 12
}
]
}
]
}
]
}
Создание/обновление блока фильтров
/api/lite/products/filters
Создает или обновляет блок фильтров для покупателя.
Фильтры для продавца создаются и заполняются автоматом.
Если id указан - проводится обновление блока фильтров с указанным id, если не указан - создается новый блок.
Есть проверка - фильтры с типом ATTRIBUTES или FEATURES - можно добавлять только в отдельные блоки с аналогичными типами, в которых нет других фильтров
Поля в блоках фильтров (кроме типов ATTRIBUTES, FEATURES) отдельно не задаются, их бэкенд добавит автоматически по типу фильтра.
Пример обновления блока:
{
"id": "1029",
"type": "OTHER", // ATTRIBUTES, FEATURES
"ordering": 10,
"collectionId": "123456"
"filters":[
{
"type":"PRICE", // STOCK_AVAILABLE, SIZE_WIDTH, SIZE_DEPTH, SIZE_HEIGHT, WEIGHT, COUNTRY_OF_ORIGIN, ATTRIBUTES, FEATURES, DISCOUNT_AVAILABLE, IS_NOVELTY, BRAND, IS_BESTSELLER
"enabled": true,
"fields":[ // только для ATTRIBUTES, FEATURES
{
"name" : "field1",
"nameReadable": "Поле 1",
"type": "string", // decimal, boolean
"ordering": 10,
"stringValues": [
"value1", "value2"
]
},
{
"name" : "field2",
"nameReadable": "Поле 2",
"type": "decimal",
"ordering": 11,
"decimalValues": [
15.2, 16.8
]
},
{
"name" : "field3",
"nameReadable": "Поле 3",
"type": "boolean",
"ordering": 12
}
]
}
]
}
Пример ответа:
{
"success": true,
"id": "1029"
}
Удаление блока фильтров
/api/lite/products/filters
Для удаления блока фильтров, выполняется следующий DELETE запрос с указанием идентификатора блока в параметре id
В ответ возвращается результат операции и id удаленного блока.
Пример успешного ответа:
{
"success": true,
"id": "6F9619FF-8B86-D011-B42D-00CF4FC964FF"
}
Пример ошибки:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Блока фильтров с указанным id не существует"
}
]
}