Вариации: product_variations¶
Вариации — это похожие товары, которые отличаются друг от друга одной или несколькими характеристиками. Например, у одной футболки может быть 3 цвета, и каждый цвет доступен в 5 размерах. В этом случае у нас 15 товаров. Если объединить эти товары в группу вариаций, то на витрине на странице каждого из них появится переключатель цвета и размера.
Каждый товар может одновременно относиться только к одной группе вариаций. Но заменить группу у товара легко. Если вариацию отцепить от группы вариаций, она станет обычным товаром.
URL¶
http://example.com/api/product_variations — обращается ко всем вариациям.
Поддерживает только
GETиPOST.http://example.com/api/product_variations/:id — обращается к конкретной вариации.
Поддерживает
GET,PUTиDELETE.http://example.com/api/product_variations_groups/:id/product_variations — обращается ко всем вариациям из конкретной группы вариаций.
http://example.com/api/product_variations_groups/:id/product_variations/:id — обращается к конкретной вариации из конкретной группы вариаций.
http://example.com/api/product_variations_groups/:code/product_variations — обращается ко всем вариациям из конкретной группы вариаций.
http://example.com/api/product_variations_groups/:code/product_variations/:id — обращается к конкретной вариации из конкретной группы вариаций.
Вложенные объекты¶
Постраничная навигация и сортировка¶
Параметры сортировки и постраничной навигации полностью наследуются от API товаров.
Фильтры¶
Параметры фильтрации полностью наследуются от API товаров. Модуль Вариации товаров добавляет следующие новые параметры фильтрации, доступные как через программные интерфейсы (API) товаров, так и через программные интерфейсы (API) вариаций:
product_type(enum[P|V]) — фильтр по типу товара, позволяет получить только вариации по умолчанию или только дочерние вариации (product_type=V).variation_group_id(int) — фильтр по группе вариаций, позволяет получить все вариации из группы.variations_by_product_id(int) — фильтр для получения вариаций по идентификатору товара.parent_product_id(int) — фильтр для получения дочерних вариаций.include_child_variations(enum[0|1]) — фильтр для включения в выборку дочерних вариаций. По умолчанию для витрины дочерние вариации не включаются в выборку.group_child_variations(enum[0|1]) — фильтр для группировки дочерних вариаций. По умолчанию для витрины дочерние вариации группируются, а для панели администратора — нет.
Дополнительные параметры¶
Дополнительные параметры для выборки товаров полностью наследуются от API товаров. Модуль Вариации товаров добавляет следующие новые параметры выборки, доступные как через программные интерфейсы (API) товаров, так и через программные интерфейсы (API) вариаций:
get_variation_features_variants(enum[0|1]) — флаг расширения данных о товаре. Если параметр указан, то для каждой вариации будет определен массивvariation_features_variants, указывающий на возможные варианты характеристик вариации. В ядре эти данные используются для отображения переключателя между вариациями.get_variation_info(enum[0|1]) — флаг расширения данных о товаре. Если параметр указан, то для каждой вариации будут определены следующие данные:variation_feature_ids— идентификаторы характеристик, на основе которых была создана группа вариаций текущего товара;variation_feature_collection— коллекция характеристик с целями этих характеристик, на основе которых была создана группа вариаций текущего товара;variation_group_id— идентификатор группы вариаций;variation_group_code— символьный код группы вариаций;variation_parent_product_id— идентификатор родительского товара;variation_sub_group_id— символьный идентификатор подгруппы;variation_features— значения вариационных характеристик текущего товара.
get_variation_name(enum[0|1]) — флаг расширения данных о товаре. Если параметр указан, то для каждой вариации будут определено название товара с лейблом в свойствеvariation_name. Пример значения: T-shirt, Color: Blue (Medium).
Поля¶
Поля товаров полностью наследуются от API товаров. Модуль Вариации товаров добавляет следующие новые поля, доступные как через программные интерфейсы (API) товаров, так и через программные интерфейсы (API) вариаций:
variation_group_id— идентификатор группы вариаций;variation_group_code— символьный код группы вариаций;variation_parent_product_id— идентификатор родительского товара;variation_sub_group_id— символьный идентификатор подгруппы;variation_features— значения вариационных характеристик текущего товара;variation_feature_ids— идентификаторы характеристик, на основе которых была создана группа вариаций текущего товара;variation_feature_collection— коллекция характеристик с целями этих характеристик, на основе которых была создана группа вариаций текущего товара.
Создание/обновление товаров¶
Логика создания обновления товаров в группе вариаций полностью наследуется от программных интерфейсов (API) товаров. Модуль Вариации товаров учитывает следующие поля при создании/обновлении:
variation_feature_values— cписок значения характеристик вариационного товара в форматеfeature_id: variant_id. Позволяет менять значение характеристик, на основе которых была создана группа вариаций.variation_group_id— идентификатор группы вариаций, позволяет добавлять или перемещать товар в группу вариаций.
Примеры¶
Получение списка товаров по группе вариаций:
Пример 1:
curl -X GET "http://example.com/api/product_variations?variation_group_id=:id" \ -H "Content-Type: application/json" \ -H "Authorization: Basic ******"
Где
:id— идентификатор группы вариаций.Пример 2:
curl -X GET "http://example.com/api/product_variations_groups/:id/product_variations" \ -H "Content-Type: application/json" \ -H "Authorization: Basic ******"
Где
:id— идентификатор группы вариаций.Пример 3:
curl -X GET "http://example.com/api/product_variations_groups/:code/product_variations" \ -H "Content-Type: application/json" \ -H "Authorization: Basic ******"
Где
:code— символьный код группы вариаций.Пример 4:
curl -X GET "http://example.com/api/products?variation_group_id=:id" \ -H "Content-Type: application/json" \ -H "Authorization: Basic ******"
Где
:id— идентификатор группы вариаций.
Получение только вариаций:
Пример 1:
curl -X GET "http://example.com/api/product_variations" \ -H "Content-Type: application/json" \ -H "Authorization: Basic ******"
Пример 2:
curl -X GET "http://example.com/api/products?has_variation_group=1" \ -H "Content-Type: application/json" \ -H "Authorization: Basic ******"
Добавление товара в группу вариаций:
curl -X PUT "http://example.com/api/product_variations/:id" \ -H "Content-Type: application/json" \ -H "Authorization: Basic ******" \ -d '{"variation_group_id":11}'
Где
:id— идентификатор товара.Создание товара и добавление созданного товара в группу вариаций:
curl -X POST "http://example.com/api/product_variations_groups/:code/product_variations" \ -H "Content-Type: application/json" \ -H "Authorization: Basic ******" \ -d '{"product":"Штаны","price":150,"product_features":{"549":1199,"548":1195},"category_ids":[224]}'
Где
:code— символьный код группы вариаций.
DetachProductVariation¶
API-сущность для удаления вариации из группы вариаций.
URL¶
http://example.com/api/product_variations/:id/detach_product_variation — поддерживает только POST-запросы.
Пример запроса¶
curl -X POST "http://example.com/api/product_variations/:id/detach_product_variation" \
-H "Content-Type: application/json" \
-H "Authorization: Basic ******" \
-d '{}'
Где :id — идентификатор товара, который должен быть удален группы вариаций.
Результат ответа¶
В случае успешного выполнения операции возвращается статус 201 HTTP.
SetDefaultProductVariation¶
API-сущность для установки вариации как вариации по умолчанию.
URL¶
http://example.com/api/product_variations/:id/set_default_product_variation — поддерживает только POST-запросы.
Пример запроса¶
curl -X POST "http://example.com/api/product_variations/292/set_default_product_variation" \
-H "Content-Type: application/json" \
-H "Authorization: Basic ******" \
-d '{}'
Где :id — идентификатор нового товара по умолчанию в группе вариаций.
Результат ответа¶
В случае успешного выполнения операции возвращается статус 201 HTTP.
GenerateProductVariations¶
API-сущность для генерации вариаций на основе комбинаций вариантов характеристик товара.
URL¶
http://example.com/api/product_variations/:id/generate_product_variations — поддерживает только POST-запросы.
Пример запроса¶
curl -X POST "http://example.com/api/product_variations/:id/generate_product_variations" \
-H "Content-Type: application/json" \
-H "Authorization: Basic ****" \
-d '{"combinations":[{"548":1193,"549":1200},{"548":1197,"549":1199}]}'
Где:
:id— идентификатор товара, на основе которого будут созданы вариации;combinations— список комбинаций вариантов характеристик товара в форматеfeature_id: variant_id
Результат ответа¶
{
"group":{
"id":13,
"code":"PV-93ECD34F4",
"features":[
{
"feature_id":549,
"purpose":"group_catalog_item",
"is_purpose_create_catalog_item":true,
"is_purpose_create_variation_of_catalog_item":false
},
{
"feature_id":548,
"purpose":"group_variation_catalog_item",
"is_purpose_create_catalog_item":false,
"is_purpose_create_variation_of_catalog_item":true
}
],
"products":[
{
"product_id":295,
"parent_product_id":0,
"company_id":1,
"feature_values":[
{
"feature_id":549,
"variant_id":"1199"
},
{
"feature_id":548,
"variant_id":"1194"
}
]
},
{
"product_id":296,
"parent_product_id":0,
"company_id":1,
"feature_values":[
{
"feature_id":549,
"variant_id":"1200"
},
{
"feature_id":548,
"variant_id":"1193"
}
]
},
{
"product_id":297,
"parent_product_id":295,
"company_id":1,
"feature_values":[
{
"feature_id":549,
"variant_id":"1199"
},
{
"feature_id":548,
"variant_id":"1197"
}
]
}
],
"created_at":1585055941,
"updated_at":1585055941
},
"products_status":{
"295":1,
"296":1,
"297":1
}
}
Где:
group— объект, описывающий группу вариаций. Подробное описание структуры группы вариаций можно увидеть в этой статье.products_status— статусы результата добавления товара в группу вариаций в форматеproduct_id: result. Результат может принимать следующие значения:- 0 — нет изменений;
- 1 — товар добавлен в группу вариаций;
- 2 — товар обновлен в группе вариаций;
- 253 — продавец или витрина, которой принадлежит товар, не соответствуют другим товарам в группе вариаций;
- 254 — комбинация вариантов характеристик товара уже есть в группе вариаций;
- 255 — товар не имеет подходящий значений характеристик для группы вариаций;
- 200 — неизвестная ошибка.