Search GraphQL reference latest

Search GraphQL schema and operation reference for Enad Search.

API
Search GraphQL
Updated
Jul 5, 2026

Use this reference for exact Search root fields, operation names, operation variables, input types, object types, enums, fragments, and raw schema access.

Raw schema files

  • Schema SDL: /graphql/search-schema.graphql
  • Operations and fragments: /graphql/search-documents.graphql
  • Definition counts: 11 enum, 7 input, 1 scalar, 46 type
  • Operations: 19
  • Fragments: 19

Endpoint and GraphiQL

Enad Search is app-scoped.

https://graphql.enad.io/{appId}/graphql

For interactive query checks, use app-scoped GraphiQL:

https://graphql.enad.io/{appId}/graphiql

Carry the same runtime context into GraphiQL that the storefront uses: appId, marketSlug, storeGroupSlug, and locale.

Root query fields

FieldReturnsArguments
v1ProductsProductsConnection!search: String; filter: ProductFilter; page: Int; perPage: Int; sortBy: [ProductSortInput!]; marketSlug: String!; storeGroupSlug: String!; warehouseSlug: String; relatedProducts: [String!]; locale: String!; channelSlug: String; groupFlexibleProducts: Boolean
v1ProductBySlugProduct!slug: String!; marketSlug: String!; storeGroupSlug: String!; relatedProducts: [String!]; locale: String!; onlyActive: Boolean!; channelSlug: String
v1ProductBySkuProduct!sku: String!; marketSlug: String!; storeGroupSlug: String!; relatedProducts: [String!]; locale: String!; onlyActive: Boolean!; channelSlug: String
v1FacetsFacets!facets: [FacetArguments!]!; search: String; filter: ProductFilter; marketSlug: String!; storeGroupSlug: String!; warehouseSlug: String; locale: String!
v1SearchCompletions[SearchCompletion!]!query: String!; limit: Int; locale: String!; marketSlug: String!; storeGroupSlug: String!; searchCompletionTypes: [SearchCompletionTypes!]
v1ProductSlugs[ProductSlug!]!perPage: Int; page: Int; locale: String!; marketSlug: String!; storeGroupSlug: String!; onlyActive: Boolean!
v1BrandsBrandsConnection!search: String; page: Int; perPage: Int
v1SeriesSeriesConnection!search: String; page: Int; perPage: Int
v1CategoriesCategoriesConnection!parentUrl: String; search: String; locale: String!; page: Int; perPage: Int
v1CategoryByIdCategoryWithTreeid: String!; locale: String!
v1CategoryByFullUriCategoryWithTreefullUri: String!; locale: String!
v1CollectionsCollectionsConnection!parentUrl: String; search: String; locale: String!; page: Int; perPage: Int
v1CollectionByIdCollectionWithTreeid: String!; locale: String!
v1CollectionByUriCollectionWithTreeuri: String!; locale: String!
v1RedirectsRedirectsConnection!locale: String; itemIds: [String!]; oldSlug: String; newSlug: String; redirectType: RedirectType; page: Int; perPage: Int
v1VariantsVariantsConnection!page: Int; perPage: Int; marketSlug: String!; storeGroupSlug: String!; warehouseSlug: String; locale: String!; skus: [String!]; onlyActive: Boolean!

Operations

OperationKindVariables
CategoryByFullUriqueryfullUri: String!; locale: String!
CategoryByIdqueryid: String!; locale: String!
CollectionByIdqueryid: String!; locale: String!
CollectionByUriqueryuri: String!; locale: String!
ProductBySkuquerysku: String!; marketSlug: String!; storeGroupSlug: String!; locale: String!; onlyActive: Boolean!; channelSlug: String
ProductBySkuWithRelatedquerysku: String!; marketSlug: String!; storeGroupSlug: String!; locale: String!; relatedProducts: [String!]; onlyActive: Boolean!; channelSlug: String
ProductBySlugqueryslug: String!; marketSlug: String!; storeGroupSlug: String!; locale: String!; onlyActive: Boolean!; channelSlug: String
ProductBySlugWithRelatedqueryslug: String!; marketSlug: String!; storeGroupSlug: String!; locale: String!; relatedProducts: [String!]; onlyActive: Boolean!; channelSlug: String
ProductSlugsquerymarketSlug: String!; storeGroupSlug: String!; locale: String!; page: Int; perPage: Int; onlyActive: Boolean!
SearchBrandsquerysearch: String; page: Int; perPage: Int
SearchCategoriesquerylocale: String!; page: Int; perPage: Int; parentUrl: String; search: String
SearchCollectionsquerylocale: String!; page: Int; perPage: Int; parentUrl: String; search: String
SearchCompletionsqueryquery: String!; marketSlug: String!; storeGroupSlug: String!; locale: String!; limit: Int; searchCompletionTypes: [SearchCompletionTypes!]
SearchFacetsqueryfacets: [FacetArguments!]!; marketSlug: String!; storeGroupSlug: String!; locale: String!; filter: ProductFilter; warehouseSlug: String
SearchProductCardsquerypage: Int!; perPage: Int!; marketSlug: String!; storeGroupSlug: String!; locale: String!; search: String; filter: ProductFilter; sortBy: [ProductSortInput!]; warehouseSlug: String
SearchProductsquerypage: Int!; perPage: Int!; marketSlug: String!; storeGroupSlug: String!; locale: String!; search: String; filter: ProductFilter; sortBy: [ProductSortInput!]; warehouseSlug: String
SearchRedirectsquerylocale: String; itemIds: [String!]; oldSlug: String; newSlug: String; redirectType: RedirectType; page: Int; perPage: Int
SearchSeriesquerysearch: String; page: Int; perPage: Int
SearchVariantsquerymarketSlug: String!; storeGroupSlug: String!; locale: String!; page: Int; perPage: Int; warehouseSlug: String; skus: [String!]; onlyActive: Boolean!

Fragments

FragmentType
SearchAttributeFieldsAttribute
SearchAttributeValueFieldsAttributeValue
SearchBrandFieldsBrand
SearchCategoryFieldsCategory
SearchCategoryTreeFieldsCategoryWithTree
SearchCollectionFieldsCollection
SearchCollectionTreeFieldsCollectionWithTree
SearchImageFieldsImage
SearchProductCardFieldsProduct
SearchProductCardVariantFieldsVariant
SearchProductFieldsProduct
SearchProductFileFieldsProductFile
SearchProductIdentityFieldsProduct
SearchRedirectFieldsRedirect
SearchRelatedProductCardFieldsRelatedProduct
SearchTagFieldsTag
SearchVariantFieldsVariant
SearchVariantGroupFieldsVariantGroup
SearchVideoFieldsVideo

Input types

NameFields
CategoryFilter3
CollectionFilter3
CustomFieldFilter3
FilterCondition18
ProductFilter4
ProductSortInput9
TagFilter3

Object types

NameFields
Attribute9
AttributeFacet8
AttributeValue4
Brand8
BrandAddress5
BrandFacet4
BrandsConnection2
BrandWithSeries8
CategoriesConnection2
Category13
CategoryFacet7
CategoryWithTree14
Collection8
CollectionFacet5
CollectionsConnection2
CollectionWithTree9
CompletionMetadata2
CustomField2
Facets8
Image11
PageInfo4
PriceRangeFacet2
Product28
ProductFile7
ProductRelation3
ProductsConnection2
ProductSlug2
Query16
Redirect7
RedirectsConnection2
RelatedProduct21
SearchCompletion5
Series5
SeriesConnection2
SeriesFacet5
StockFacet2
Tag8
TagFacet5
TranslatedSlug2
TranslatedUri2
Variant15
VariantGroup6
VariantPrice16
VariantsConnection2
VariantStock7
Video9

Enums

EnumValues
FacetArgumentsATTRIBUTES, CATEGORIES, COLLECTIONS, BRANDS, SERIES, TAGS, IN_STOCK, PRICE_RANGE
ImageStatusACTIVE, INACTIVE
ProductFilterStatusACTIVE, INACTIVE, ARCHIVED
ProductStatusACTIVE, INACTIVE, ARCHIVED, DRAFT, INCOMPLETE
ProductTypeFLEXIBLE, SIMPLE
RedirectTypePRODUCT, PAGE, COLLECTION, CATEGORY, PRODUCT_BUNDLE, BRAND, SERIE, CAMPAIGN
SearchCompletionTypesPRODUCT, BRAND, SERIE, CATEGORY, COLLECTION
SortByNAME_ASC, NAME_DESC, CREATED_AT_ASC, CREATED_AT_DESC, UPDATED_AT_ASC, UPDATED_AT_DESC, CATEGORY_ORDER_ASC, CATEGORY_ORDER_DESC, COLLECTION_ORDER_ASC, COLLECTION_ORDER_DESC, PRICE_ASC, PRICE_DESC, TAG_ORDER_ASC, TAG_ORDER_DESC, RELEVANCY, MOST_POPULAR
StringOperatorEQUALS, CONTAINS, STARTS_WITH, ENDS_WITH, NOT_EQUALS
VariantStatusACTIVE, INACTIVE, ARCHIVED
VideoStatusACTIVE, INACTIVE

Validation guidance

Use Search GraphQL latest for product-query validation rules, SDK helper guidance, and React/Search routing. Use this reference for exact schema, operation, variable, fragment, enum, and nullability details.

Search GraphQL reference latest

# Search GraphQL reference latest Use this reference for exact Search root fields, operation names, operation variables, input types, object types, enums, fragments, and raw schema access. ## Raw schema files - Schema SDL: /graphql/search-schema.graphql - Operations and fragments: /graphql/search-documents.graphql - Definition counts: 11 enum, 7 input, 1 scalar, 46 type - Operations: 19 - Fragments: 19 ## Endpoint and GraphiQL Enad Search is app-scoped. ```text https://graphql.enad.io/{appId}/graphql ``` For interactive query checks, use app-scoped GraphiQL: ```text https://graphql.enad.io/{appId}/graphiql ``` Carry the same runtime context into GraphiQL that the storefront uses: `appId`, `marketSlug`, `storeGroupSlug`, and `locale`. ## Root query fields | Field | Returns | Arguments | | --- | --- | --- | | `v1Products` | ProductsConnection! | `search`: String
`filter`: ProductFilter
`page`: Int
`perPage`: Int
`sortBy`: [ProductSortInput!]
`marketSlug`: String!
`storeGroupSlug`: String!
`warehouseSlug`: String
`relatedProducts`: [String!]
`locale`: String!
`channelSlug`: String
`groupFlexibleProducts`: Boolean | | `v1ProductBySlug` | Product! | `slug`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`relatedProducts`: [String!]
`locale`: String!
`onlyActive`: Boolean!
`channelSlug`: String | | `v1ProductBySku` | Product! | `sku`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`relatedProducts`: [String!]
`locale`: String!
`onlyActive`: Boolean!
`channelSlug`: String | | `v1Facets` | Facets! | `facets`: [FacetArguments!]!
`search`: String
`filter`: ProductFilter
`marketSlug`: String!
`storeGroupSlug`: String!
`warehouseSlug`: String
`locale`: String! | | `v1SearchCompletions` | [SearchCompletion!]! | `query`: String!
`limit`: Int
`locale`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`searchCompletionTypes`: [SearchCompletionTypes!] | | `v1ProductSlugs` | [ProductSlug!]! | `perPage`: Int
`page`: Int
`locale`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`onlyActive`: Boolean! | | `v1Brands` | BrandsConnection! | `search`: String
`page`: Int
`perPage`: Int | | `v1Series` | SeriesConnection! | `search`: String
`page`: Int
`perPage`: Int | | `v1Categories` | CategoriesConnection! | `parentUrl`: String
`search`: String
`locale`: String!
`page`: Int
`perPage`: Int | | `v1CategoryById` | CategoryWithTree | `id`: String!
`locale`: String! | | `v1CategoryByFullUri` | CategoryWithTree | `fullUri`: String!
`locale`: String! | | `v1Collections` | CollectionsConnection! | `parentUrl`: String
`search`: String
`locale`: String!
`page`: Int
`perPage`: Int | | `v1CollectionById` | CollectionWithTree | `id`: String!
`locale`: String! | | `v1CollectionByUri` | CollectionWithTree | `uri`: String!
`locale`: String! | | `v1Redirects` | RedirectsConnection! | `locale`: String
`itemIds`: [String!]
`oldSlug`: String
`newSlug`: String
`redirectType`: RedirectType
`page`: Int
`perPage`: Int | | `v1Variants` | VariantsConnection! | `page`: Int
`perPage`: Int
`marketSlug`: String!
`storeGroupSlug`: String!
`warehouseSlug`: String
`locale`: String!
`skus`: [String!]
`onlyActive`: Boolean! | ## Operations | Operation | Kind | Variables | | --- | --- | --- | | `CategoryByFullUri` | query | `fullUri`: String!
`locale`: String! | | `CategoryById` | query | `id`: String!
`locale`: String! | | `CollectionById` | query | `id`: String!
`locale`: String! | | `CollectionByUri` | query | `uri`: String!
`locale`: String! | | `ProductBySku` | query | `sku`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`onlyActive`: Boolean!
`channelSlug`: String | | `ProductBySkuWithRelated` | query | `sku`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`relatedProducts`: [String!]
`onlyActive`: Boolean!
`channelSlug`: String | | `ProductBySlug` | query | `slug`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`onlyActive`: Boolean!
`channelSlug`: String | | `ProductBySlugWithRelated` | query | `slug`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`relatedProducts`: [String!]
`onlyActive`: Boolean!
`channelSlug`: String | | `ProductSlugs` | query | `marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`page`: Int
`perPage`: Int
`onlyActive`: Boolean! | | `SearchBrands` | query | `search`: String
`page`: Int
`perPage`: Int | | `SearchCategories` | query | `locale`: String!
`page`: Int
`perPage`: Int
`parentUrl`: String
`search`: String | | `SearchCollections` | query | `locale`: String!
`page`: Int
`perPage`: Int
`parentUrl`: String
`search`: String | | `SearchCompletions` | query | `query`: String!
`marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`limit`: Int
`searchCompletionTypes`: [SearchCompletionTypes!] | | `SearchFacets` | query | `facets`: [FacetArguments!]!
`marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`filter`: ProductFilter
`warehouseSlug`: String | | `SearchProductCards` | query | `page`: Int!
`perPage`: Int!
`marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`search`: String
`filter`: ProductFilter
`sortBy`: [ProductSortInput!]
`warehouseSlug`: String | | `SearchProducts` | query | `page`: Int!
`perPage`: Int!
`marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`search`: String
`filter`: ProductFilter
`sortBy`: [ProductSortInput!]
`warehouseSlug`: String | | `SearchRedirects` | query | `locale`: String
`itemIds`: [String!]
`oldSlug`: String
`newSlug`: String
`redirectType`: RedirectType
`page`: Int
`perPage`: Int | | `SearchSeries` | query | `search`: String
`page`: Int
`perPage`: Int | | `SearchVariants` | query | `marketSlug`: String!
`storeGroupSlug`: String!
`locale`: String!
`page`: Int
`perPage`: Int
`warehouseSlug`: String
`skus`: [String!]
`onlyActive`: Boolean! | ## Fragments | Fragment | Type | | --- | --- | | `SearchAttributeFields` | Attribute | | `SearchAttributeValueFields` | AttributeValue | | `SearchBrandFields` | Brand | | `SearchCategoryFields` | Category | | `SearchCategoryTreeFields` | CategoryWithTree | | `SearchCollectionFields` | Collection | | `SearchCollectionTreeFields` | CollectionWithTree | | `SearchImageFields` | Image | | `SearchProductCardFields` | Product | | `SearchProductCardVariantFields` | Variant | | `SearchProductFields` | Product | | `SearchProductFileFields` | ProductFile | | `SearchProductIdentityFields` | Product | | `SearchRedirectFields` | Redirect | | `SearchRelatedProductCardFields` | RelatedProduct | | `SearchTagFields` | Tag | | `SearchVariantFields` | Variant | | `SearchVariantGroupFields` | VariantGroup | | `SearchVideoFields` | Video | ## Input types | Name | Fields | | --- | --- | | `CategoryFilter` | 3 | | `CollectionFilter` | 3 | | `CustomFieldFilter` | 3 | | `FilterCondition` | 18 | | `ProductFilter` | 4 | | `ProductSortInput` | 9 | | `TagFilter` | 3 | ## Object types | Name | Fields | | --- | --- | | `Attribute` | 9 | | `AttributeFacet` | 8 | | `AttributeValue` | 4 | | `Brand` | 8 | | `BrandAddress` | 5 | | `BrandFacet` | 4 | | `BrandsConnection` | 2 | | `BrandWithSeries` | 8 | | `CategoriesConnection` | 2 | | `Category` | 13 | | `CategoryFacet` | 7 | | `CategoryWithTree` | 14 | | `Collection` | 8 | | `CollectionFacet` | 5 | | `CollectionsConnection` | 2 | | `CollectionWithTree` | 9 | | `CompletionMetadata` | 2 | | `CustomField` | 2 | | `Facets` | 8 | | `Image` | 11 | | `PageInfo` | 4 | | `PriceRangeFacet` | 2 | | `Product` | 28 | | `ProductFile` | 7 | | `ProductRelation` | 3 | | `ProductsConnection` | 2 | | `ProductSlug` | 2 | | `Query` | 16 | | `Redirect` | 7 | | `RedirectsConnection` | 2 | | `RelatedProduct` | 21 | | `SearchCompletion` | 5 | | `Series` | 5 | | `SeriesConnection` | 2 | | `SeriesFacet` | 5 | | `StockFacet` | 2 | | `Tag` | 8 | | `TagFacet` | 5 | | `TranslatedSlug` | 2 | | `TranslatedUri` | 2 | | `Variant` | 15 | | `VariantGroup` | 6 | | `VariantPrice` | 16 | | `VariantsConnection` | 2 | | `VariantStock` | 7 | | `Video` | 9 | ## Enums | Enum | Values | | --- | --- | | `FacetArguments` | `ATTRIBUTES`, `CATEGORIES`, `COLLECTIONS`, `BRANDS`, `SERIES`, `TAGS`, `IN_STOCK`, `PRICE_RANGE` | | `ImageStatus` | `ACTIVE`, `INACTIVE` | | `ProductFilterStatus` | `ACTIVE`, `INACTIVE`, `ARCHIVED` | | `ProductStatus` | `ACTIVE`, `INACTIVE`, `ARCHIVED`, `DRAFT`, `INCOMPLETE` | | `ProductType` | `FLEXIBLE`, `SIMPLE` | | `RedirectType` | `PRODUCT`, `PAGE`, `COLLECTION`, `CATEGORY`, `PRODUCT_BUNDLE`, `BRAND`, `SERIE`, `CAMPAIGN` | | `SearchCompletionTypes` | `PRODUCT`, `BRAND`, `SERIE`, `CATEGORY`, `COLLECTION` | | `SortBy` | `NAME_ASC`, `NAME_DESC`, `CREATED_AT_ASC`, `CREATED_AT_DESC`, `UPDATED_AT_ASC`, `UPDATED_AT_DESC`, `CATEGORY_ORDER_ASC`, `CATEGORY_ORDER_DESC`, `COLLECTION_ORDER_ASC`, `COLLECTION_ORDER_DESC`, `PRICE_ASC`, `PRICE_DESC`, `TAG_ORDER_ASC`, `TAG_ORDER_DESC`, `RELEVANCY`, `MOST_POPULAR` | | `StringOperator` | `EQUALS`, `CONTAINS`, `STARTS_WITH`, `ENDS_WITH`, `NOT_EQUALS` | | `VariantStatus` | `ACTIVE`, `INACTIVE`, `ARCHIVED` | | `VideoStatus` | `ACTIVE`, `INACTIVE` | ## Validation guidance Use [Search GraphQL latest](/search/latest) for product-query validation rules, SDK helper guidance, and React/Search routing. Use this reference for exact schema, operation, variable, fragment, enum, and nullability details.