v1Products
Query products with filtering, pagination, and sorting capabilities
v1ProductssearchStringFull-text search over product name, description, and SKU (max 200 characters)
filterProductFilterNested AND/OR filter tree to narrow products by status, category, price, stock, attributes, and more
pageIntPage number (1-based, default 1)
perPageIntPage size (default 25, max 50)
sortBy[ProductSortInput!]Sort fields and directions; multiple entries apply in order
marketSlugString!requiredMarket slug used to resolve prices and market-specific product data. Required
storeGroupSlugString!requiredStore group slug used to resolve prices and store-specific product data. Required
warehouseSlugStringWarehouse slug for stock filters and stock-based sorting. Required when filter or sort uses stock
relatedProducts[String!]Relation type slugs to include on each product's relatedProducts field (e.g. color). Omit to return all relation types
localeString!requiredLocale for translated fields (e.g. en, sv). Required
channelSlugStringWhen set, only products assigned to this sales channel are returned
groupFlexibleProductsBooleanWhen true, returns one hit per flexible variant group instead of one per variant
Products with pagination information
Try it
curl -X POST 'https://graphql.enad.io/{app_id}/graphql' \
-H 'Content-Type: application/json' \
-d '{
"query": "query V1Products($search: String, $filter: ProductFilter, $page: Int, $perPage: Int, $sortBy: [ProductSortInput!], $marketSlug: String!, $storeGroupSlug: String!, $warehouseSlug: String, $relatedProducts: [String!], $locale: String!, $channelSlug: String, $groupFlexibleProducts: Boolean) {\n v1Products(search: $search, filter: $filter, page: $page, perPage: $perPage, sortBy: $sortBy, marketSlug: $marketSlug, storeGroupSlug: $storeGroupSlug, warehouseSlug: $warehouseSlug, relatedProducts: $relatedProducts, locale: $locale, channelSlug: $channelSlug, groupFlexibleProducts: $groupFlexibleProducts) {\n products {\n id\n sku\n productType\n slug\n name\n description\n htmlDescription\n shortDescription\n htmlShortDescription\n metaTitle\n metaDescription\n variantGroupName\n variantGroupPriority\n variantGroupSlug\n variantGroupBaseProductID\n hasActiveVariants\n status\n createdAt\n updatedAt\n }\n pageInfo {\n totalPages\n currentPage\n hasNextPage\n hasPreviousPage\n }\n }\n}",
"variables": {
"search": "string",
"filter": {
"all": [
{
"all": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"any": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"none": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"conditions": {
"status": [
"ACTIVE"
],
"brandsSlug": [
"string"
],
"seriesSlug": [
"string"
],
"inStock": true,
"priceGte": 0,
"priceLte": 0,
"categoryUrls": [
"string"
],
"collectionUris": [
"string"
],
"tagKeys": [
"string"
],
"attributeKeys": [
"string"
],
"customField": null,
"collections": null,
"categories": null,
"tags": null,
"skus": [
"string"
],
"slugs": [
"string"
],
"ids": [
"string"
],
"hasActiveVariants": true
}
}
],
"any": [
{
"all": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"any": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"none": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"conditions": {
"status": [
"ACTIVE"
],
"brandsSlug": [
"string"
],
"seriesSlug": [
"string"
],
"inStock": true,
"priceGte": 0,
"priceLte": 0,
"categoryUrls": [
"string"
],
"collectionUris": [
"string"
],
"tagKeys": [
"string"
],
"attributeKeys": [
"string"
],
"customField": null,
"collections": null,
"categories": null,
"tags": null,
"skus": [
"string"
],
"slugs": [
"string"
],
"ids": [
"string"
],
"hasActiveVariants": true
}
}
],
"none": [
{
"all": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"any": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"none": [
{
"all": [
{}
],
"any": [
{}
],
"none": [
{}
],
"conditions": null
}
],
"conditions": {
"status": [
"ACTIVE"
],
"brandsSlug": [
"string"
],
"seriesSlug": [
"string"
],
"inStock": true,
"priceGte": 0,
"priceLte": 0,
"categoryUrls": [
"string"
],
"collectionUris": [
"string"
],
"tagKeys": [
"string"
],
"attributeKeys": [
"string"
],
"customField": null,
"collections": null,
"categories": null,
"tags": null,
"skus": [
"string"
],
"slugs": [
"string"
],
"ids": [
"string"
],
"hasActiveVariants": true
}
}
],
"conditions": {
"status": [
"ACTIVE"
],
"brandsSlug": [
"string"
],
"seriesSlug": [
"string"
],
"inStock": true,
"priceGte": 0,
"priceLte": 0,
"categoryUrls": [
"string"
],
"collectionUris": [
"string"
],
"tagKeys": [
"string"
],
"attributeKeys": [
"string"
],
"customField": {
"key": "string",
"values": [
"string"
],
"operator": "EQUALS"
},
"collections": {
"uris": [
"string"
],
"statuses": [
"string"
],
"titles": [
"string"
]
},
"categories": {
"urls": [
"string"
],
"statuses": [
"string"
],
"names": [
"string"
]
},
"tags": {
"keys": [
"string"
],
"statuses": [
"string"
],
"filterable": [
true
]
},
"skus": [
"string"
],
"slugs": [
"string"
],
"ids": [
"string"
],
"hasActiveVariants": true
}
},
"page": 0,
"perPage": 0,
"sortBy": [
{
"rule": "NAME_ASC",
"categoryId": "string",
"categoryUrl": "string",
"collectionId": "string",
"collectionUri": "string",
"tagId": "string",
"tagKey": "string",
"storeGroupSlug": "string",
"marketSlug": "string"
}
],
"marketSlug": "string",
"storeGroupSlug": "string",
"warehouseSlug": "string",
"relatedProducts": [
"string"
],
"locale": "string",
"channelSlug": "string",
"groupFlexibleProducts": true
}
}'const response = await fetch("https://graphql.enad.io/{app_id}/graphql", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: "{\n \"query\": \"query V1Products($search: String, $filter: ProductFilter, $page: Int, $perPage: Int, $sortBy: [ProductSortInput!], $marketSlug: String!, $storeGroupSlug: String!, $warehouseSlug: String, $relatedProducts: [String!], $locale: String!, $channelSlug: String, $groupFlexibleProducts: Boolean) {\\n v1Products(search: $search, filter: $filter, page: $page, perPage: $perPage, sortBy: $sortBy, marketSlug: $marketSlug, storeGroupSlug: $storeGroupSlug, warehouseSlug: $warehouseSlug, relatedProducts: $relatedProducts, locale: $locale, channelSlug: $channelSlug, groupFlexibleProducts: $groupFlexibleProducts) {\\n products {\\n id\\n sku\\n productType\\n slug\\n name\\n description\\n htmlDescription\\n shortDescription\\n htmlShortDescription\\n metaTitle\\n metaDescription\\n variantGroupName\\n variantGroupPriority\\n variantGroupSlug\\n variantGroupBaseProductID\\n hasActiveVariants\\n status\\n createdAt\\n updatedAt\\n }\\n pageInfo {\\n totalPages\\n currentPage\\n hasNextPage\\n hasPreviousPage\\n }\\n }\\n}\",\n \"variables\": {\n \"search\": \"string\",\n \"filter\": {\n \"all\": [\n {\n \"all\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"any\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"none\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"conditions\": {\n \"status\": [\n \"ACTIVE\"\n ],\n \"brandsSlug\": [\n \"string\"\n ],\n \"seriesSlug\": [\n \"string\"\n ],\n \"inStock\": true,\n \"priceGte\": 0,\n \"priceLte\": 0,\n \"categoryUrls\": [\n \"string\"\n ],\n \"collectionUris\": [\n \"string\"\n ],\n \"tagKeys\": [\n \"string\"\n ],\n \"attributeKeys\": [\n \"string\"\n ],\n \"customField\": null,\n \"collections\": null,\n \"categories\": null,\n \"tags\": null,\n \"skus\": [\n \"string\"\n ],\n \"slugs\": [\n \"string\"\n ],\n \"ids\": [\n \"string\"\n ],\n \"hasActiveVariants\": true\n }\n }\n ],\n \"any\": [\n {\n \"all\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"any\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"none\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"conditions\": {\n \"status\": [\n \"ACTIVE\"\n ],\n \"brandsSlug\": [\n \"string\"\n ],\n \"seriesSlug\": [\n \"string\"\n ],\n \"inStock\": true,\n \"priceGte\": 0,\n \"priceLte\": 0,\n \"categoryUrls\": [\n \"string\"\n ],\n \"collectionUris\": [\n \"string\"\n ],\n \"tagKeys\": [\n \"string\"\n ],\n \"attributeKeys\": [\n \"string\"\n ],\n \"customField\": null,\n \"collections\": null,\n \"categories\": null,\n \"tags\": null,\n \"skus\": [\n \"string\"\n ],\n \"slugs\": [\n \"string\"\n ],\n \"ids\": [\n \"string\"\n ],\n \"hasActiveVariants\": true\n }\n }\n ],\n \"none\": [\n {\n \"all\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"any\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"none\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"conditions\": {\n \"status\": [\n \"ACTIVE\"\n ],\n \"brandsSlug\": [\n \"string\"\n ],\n \"seriesSlug\": [\n \"string\"\n ],\n \"inStock\": true,\n \"priceGte\": 0,\n \"priceLte\": 0,\n \"categoryUrls\": [\n \"string\"\n ],\n \"collectionUris\": [\n \"string\"\n ],\n \"tagKeys\": [\n \"string\"\n ],\n \"attributeKeys\": [\n \"string\"\n ],\n \"customField\": null,\n \"collections\": null,\n \"categories\": null,\n \"tags\": null,\n \"skus\": [\n \"string\"\n ],\n \"slugs\": [\n \"string\"\n ],\n \"ids\": [\n \"string\"\n ],\n \"hasActiveVariants\": true\n }\n }\n ],\n \"conditions\": {\n \"status\": [\n \"ACTIVE\"\n ],\n \"brandsSlug\": [\n \"string\"\n ],\n \"seriesSlug\": [\n \"string\"\n ],\n \"inStock\": true,\n \"priceGte\": 0,\n \"priceLte\": 0,\n \"categoryUrls\": [\n \"string\"\n ],\n \"collectionUris\": [\n \"string\"\n ],\n \"tagKeys\": [\n \"string\"\n ],\n \"attributeKeys\": [\n \"string\"\n ],\n \"customField\": {\n \"key\": \"string\",\n \"values\": [\n \"string\"\n ],\n \"operator\": \"EQUALS\"\n },\n \"collections\": {\n \"uris\": [\n \"string\"\n ],\n \"statuses\": [\n \"string\"\n ],\n \"titles\": [\n \"string\"\n ]\n },\n \"categories\": {\n \"urls\": [\n \"string\"\n ],\n \"statuses\": [\n \"string\"\n ],\n \"names\": [\n \"string\"\n ]\n },\n \"tags\": {\n \"keys\": [\n \"string\"\n ],\n \"statuses\": [\n \"string\"\n ],\n \"filterable\": [\n true\n ]\n },\n \"skus\": [\n \"string\"\n ],\n \"slugs\": [\n \"string\"\n ],\n \"ids\": [\n \"string\"\n ],\n \"hasActiveVariants\": true\n }\n },\n \"page\": 0,\n \"perPage\": 0,\n \"sortBy\": [\n {\n \"rule\": \"NAME_ASC\",\n \"categoryId\": \"string\",\n \"categoryUrl\": \"string\",\n \"collectionId\": \"string\",\n \"collectionUri\": \"string\",\n \"tagId\": \"string\",\n \"tagKey\": \"string\",\n \"storeGroupSlug\": \"string\",\n \"marketSlug\": \"string\"\n }\n ],\n \"marketSlug\": \"string\",\n \"storeGroupSlug\": \"string\",\n \"warehouseSlug\": \"string\",\n \"relatedProducts\": [\n \"string\"\n ],\n \"locale\": \"string\",\n \"channelSlug\": \"string\",\n \"groupFlexibleProducts\": true\n }\n}"
});import requests
response = requests.post(
"https://graphql.enad.io/{app_id}/graphql",
headers={
"Content-Type": "application/json"
},
data="{\n \"query\": \"query V1Products($search: String, $filter: ProductFilter, $page: Int, $perPage: Int, $sortBy: [ProductSortInput!], $marketSlug: String!, $storeGroupSlug: String!, $warehouseSlug: String, $relatedProducts: [String!], $locale: String!, $channelSlug: String, $groupFlexibleProducts: Boolean) {\\n v1Products(search: $search, filter: $filter, page: $page, perPage: $perPage, sortBy: $sortBy, marketSlug: $marketSlug, storeGroupSlug: $storeGroupSlug, warehouseSlug: $warehouseSlug, relatedProducts: $relatedProducts, locale: $locale, channelSlug: $channelSlug, groupFlexibleProducts: $groupFlexibleProducts) {\\n products {\\n id\\n sku\\n productType\\n slug\\n name\\n description\\n htmlDescription\\n shortDescription\\n htmlShortDescription\\n metaTitle\\n metaDescription\\n variantGroupName\\n variantGroupPriority\\n variantGroupSlug\\n variantGroupBaseProductID\\n hasActiveVariants\\n status\\n createdAt\\n updatedAt\\n }\\n pageInfo {\\n totalPages\\n currentPage\\n hasNextPage\\n hasPreviousPage\\n }\\n }\\n}\",\n \"variables\": {\n \"search\": \"string\",\n \"filter\": {\n \"all\": [\n {\n \"all\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"any\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"none\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"conditions\": {\n \"status\": [\n \"ACTIVE\"\n ],\n \"brandsSlug\": [\n \"string\"\n ],\n \"seriesSlug\": [\n \"string\"\n ],\n \"inStock\": true,\n \"priceGte\": 0,\n \"priceLte\": 0,\n \"categoryUrls\": [\n \"string\"\n ],\n \"collectionUris\": [\n \"string\"\n ],\n \"tagKeys\": [\n \"string\"\n ],\n \"attributeKeys\": [\n \"string\"\n ],\n \"customField\": null,\n \"collections\": null,\n \"categories\": null,\n \"tags\": null,\n \"skus\": [\n \"string\"\n ],\n \"slugs\": [\n \"string\"\n ],\n \"ids\": [\n \"string\"\n ],\n \"hasActiveVariants\": true\n }\n }\n ],\n \"any\": [\n {\n \"all\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"any\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"none\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"conditions\": {\n \"status\": [\n \"ACTIVE\"\n ],\n \"brandsSlug\": [\n \"string\"\n ],\n \"seriesSlug\": [\n \"string\"\n ],\n \"inStock\": true,\n \"priceGte\": 0,\n \"priceLte\": 0,\n \"categoryUrls\": [\n \"string\"\n ],\n \"collectionUris\": [\n \"string\"\n ],\n \"tagKeys\": [\n \"string\"\n ],\n \"attributeKeys\": [\n \"string\"\n ],\n \"customField\": null,\n \"collections\": null,\n \"categories\": null,\n \"tags\": null,\n \"skus\": [\n \"string\"\n ],\n \"slugs\": [\n \"string\"\n ],\n \"ids\": [\n \"string\"\n ],\n \"hasActiveVariants\": true\n }\n }\n ],\n \"none\": [\n {\n \"all\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"any\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"none\": [\n {\n \"all\": [\n {}\n ],\n \"any\": [\n {}\n ],\n \"none\": [\n {}\n ],\n \"conditions\": null\n }\n ],\n \"conditions\": {\n \"status\": [\n \"ACTIVE\"\n ],\n \"brandsSlug\": [\n \"string\"\n ],\n \"seriesSlug\": [\n \"string\"\n ],\n \"inStock\": true,\n \"priceGte\": 0,\n \"priceLte\": 0,\n \"categoryUrls\": [\n \"string\"\n ],\n \"collectionUris\": [\n \"string\"\n ],\n \"tagKeys\": [\n \"string\"\n ],\n \"attributeKeys\": [\n \"string\"\n ],\n \"customField\": null,\n \"collections\": null,\n \"categories\": null,\n \"tags\": null,\n \"skus\": [\n \"string\"\n ],\n \"slugs\": [\n \"string\"\n ],\n \"ids\": [\n \"string\"\n ],\n \"hasActiveVariants\": true\n }\n }\n ],\n \"conditions\": {\n \"status\": [\n \"ACTIVE\"\n ],\n \"brandsSlug\": [\n \"string\"\n ],\n \"seriesSlug\": [\n \"string\"\n ],\n \"inStock\": true,\n \"priceGte\": 0,\n \"priceLte\": 0,\n \"categoryUrls\": [\n \"string\"\n ],\n \"collectionUris\": [\n \"string\"\n ],\n \"tagKeys\": [\n \"string\"\n ],\n \"attributeKeys\": [\n \"string\"\n ],\n \"customField\": {\n \"key\": \"string\",\n \"values\": [\n \"string\"\n ],\n \"operator\": \"EQUALS\"\n },\n \"collections\": {\n \"uris\": [\n \"string\"\n ],\n \"statuses\": [\n \"string\"\n ],\n \"titles\": [\n \"string\"\n ]\n },\n \"categories\": {\n \"urls\": [\n \"string\"\n ],\n \"statuses\": [\n \"string\"\n ],\n \"names\": [\n \"string\"\n ]\n },\n \"tags\": {\n \"keys\": [\n \"string\"\n ],\n \"statuses\": [\n \"string\"\n ],\n \"filterable\": [\n true\n ]\n },\n \"skus\": [\n \"string\"\n ],\n \"slugs\": [\n \"string\"\n ],\n \"ids\": [\n \"string\"\n ],\n \"hasActiveVariants\": true\n }\n },\n \"page\": 0,\n \"perPage\": 0,\n \"sortBy\": [\n {\n \"rule\": \"NAME_ASC\",\n \"categoryId\": \"string\",\n \"categoryUrl\": \"string\",\n \"collectionId\": \"string\",\n \"collectionUri\": \"string\",\n \"tagId\": \"string\",\n \"tagKey\": \"string\",\n \"storeGroupSlug\": \"string\",\n \"marketSlug\": \"string\"\n }\n ],\n \"marketSlug\": \"string\",\n \"storeGroupSlug\": \"string\",\n \"warehouseSlug\": \"string\",\n \"relatedProducts\": [\n \"string\"\n ],\n \"locale\": \"string\",\n \"channelSlug\": \"string\",\n \"groupFlexibleProducts\": true\n }\n}",
){
"data": {
"v1Products": {
"products": [
{
"id": "string",
"sku": "string",
"productType": "FLEXIBLE",
"slug": "string",
"name": "string",
"description": "string",
"htmlDescription": "string",
"shortDescription": "string",
"htmlShortDescription": "string",
"metaTitle": "string",
"metaDescription": "string",
"variantGroupName": "string",
"variantGroupPriority": 0,
"variantGroupSlug": "string",
"variantGroupBaseProductID": "string",
"hasActiveVariants": true,
"status": "ACTIVE",
"createdAt": "string",
"updatedAt": null
}
],
"pageInfo": {
"totalPages": 0,
"currentPage": 0,
"hasNextPage": true,
"hasPreviousPage": true
}
}
}
}