Fetch all variants

Fetch all variants with pagination and filtering Deprecated. Use https://graphql.enad.io instead.

GET/api/v1/omni/:app_id/:store_group/:market/:locale/variants
API
Shopper
Updated
Apr 26, 2026

shopper-api:GET:/api/v1/omni/:app_id/:store_group/:market/:locale/variants

Fetch all variants with pagination and filtering Deprecated. Use https://graphql.enad.io instead.

API ownership

  • API family: Shopper API
  • Best for: Public storefront catalog reads and shopper-facing product discovery.
  • Prefer Search API for: New product discovery, facets, autocomplete, and other search-heavy storefront flows.
  • Do not use from: Trusted admin integrations that create, update, or delete merchant-owned data.
  • Guide route: /apis/shopper/latest

The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation.

Operation

  • Method: GET
  • Path: /api/v1/omni/:app_id/:store_group/:market/:locale/variants
  • Summary: Fetch all variants
  • Description: Fetch all variants with pagination and filtering Deprecated. Use https://graphql.enad.io instead.
  • OpenAPI contract: shopper-api
  • Operation ID: Not documented in the OpenAPI contract.

Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.

Parameters35 parameters
NameInRequiredTypeDescription
app_idpathYesstringApp ID
store_grouppathYesstringStore group
localepathYesstringAlpha 2 country code. e.g se
marketpathYesstringThe related product market
pagequeryNointegerPage number (default: 1)
per_pagequeryNointegerItems per page (default: 50, max: 50)
only_activequeryNobooleanFilter only active products and variants
in_stockqueryNobooleanFilter by stock availability
in_stock_inqueryNostringFilter by stock availability in a specific warehouse (by warehouse slug)
sortqueryNostringSort order. One of created_at_desc, created_at_asc, name_asc, name_desc, category_order_asc, category_order_desc, collection_order_asc, collection_order_desc, tag_order_asc, tag_order_desc, variant_number_asc, variant_number_desc, variant_name_asc, variant_name_desc, price_asc, price_desc
skuqueryNostring[]Filter by SKUs (parent product)
variant_namequeryNostring[]Filter by Variant Names
collectionqueryNostring[]Filter on collections slugs (parent product)
tagqueryNostring[]Filter by tags key (parent product). e.g black-friday
slugqueryNostring[]Filter by product slugs (parent product)
brandqueryNostring[]Filter by brand slug (parent product)
seriequeryNostring[]Filter by serie slug (parent product)
categoryqueryNostring[]Filter by category slug (parent product)
smart_listqueryNostring[]Filter by smart list slug
static_listqueryNostring[]Filter by static list slug
not_in_skuqueryNostring[]Exclude products with these SKUs (parent product)
not_in_categoryqueryNostring[]Exclude products in these categories (by slug) (parent product)
not_in_collectionqueryNostring[]Exclude products in these collections (by uri) (parent product)
not_in_tagqueryNostring[]Exclude products with these tags (by key) (parent product)
not_in_brandqueryNostring[]Exclude products with these brands (by slug) (parent product)
not_in_seriequeryNostring[]Exclude products with these series (by slug) (parent product)
price_gtequeryNonumberFilter by minimum price (inclusive)
price_ltequeryNonumberFilter by maximum price (inclusive)
attributesqueryNostring[]Filter by attributes (format: template_key/value_key, e.g., color/blue). Product or Variant must match all specified attributes.
category_idqueryNostring[]Filter by category IDs (UUIDs). Product must be in at least one of the specified category IDs.
not_in_category_idqueryNostring[]Exclude products in these category IDs (UUIDs).
has_attribute_templatequeryNostring[]Find all variants who have a specific attribute template mapped, e.g size
searchqueryNostringFull text search on variants
group_by_attribute_templatequeryNostringGroup variants by an attribute template key (e.g., 'color'). When used, only one variant per product and attribute value is returned.
related_variants_attrqueryNostring[]Return related variants filtered by attribute combinations (e.g., 'color', 'color,size'). For single attributes, returns unique variants by that attribute within parent products. For two attributes, returns all variants in catalog sharing the first attribute values with unique second attribute values.
Request bodyNo documented body

Not documented in the OpenAPI contract.

Responses3 statuses
StatusDescriptionContent
200OKapplication/json (object)
400Invalid parametersapplication/json (object)
500Internal server errorapplication/json (object)

200 - object

Paginated Variant With Product Info List

PropertyTypeRequiredDetails
dataobject[]No-
pageintegerNo-
totalintegerNo-
total_pagesintegerNo-
Variant With Product Info
PropertyTypeRequiredDetails
attributesobjectNo-
brandsobjectNo-
categoriesobject[]No-
collectionsobject[]No-
created_atstringNo-
custom_fieldsobjectNo-
descriptionstringNo-
dimensionsobjectNo-
filesobject[]No-
html_descriptionstringNo-
html_short_descriptionstringNo-
idstringNo-
image_urlstringNo-
imagesobject[]No-
inventoriesobject[]No-
is_activebooleanNo-
meta_descriptionstringNo-
meta_titlestringNo-
packaging_dimensionsobjectNo-
parent_attributesobjectNo-
pricesobject[]No-
product_namestringNo-
product_numberstringNo-
ranknumberNo-
redirectsobjectNo-
related_variantsobject[]No-
shipping_attributesstring[]No-
short_descriptionstringNo-
slugstringNo-
slug_translationsobjectNo-
statusstringNo-
tagsobject[]No-
third_party_linksobject[]No-
updated_atstringNo-
validate_stockbooleanNo-
variant_namestringNo-
variant_numberstringNo-
videosobject[]No-
Product Brand
PropertyTypeRequiredDetails
addressobjectNo-
namestringNo-
seriesobjectNo-
slugstringNo-
Product Category
PropertyTypeRequiredDetails
attributesobjectNo-
cover_urlstringNo-
full_path_namestring[]No-
full_uri_translationsobjectNo-
idstringNo-
namestringNo-
orderintegerNo-
parent_idstringNo-
redirectsobjectNo-
slug_translationsobjectNo-
sort_orderintegerNo-
statusstringNo-
sub_categoriesobject[]No-
uristringNo-
Product Collection
PropertyTypeRequiredDetails
childrenobject[]No-
idstringNo-
orderintegerNo-
parent_idstringNo-
titlestringNo-
uristringNo-
Dimensions
PropertyTypeRequiredDetails
capacity_milliliterintegerNo-
depthintegerNo-
diameterintegerNo-
heightintegerNo-
lengthintegerNo-
weightintegerNo-
widthintegerNo-
File
PropertyTypeRequiredDetails
attributesobjectNo-
titlestringNo-
typestringNo-
urlstringNo-
Image
PropertyTypeRequiredDetails
altstringNo-
attributesobjectNo-
blurhashstringNo-
custom_fieldsobjectNo-
sortintegerNo-
titlestringNo-
urlstringNo-
Product Inventory With Information
PropertyTypeRequiredDetails
inventory_datestringNo-
quantityintegerNo-
warehouseobjectNo-
Variant Prices
PropertyTypeRequiredDetails
channel_typeenum("B2B", "B2C")No-
country_of_salestringNo-
marketsobject[]No-
store_group_descriptionstringNo-
store_group_idstringNo-
store_group_namestringNo-
store_group_slugstringNo-
PropertyTypeRequiredDetails
attributesobjectNo-
image_urlstringNo-
imagesobject[]No-
inventoriesobject[]No-
is_activebooleanNo-
pricesobject[]No-
tagsobject[]No-
validate_stockbooleanNo-
variant_idstringNo-
variant_namestringNo-
variant_numberstringNo-
videosobject[]No-
Tag
PropertyTypeRequiredDetails
attributesobjectNo-
created_atstringNo-
filterablebooleanNo-
idstringNo-
keystringNo-
namestringNo-
statusstringNo-
updated_atstringNo-
PropertyTypeRequiredDetails
idstringNo-
titlestringNo-
typestringNo-
urlstringNo-
Video
PropertyTypeRequiredDetails
attributesobjectNo-
descriptionstringNo-
titlestringNo-
urlstringNo-
{
  "data": [
    {
      "attributes": {},
      "brands": {
        "address": {
          "city": null,
          "co_address": null,
          "country": null,
          "email": null,
          "house_number": null,
          "postal_code": null,
          "state_province": null,
          "street_address": null
        },
        "name": "string",
        "series": {
          "name": null,
          "slug": null
        },
        "slug": "string"
      },
      "categories": [
        {
          "attributes": null,
          "cover_url": null,
          "full_path_name": null,
          "full_uri_translations": null,
          "id": null,
          "name": null,
          "order": null,
          "parent_id": null,
          "redirects": null,
          "slug_translations": null,
          "sort_order": null,
          "status": null,
          "sub_categories": null,
          "uri": null
        }
      ],
      "collections": [
        {
          "children": null,
          "id": null,
          "order": null,
          "parent_id": null,
          "title": null,
          "uri": null
        }
      ],
      "created_at": "string",
      "custom_fields": {},
      "description": "string",
      "dimensions": {
        "capacity_milliliter": 0,
        "depth": 0,
        "diameter": 0,
        "height": 0,
        "length": 0,
        "weight": 0,
        "width": 0
      },
      "files": [
        {
          "attributes": null,
          "title": null,
          "type": null,
          "url": null
        }
      ],
      "html_description": "string",
      "html_short_description": "string",
      "id": "string",
      "image_url": "string",
      "images": [
        {
          "alt": null,
          "attributes": null,
          "blurhash": null,
          "custom_fields": null,
          "sort": null,
          "title": null,
          "url": null
        }
      ],
      "inventories": [
        {
          "inventory_date": null,
          "quantity": null,
          "warehouse": null
        }
      ],
      "is_active": false,
      "meta_description": "string",
      "meta_title": "string",
      "packaging_dimensions": {
        "capacity_milliliter": 0,
        "depth": 0,
        "diameter": 0,
        "height": 0,
        "length": 0,
        "weight": 0,
        "width": 0
      },
      "parent_attributes": {},
      "prices": [
        {
          "channel_type": null,
          "country_of_sale": null,
          "markets": null,
          "store_group_description": null,
          "store_group_id": null,
          "store_group_name": null,
          "store_group_slug": null
        }
      ],
      "product_name": "string",
      "product_number": "string",
      "rank": 0,
      "redirects": {},
      "related_variants": [
        {
          "attributes": null,
          "image_url": null,
          "images": null,
          "inventories": null,
          "is_active": null,
          "prices": null,
          "tags": null,
          "validate_stock": null,
          "variant_id": null,
          "variant_name": null,
          "variant_number": null,
          "videos": null
        }
      ],
      "shipping_attributes": [
        "string"
      ],
      "short_description": "string",
      "slug": "string",
      "slug_translations": {},
      "status": "string",
      "tags": [
        {
          "attributes": null,
          "created_at": null,
          "filterable": null,
          "id": null,
          "key": null,
          "name": null,
          "status": null,
          "updated_at": null
        }
      ],
      "third_party_links": [
        {
          "id": null,
          "title": null,
          "type": null,
          "url": null
        }
      ],
      "updated_at": "string",
      "validate_stock": false,
      "variant_name": "string",
      "variant_number": "string",
      "videos": [
        {
          "attributes": null,
          "description": null,
          "title": null,
          "url": null
        }
      ]
    }
  ],
  "page": 0,
  "total": 0,
  "total_pages": 0
}

400 - object

Error Message

PropertyTypeRequiredDetails
messagestringNo-

Generated example (synthetic):

{
  "message": "string"
}

500 - object

Error Message

PropertyTypeRequiredDetails
messagestringNo-

Generated example (synthetic):

{
  "message": "string"
}

Contract identity

Use these fields to confirm you are implementing the intended endpoint contract.

  • API family: Shopper API
  • Method: GET
  • Path: /api/v1/omni/:app_id/:store_group/:market/:locale/variants
  • Operation ID: Not documented in the OpenAPI contract.
  • OpenAPI tag: Variants
  • OpenAPI summary: Fetch all variants

Fetch all variants

# Fetch all variants Fetch all variants with pagination and filtering Deprecated. Use https://graphql.enad.io instead.
GET /api/v1/omni/:app_id/:store_group/:market/:locale/variants
Purpose

Fetch all variants with pagination and filtering Deprecated.

Required inputs

app_id path store_group path locale path market path

Primary response

200 ยท OK

Operation key

shopper-api:GET:/api/v1/omni/:app_id/:store_group/:market/:locale/variants

## API ownership - API family: Shopper API - Best for: Public storefront catalog reads and shopper-facing product discovery. - Prefer Search API for: New product discovery, facets, autocomplete, and other search-heavy storefront flows. - Do not use from: Trusted admin integrations that create, update, or delete merchant-owned data. - Guide route: [/apis/shopper/latest](/apis/shopper/latest) The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation. ## Operation - Method: `GET` - Path: `/api/v1/omni/:app_id/:store_group/:market/:locale/variants` - Summary: Fetch all variants - Description: Fetch all variants with pagination and filtering Deprecated. Use https://graphql.enad.io instead. - OpenAPI contract: shopper-api - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `shopper-api:GET:/api/v1/omni/:app_id/:store_group/:market/:locale/variants` Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID. ## Parameters | Name | In | Required | Type | Description | | --- | --- | --- | --- | --- | | app_id | path | Yes | string | App ID | | store_group | path | Yes | string | Store group | | locale | path | Yes | string | Alpha 2 country code. e.g `se` | | market | path | Yes | string | The related product market | | page | query | No | integer | Page number (default: 1) | | per_page | query | No | integer | Items per page (default: 50, max: 50) | | only_active | query | No | boolean | Filter only active products and variants | | in_stock | query | No | boolean | Filter by stock availability | | in_stock_in | query | No | string | Filter by stock availability in a specific warehouse (by warehouse slug) | | sort | query | No | string | Sort order. One of created_at_desc, created_at_asc, name_asc, name_desc, category_order_asc, category_order_desc, collection_order_asc, collection_order_desc, tag_order_asc, tag_order_desc, variant_number_asc, variant_number_desc, variant_name_asc, variant_name_desc, price_asc, price_desc | | sku | query | No | string[] | Filter by SKUs (parent product) | | variant_name | query | No | string[] | Filter by Variant Names | | collection | query | No | string[] | Filter on collections slugs (parent product) | | tag | query | No | string[] | Filter by tags key (parent product). e.g `black-friday` | | slug | query | No | string[] | Filter by product slugs (parent product) | | brand | query | No | string[] | Filter by brand slug (parent product) | | serie | query | No | string[] | Filter by serie slug (parent product) | | category | query | No | string[] | Filter by category slug (parent product) | | smart_list | query | No | string[] | Filter by smart list slug | | static_list | query | No | string[] | Filter by static list slug | | not_in_sku | query | No | string[] | Exclude products with these SKUs (parent product) | | not_in_category | query | No | string[] | Exclude products in these categories (by slug) (parent product) | | not_in_collection | query | No | string[] | Exclude products in these collections (by uri) (parent product) | | not_in_tag | query | No | string[] | Exclude products with these tags (by key) (parent product) | | not_in_brand | query | No | string[] | Exclude products with these brands (by slug) (parent product) | | not_in_serie | query | No | string[] | Exclude products with these series (by slug) (parent product) | | price_gte | query | No | number | Filter by minimum price (inclusive) | | price_lte | query | No | number | Filter by maximum price (inclusive) | | attributes | query | No | string[] | Filter by attributes (format: template_key/value_key, e.g., color/blue). Product or Variant must match all specified attributes. | | category_id | query | No | string[] | Filter by category IDs (UUIDs). Product must be in at least one of the specified category IDs. | | not_in_category_id | query | No | string[] | Exclude products in these category IDs (UUIDs). | | has_attribute_template | query | No | string[] | Find all variants who have a specific attribute template mapped, e.g size | | search | query | No | string | Full text search on variants | | group_by_attribute_template | query | No | string | Group variants by an attribute template key (e.g., 'color'). When used, only one variant per product and attribute value is returned. | | related_variants_attr | query | No | string[] | Return related variants filtered by attribute combinations (e.g., 'color', 'color,size'). For single attributes, returns unique variants by that attribute within parent products. For two attributes, returns all variants in catalog sharing the first attribute values with unique second attribute values. | ## Request body Not documented in the OpenAPI contract. ## Responses | Status | Description | Content | | --- | --- | --- | | 200 | OK | application/json (object) | | 400 | Invalid parameters | application/json (object) | | 500 | Internal server error | application/json (object) | ### 200 - object #### Paginated Variant With Product Info List | Property | Type | Required | Details | | --- | --- | --- | --- | | `data` | object[] | No | - | | `page` | integer | No | - | | `total` | integer | No | - | | `total_pages` | integer | No | - | ##### Variant With Product Info | Property | Type | Required | Details | | --- | --- | --- | --- | | `attributes` | object | No | - | | `brands` | object | No | - | | `categories` | object[] | No | - | | `collections` | object[] | No | - | | `created_at` | string | No | - | | `custom_fields` | object | No | - | | `description` | string | No | - | | `dimensions` | object | No | - | | `files` | object[] | No | - | | `html_description` | string | No | - | | `html_short_description` | string | No | - | | `id` | string | No | - | | `image_url` | string | No | - | | `images` | object[] | No | - | | `inventories` | object[] | No | - | | `is_active` | boolean | No | - | | `meta_description` | string | No | - | | `meta_title` | string | No | - | | `packaging_dimensions` | object | No | - | | `parent_attributes` | object | No | - | | `prices` | object[] | No | - | | `product_name` | string | No | - | | `product_number` | string | No | - | | `rank` | number | No | - | | `redirects` | object | No | - | | `related_variants` | object[] | No | - | | `shipping_attributes` | string[] | No | - | | `short_description` | string | No | - | | `slug` | string | No | - | | `slug_translations` | object | No | - | | `status` | string | No | - | | `tags` | object[] | No | - | | `third_party_links` | object[] | No | - | | `updated_at` | string | No | - | | `validate_stock` | boolean | No | - | | `variant_name` | string | No | - | | `variant_number` | string | No | - | | `videos` | object[] | No | - | ##### Product Brand | Property | Type | Required | Details | | --- | --- | --- | --- | | `address` | object | No | - | | `name` | string | No | - | | `series` | object | No | - | | `slug` | string | No | - | ##### Product Category | Property | Type | Required | Details | | --- | --- | --- | --- | | `attributes` | object | No | - | | `cover_url` | string | No | - | | `full_path_name` | string[] | No | - | | `full_uri_translations` | object | No | - | | `id` | string | No | - | | `name` | string | No | - | | `order` | integer | No | - | | `parent_id` | string | No | - | | `redirects` | object | No | - | | `slug_translations` | object | No | - | | `sort_order` | integer | No | - | | `status` | string | No | - | | `sub_categories` | object[] | No | - | | `uri` | string | No | - | ##### Product Collection | Property | Type | Required | Details | | --- | --- | --- | --- | | `children` | object[] | No | - | | `id` | string | No | - | | `order` | integer | No | - | | `parent_id` | string | No | - | | `title` | string | No | - | | `uri` | string | No | - | ##### Dimensions | Property | Type | Required | Details | | --- | --- | --- | --- | | `capacity_milliliter` | integer | No | - | | `depth` | integer | No | - | | `diameter` | integer | No | - | | `height` | integer | No | - | | `length` | integer | No | - | | `weight` | integer | No | - | | `width` | integer | No | - | ##### File | Property | Type | Required | Details | | --- | --- | --- | --- | | `attributes` | object | No | - | | `title` | string | No | - | | `type` | string | No | - | | `url` | string | No | - | ##### Image | Property | Type | Required | Details | | --- | --- | --- | --- | | `alt` | string | No | - | | `attributes` | object | No | - | | `blurhash` | string | No | - | | `custom_fields` | object | No | - | | `sort` | integer | No | - | | `title` | string | No | - | | `url` | string | No | - | ##### Product Inventory With Information | Property | Type | Required | Details | | --- | --- | --- | --- | | `inventory_date` | string | No | - | | `quantity` | integer | No | - | | `warehouse` | object | No | - | ##### Variant Prices | Property | Type | Required | Details | | --- | --- | --- | --- | | `channel_type` | enum("B2B", "B2C") | No | - | | `country_of_sale` | string | No | - | | `markets` | object[] | No | - | | `store_group_description` | string | No | - | | `store_group_id` | string | No | - | | `store_group_name` | string | No | - | | `store_group_slug` | string | No | - | ##### Related Variant | Property | Type | Required | Details | | --- | --- | --- | --- | | `attributes` | object | No | - | | `image_url` | string | No | - | | `images` | object[] | No | - | | `inventories` | object[] | No | - | | `is_active` | boolean | No | - | | `prices` | object[] | No | - | | `tags` | object[] | No | - | | `validate_stock` | boolean | No | - | | `variant_id` | string | No | - | | `variant_name` | string | No | - | | `variant_number` | string | No | - | | `videos` | object[] | No | - | ##### Tag | Property | Type | Required | Details | | --- | --- | --- | --- | | `attributes` | object | No | - | | `created_at` | string | No | - | | `filterable` | boolean | No | - | | `id` | string | No | - | | `key` | string | No | - | | `name` | string | No | - | | `status` | string | No | - | | `updated_at` | string | No | - | ##### Third Party Link | Property | Type | Required | Details | | --- | --- | --- | --- | | `id` | string | No | - | | `title` | string | No | - | | `type` | string | No | - | | `url` | string | No | - | ##### Video | Property | Type | Required | Details | | --- | --- | --- | --- | | `attributes` | object | No | - | | `description` | string | No | - | | `title` | string | No | - | | `url` | string | No | - |
Generated example (synthetic) ```json { "data": [ { "attributes": {}, "brands": { "address": { "city": null, "co_address": null, "country": null, "email": null, "house_number": null, "postal_code": null, "state_province": null, "street_address": null }, "name": "string", "series": { "name": null, "slug": null }, "slug": "string" }, "categories": [ { "attributes": null, "cover_url": null, "full_path_name": null, "full_uri_translations": null, "id": null, "name": null, "order": null, "parent_id": null, "redirects": null, "slug_translations": null, "sort_order": null, "status": null, "sub_categories": null, "uri": null } ], "collections": [ { "children": null, "id": null, "order": null, "parent_id": null, "title": null, "uri": null } ], "created_at": "string", "custom_fields": {}, "description": "string", "dimensions": { "capacity_milliliter": 0, "depth": 0, "diameter": 0, "height": 0, "length": 0, "weight": 0, "width": 0 }, "files": [ { "attributes": null, "title": null, "type": null, "url": null } ], "html_description": "string", "html_short_description": "string", "id": "string", "image_url": "string", "images": [ { "alt": null, "attributes": null, "blurhash": null, "custom_fields": null, "sort": null, "title": null, "url": null } ], "inventories": [ { "inventory_date": null, "quantity": null, "warehouse": null } ], "is_active": false, "meta_description": "string", "meta_title": "string", "packaging_dimensions": { "capacity_milliliter": 0, "depth": 0, "diameter": 0, "height": 0, "length": 0, "weight": 0, "width": 0 }, "parent_attributes": {}, "prices": [ { "channel_type": null, "country_of_sale": null, "markets": null, "store_group_description": null, "store_group_id": null, "store_group_name": null, "store_group_slug": null } ], "product_name": "string", "product_number": "string", "rank": 0, "redirects": {}, "related_variants": [ { "attributes": null, "image_url": null, "images": null, "inventories": null, "is_active": null, "prices": null, "tags": null, "validate_stock": null, "variant_id": null, "variant_name": null, "variant_number": null, "videos": null } ], "shipping_attributes": [ "string" ], "short_description": "string", "slug": "string", "slug_translations": {}, "status": "string", "tags": [ { "attributes": null, "created_at": null, "filterable": null, "id": null, "key": null, "name": null, "status": null, "updated_at": null } ], "third_party_links": [ { "id": null, "title": null, "type": null, "url": null } ], "updated_at": "string", "validate_stock": false, "variant_name": "string", "variant_number": "string", "videos": [ { "attributes": null, "description": null, "title": null, "url": null } ] } ], "page": 0, "total": 0, "total_pages": 0 } ```
### 400 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `message` | string | No | - | **Generated example (synthetic):** ```json { "message": "string" } ``` ### 500 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `message` | string | No | - | **Generated example (synthetic):** ```json { "message": "string" } ``` ## Contract identity Use these fields to confirm you are implementing the intended endpoint contract. - API family: Shopper API - Method: `GET` - Path: `/api/v1/omni/:app_id/:store_group/:market/:locale/variants` - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `shopper-api:GET:/api/v1/omni/:app_id/:store_group/:market/:locale/variants` - OpenAPI tag: Variants - OpenAPI summary: Fetch all variants