Skip to main content

/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 не существует"
    }
  ]
}