Skip to content

Catalog types

The types the catalog domain defines, with the fields other domains add to them.

Objects

Brand

A brand, as content refers to it by key. Its page is where a brand list links to; null where the brand has none.

FieldTypeDescription
keyString!Unique key for the brand.
nameString!The brand's name, in the current locale.
logoProductImageThe brand's logo; null where it has none.
pathStringPath of the brand's page, without a locale prefix; null where it has none.

CatalogPage

Implements Page

FieldTypeDescription
idID!
productListingConfigProductListingConfig!The listing the page shows: the source's category, else the page's categoryId, with the source's sort as the default order.
nameString!Name of the product listing page.
headingString!Text of the page's one top-level heading, which the page renders itself.
pathString!URL path of the product listing page.
translatedPaths[TranslatedPath!]List of translated paths for different locales.
breadcrumbs[Breadcrumb!]Breadcrumb trail for the product listing page.
metaPageMetaPage metadata for SEO and other purposes.
introStringThe text below the heading, clamped to two lines.
topContent[Block!]Top content of the product listing page, composed of various block types.
bottomContent[Block!]Bottom content of the product listing page, composed of various block types.
categoryIdStringIdentifier of the category associated with this product listing. Owned here: the commerce subgraph extends CatalogPage and marks this @external, so some subgraph has to define it or composition fails.Deprecated: Read source.
sourceProductSourceThe products the listing shows: the page's category, narrowed by its filters, in its sort order. Null where the page sets none of them.
layoutCatalogPageLayoutType!How the page presents its category: a listing, or a landing page.
promos[Promo!]!At most two promo cards inside the product grid: the first at position 4, the second at position 12, on the first page of an unfiltered listing only.
facetFilters[CatalogPageFacetFilter!]!The facet selections that make this page a curated collection of its category, such as one colour of the category's products, to apply to the listing. Empty for the category's own page.Deprecated: Read source.filters.

CategoryFacet

Category-based facet for hierarchical filtering (e.g., categories, collections)

FieldTypeDescription
keyString!Unique key for the facet (e.g., 'sustainable')
labelString!Display label for the facet (e.g., 'Sustainable')
options[FacetValue!]!Available options for this facet
visibleOptionsIntHow many options to show before the rest fold away behind a show-more control. Null where the facet configuration sets none, leaving it to the storefront.
searchableBooleanWhether the facet offers a box to search its options, for one with too many to scan. Null where the facet configuration does not say, leaving it to the storefront.

Dimension

Dimension option specific for this variant (see ProductVariantDimension for available options)

FieldTypeDescription
keyString!The key of the dimension (e.g. 'color')
labelString!The translated label of the dimension (e.g. 'Color' or 'Kleur')
valueString!The value of the dimension (e.g. '#ff0000')
valueLabelString!The translated value label of the dimension (e.g. 'Red' or 'Rood')

FacetValue

Individual value option within a facet with count information

FieldTypeDescription
keyString!Unique key for the facet value (e.g., 'red')
labelString!Display label for the facet value (e.g., 'Red')
countInt!Number of products matching this facet value
selectedBoolean!Whether this facet value is currently selected

FilterCondition

A condition a listing applies before the shopper's facet selections, which cannot widen it. A product matches any of its values; conditions join with AND.

FieldTypeDescription
keyString!Filter condition key
valueString!The condition's first value.Deprecated: Use values
values[String!]!The values to match, any of them.

LocalizedSlug

Localized URL slug for different language versions

FieldTypeDescription
localeLocale!The locale for this slug
slugString!The localized slug value

OptionsFacet

Multi-option facet for categorical filtering (e.g., color, brand)

FieldTypeDescription
keyString!Unique key for the facet (e.g., 'color')
labelString!Display label for the facet (e.g., 'Color')
options[FacetValue!]!Available options for this facet
visibleOptionsIntHow many options to show before the rest fold away behind a show-more control. Null where the facet configuration sets none, leaving it to the storefront.
searchableBooleanWhether the facet offers a box to search its options, for one with too many to scan. Null where the facet configuration does not say, leaving it to the storefront.

Product

Fields added by Product review

Product entity containing all product information, variants, and metadata.

FieldTypeDescription
idID!Unique identifier for the product
slugString!URL-friendly slug for the product
localizedSlugs[LocalizedSlug!]!Localized slugs for different localesArguments: locales
nameString!Name of the product
metaResourceMetaMetadata for the product
brandStringBrand of the product
imageProductImageThe primary image associated with the product.
relatedProducts[Product!]Products that are similar. E.g. the same t-shirt in another color.
variantProductVariant!A specific variant, often used to show data in a product card. If no sku is given then the primary variant is returned.Arguments: sku
variants[ProductVariant!]!A list of all variants, often used to show all available options in a product detail page.Arguments: sku
variantDimensions[ProductVariantDimension!]!Product variant dimensions for the product with selection optionsArguments: selectedSku
categories[ProductCategory!]The categories to which the product belongs.
primaryCategoryProductCategoryThe primary category to which the product belongs.
startingPriceTaxedPriceThe lowest price of all variants, often used to communicate the price on the product list page.
reviewsReviewsCustomer reviews for the product
bundleProductBundleThe products sold with this one as a bundle, added together with cartBundleAdd. Null when the product has none that can be bought now.
breadcrumbs[Breadcrumb!]
articles[Page!]Published pages about the product's primary category, or else about its nearest ancestor: the most specific category first, then the newest first. Nullable, so a content service that cannot answer leaves the product intact.
reviewDistribution[ProductReviewRatingCount!]!How many approved reviews gave each rating, from 5 down to 1, including ratings nobody gave
reviewFitDistribution[ProductReviewFitCount!]!How many approved reviews found the size each way, in the order of ProductReviewFitType, including ways nobody chose. All zero where buyers are not asked.
reviewListProductReviewResult!The approved reviews of the productArguments: page, pageSize, rating, sort

ProductAccessory

A variant sold for use with another one.

FieldTypeDescription
kindProductAccessoryKindType!
variantProductVariant!The accessory itself, with its sku, unit and price. One that cannot be sold in the store is left out of the list rather than answered as null.

ProductBundle

Products sold together with a main product, at the bundle's discount.

FieldTypeDescription
discountPercentFloatThe discount on each extra while it is bought with the main product, in percent, so 10 is 10%. Null when the engine has no single percentage.
items[ProductBundleItem!]!The extras in catalog order, without the main product itself and without products that cannot be bought now. Never empty.

ProductBundleItem

A product offered as an extra in a bundle.

FieldTypeDescription
productProduct!The extra itself, with the variants a buyer chooses from and their prices and availability.

ProductCategoriesResult

Paginated result containing product category pages

FieldTypeDescription
items[ProductCategoryPage!]!List of category pages in the result
paginationPagination!Where this page sits within the full result set

ProductCategory

FieldTypeDescription
idID!Unique identifier for the product category.
keyString!Unique key for the product category
nameString!Name of the product category
pathString!URL path for the category
descriptionStringDescription of the product category
ancestors[ProductCategory!]!Ancestor categories in the category hierarchy, root first: the last one is the category's parent.
children[ProductCategory!]!The direct subcategories, in the engine's order.
productCountIntHow many products the category holds, its subcategories included; null where the engine does not count them.
imageProductImageThe category's image; null where it has none or the engine keeps none.

ProductCategoryPage

Product category page containing products and metadata

FieldTypeDescription
metaPageMetaPage metadata for SEO and other purposes
pathString!The URL path of the category page
nameStringThe name of the page.
indexableBooleanIndicates whether the page is indexable for search engines.
categoryProductCategory!The product category associated with this page
productListingConfigProductListingConfig!Configuration for the product listing on this page
breadcrumbs[Breadcrumb!]!The breadcrumbs representing the navigation path to the page.

ProductCategorySuggestion

A category suggested for a search term, with how much of the result it holds.

FieldTypeDescription
categoryProductCategory!
productCountInt!How many products matching the term the category holds

ProductDocument

A file that belongs to a product variant, such as its datasheet.

FieldTypeDescription
kindProductDocumentKindType!What the document is
nameString!The document's name in the store's language
urlString!Where the file is downloaded from, as the catalog holds it. It does not expire, so a cached page keeps a working link.
contentTypeStringThe file's media type, such as application/pdf, where the catalog says
sizeIntThe file's size in bytes, where the catalog says
localeLocaleThe language the document is written in, where the catalog says. Null for a document that is not language-specific.

ProductEntityReference

Reference to a product entity with basic information

FieldTypeDescription
nameStringName of the referenced product entity
pathStringPath to the referenced product entity

ProductImage360

360-degree product image set for interactive viewing

FieldTypeDescription
urls[String!]!A list of URLs to the images.
altStringAlternative text for the 360° image set
descriptionStringDescription of the 360° image set

ProductList

FieldTypeDescription
idID!
items[Product!]The products the list's source selects, up to its limit and without the sold-out ones; null where the engine cannot select products by a source.
anchorStringThe id an in-page link or the table of contents points to; null where none is set.
audienceAudienceType!Who the block is shown to.
titleStringThe visible title, rendered as the H2.
variants[ProductVariant!]!The variants the editor picked, in their order; empty where the list has a source.
sourceProductSourceThe products to select where no variants are picked; null where none is set.
limitInt!The most products to show.
linkResourceLinkA link to all of the products, such as their catalog page.

ProductListingConfig

FieldTypeDescription
categoryIdString!Category ID for the product listing
defaultOrderProductSortOrderTypeDefault sort order for products
prefilters[FilterCondition!]Pre-applied filters for the listing

ProductPriceTier

The unit price from an order quantity on.

FieldTypeDescription
minimumQuantityInt!The quantity from which this unit price applies.
priceTaxedPrice!The unit price at that quantity.

ProductRibbon

FieldTypeDescription
kindStringNEW, SALE, etc.
labelStringText in the ribbon

ProductSearchSuggestions

What a search field suggests for a partly typed term.

FieldTypeDescription
terms[String!]!Completions of the term, each to be searched for as it stands. Empty where the engine offers none.
categories[ProductCategorySuggestion!]!The categories holding the most matching products, most first
products[ProductVariant!]!The best matching products, best first, each as the variant that matched: the one whose sku was typed, otherwise the variant a listing shows.

ProductSpecificationBooleanAttribute

Implements AbstractProductSpecificationAttribute

FieldTypeDescription
nameString!The name of the attribute, e.g. 'isFragile'. Consistent across all locales
labelString!The label of the attribute, e.g. 'Is fragile'. Localized to the current locale
valueBoolean!The boolean value of the attribute, e.g. true
descriptionStringOptional descriptive information about the attribute, Localized to the current locale

ProductSpecificationDateTimeAttribute

Implements AbstractProductSpecificationAttribute

FieldTypeDescription
nameString!The name of the attribute, e.g. 'availableFrom'. Consistent across all locales
labelString!The label of the attribute, e.g. 'Available from'. Localized to the current locale
valueDateTime!The datetime value of the attribute, e.g. 2024-08-14T07:52:15.520Z
descriptionStringOptional descriptive information about the attribute, Localized to the current locale

ProductSpecificationEnumAttribute

Implements AbstractProductSpecificationAttribute

FieldTypeDescription
nameString!The name of the attribute, e.g. 'season'. Consistent across all locales
labelString!The label of the attribute, e.g. 'Season'. Localized to the current locale
valueProductSpecificationEnumValue!The enum value of the attribute
descriptionStringOptional descriptive information about the attribute, Localized to the current locale

ProductSpecificationEnumListAttribute

Implements AbstractProductSpecificationAttribute

FieldTypeDescription
nameString!The name of the attribute, e.g. 'audiences'. Consistent across all locales
labelString!The label of the attribute, e.g. 'Audiences'. Localized to the current locale
values[ProductSpecificationEnumValue]!The enumc values of the attribute
descriptionStringOptional descriptive information about the attribute, Localized to the current locale

ProductSpecificationEnumValue

FieldTypeDescription
labelString!The label of the enum, e.g. 'green'. Consistent across all locales
valueString!The string value of the enum, e.g. 'Green'

ProductSpecificationGroup

FieldTypeDescription
nameString!The name of the specification group, e.g. 'technical'. Consistent across all locales
labelString!The label of the specification group, e.g. 'Technical'. Localized to the current locale
descriptionStringOptional descriptive information about the specification group, Localized to the current locale
attributes[ProductSpecificationAttribute!]!Attributes for this specification group. These reflect a list of all the attributes associated with this specification group.

ProductSpecificationNumberAttribute

Implements AbstractProductSpecificationAttribute

FieldTypeDescription
nameString!The name of the attribute, e.g. 'length'. Consistent across all locales
labelString!The label of the attribute, e.g. 'Length'. Localized to the current locale
valueFloat!The integer value of the attribute, e.g. 1
descriptionStringOptional descriptive information about the attribute, Localized to the current locale

ProductSpecificationStringAttribute

Implements AbstractProductSpecificationAttribute

FieldTypeDescription
nameString!The name of the attribute, e.g. 'size'. Consistent across all locales
labelString!The label of the attribute, e.g. 'Size'. Localized to the current locale
valueString!The string value of the attribute, e.g. 'XL'. Localized to the current locale
descriptionStringOptional descriptive information about the attribute, Localized to the current locale

ProductsResult

Paginated result containing products and available facets for filtering

FieldTypeDescription
items[Product!]!List of products in the result
paginationPagination!Where this page sits within the full result set
facets[Facet!]Available facets for filtering
queryIdStringThe search engine's id for this search, for click and conversion analytics that attribute an event to the search it came from. Null where the engine issues none, or analytics is not enabled for it.
correctedSearchTermStringThe term the products were found for, where the term as typed found nothing and the engine's top suggestion did. Null when the term was searched as given, and always null with exactSearchTerm.
redirectSearchRedirectWhere one of the engine's keyword rules sends this search term instead of to a result page. Null where the engine has no matching rule.

ProductVariant

Fields added by Delivery options

Specific variant of a product with unique SKU, pricing, and attributes

FieldTypeDescription
idID!Unique identifier for the variant
availabilityProductAvailabilityTypeAvailability status of the variant
nameStringThe name of the variant.
descriptionStringThe variant description, can be formatted using Markdown.
skuStringThe SKU (stock keeping unit) for the variant.
eanStringEuropean Article Number (EAN)
mpnStringThe manufacturer's part number (MPN).
hscodeStringHarmonized System (HS) code for the variant.
primaryImageProductImageThe main image associated with the product variant.
images[ProductImage!]All images associated with the product variant.
priceTaxedPriceThe price on the platform after regular product discounts are applied, it's the price communicated to the customer in the storefront.
regularPriceTaxedPriceThe regular selling price on the platform, potentially already discounted from the MSRP. It's the standard price at which the product is usually offered when there are no special sales or additional discounts.
listPriceTaxedPriceRepresents the list price, also known as te Manufacturer's Suggested Retail Price (MSRP). It's the highest price shown and could be used as the strikethrough price to indicate the original value of the product before any discounts.
unitStringThe name of the unit the variant is sold in, such as piece, box or metre, in the store's language, without a quantity: how many go in one is the quantityRule step. Null where the catalog does not say.
documents[ProductDocument!]!The variant's documents, such as its datasheet and declaration of conformity, in catalog order. Empty where it has none.
accessories[ProductAccessory!]!The accessories and spare parts sold for this variant, in catalog order. One that cannot be sold in the store is left out.
complementaryProducts[ProductVariant!]!Products to buy alongside this variant, such as socks with shoes, each as the variant it is sold as, in catalog order, so its price and stock are the ones a buyer gets; its product, and that product's slug, link to its page. One that cannot be sold in the store, or is out of stock, is left out. Empty where the catalog lists none.
lowestPriceTaxedPriceThe lowest price of the 30 days before the current discount, which EU price-indication rules require beside a reduction. Null when the variant is not discounted, and where the engine has no record of it.
specifications[ProductSpecificationGroup!]Specifications for this variant. These reflect predefined groups of attributes that can be used to describe the variant on the frontend.
highlightedSpecifications[ProductSpecificationAttribute!]Highlighted specifications for this variant. These are a subset of the full specifications that are particularly important or relevant for the product. They are often used to highlight key features in the product detail view.
productProductBacklink to the product. This is useful for the frontend to fetch product information if the entrypoint was the variant.
ribbonProductRibbonThe ribbon. For example: 'Boeket van de maand' etc.
dimensions[Dimension!]!The dimensions specific to the product variant. Used to display the dimensions of the variant.
priceTiers[ProductPriceTier!]The unit price at each order quantity, lowest quantity first, for a tier table. Empty when the price has no tiers; null when the engine does not tell.
stockByWarehouse[WarehouseStock!]Stock per warehouse, for a buyer who chooses where to order from. Null when stock is not kept per warehouse.
kindProductKindTypeWhether the variant is shipped or delivered digitally, so a storefront can drop the quantity selector and shipping promises for a digital one. Null when the engine does not tell.
stockProductVariantStockHow much of the variant is in stock, for a storefront to say so. Null when no stock is tracked for it, or when it is not for sale.
inStockAlternativeProductVariantThe variant of the same product most like this one that is in stock, such as the same colour in another size. Null when this one is in stock, or when no other variant is.
quantityRuleProductVariantQuantityRuleHow many of the variant can be ordered on one line, for a quantity stepper before it is in the cart. Null when the engine does not tell.
deliveryPromiseDeliveryPromiseWhen this variant arrives if it is ordered now, at a country and optional postal code: the earliest date, the deadline to order for it, the carrier and the price. The same source as the cart's delivery dates, so the product page promises what checkout offers. Null when the delivery provider makes no promises.Arguments: country, postalCode

ProductVariantDimension

Product variant dimension containing selectable options (e.g., size, color)

FieldTypeDescription
labelString!Display label for the dimension
nameString!Internal name of the dimension
options[ProductVariantDimensionOption!]!Available options for this dimension

ProductVariantDimensionColorOption

Implements ProductVariantDimensionOption

Color-based product variant dimension option with hex color value

FieldTypeDescription
labelString!
valueString!
selectedBoolean!
availabilityProductAvailabilityType
productProduct
variantProductVariant
colorString!Hex value of the color used to display the option.

ProductVariantDimensionImageOption

Implements ProductVariantDimensionOption

Image-based product variant dimension option (e.g., pattern, style)

FieldTypeDescription
labelString!
valueString!
selectedBoolean!
availabilityProductAvailabilityType
productProduct
variantProductVariant

ProductVariantDimensionTextOption

Implements ProductVariantDimensionOption

Text-based product variant dimension option (e.g., size, material)

FieldTypeDescription
labelString!
valueString!
selectedBoolean!
availabilityProductAvailabilityType
productProduct
variantProductVariant

ProductVariantQuantityRule

How many of a variant can be ordered on one line. The bounds are multiples of step, so a minimum of 1 in packs of 6 is 6. Stock does not limit it here; that limit is the cart line's quantityRule.

FieldTypeDescription
minimumInt!The least that can be ordered; step when the variant has no minimum.
maximumIntThe variant's maximum per line. Null when it has none.
stepInt!Quantities go up in this step, the pack size; 1 when it is not sold in packs.

ProductVariantStock

A variant's stock, as a buyer is told it.

FieldTypeDescription
levelStockLevelType!How the stock reads.
lowStockQuantityIntHow many are left. Only given for LOW_STOCK.
expectedAvailableDateDateWhen an out-of-stock variant is expected back. Null when nobody knows.

ProductYouTubeVideo

YouTube video embedded as product media

FieldTypeDescription
videoIdString!The YouTube video ID.
altStringAlternative text for the video
descriptionStringDescription of the video

RangeFacet

Range-based facet for numeric filtering (e.g., price, rating)

FieldTypeDescription
keyString!Unique key for the facet (e.g., 'price')
labelString!Display label for the facet (e.g., 'Price')
currencyCurrencyThe currency the range counts in, where it is an amount of money: min, max, the selection and a filter's bounds are then in its minor units, such as cents, as Money.centAmount is. Null for a plain number, such as a width.
minFloat!Minimum value in the range
maxFloat!Maximum value in the range
selectedMinFloatCurrently selected minimum value
selectedMaxFloatCurrently selected maximum value

Reviews

FieldTypeDescription
amountInt!The number of reviews for the product.
averageRatingFloat!The average rating for the product.

ToggleFacet

Boolean toggle facet for binary filtering (e.g., in stock, on sale)

FieldTypeDescription
keyString!Unique key for the facet (e.g., 'sustainable')
labelString!Display label for the facet (e.g., 'Sustainable')
options[FacetValue!]!Toggle options (exactly 2: true and false)

Warehouse

A place stock is kept and shipped from.

FieldTypeDescription
keyString!Stable identifier of the warehouse.
nameString!Display name of the warehouse.

WarehouseStock

How much of a variant one warehouse holds.

FieldTypeDescription
warehouseWarehouse!
availableQuantityInt!How many it can ship now.
expectedAvailableDateDateWhen it expects more, when it has none. Null when nobody knows.

Input objects

FacetFilterInput

FieldTypeDescription
keyString!Unique key for the facet
selections[String!]Required for Options Facets
minFloatRequired for Range Facets
maxFloatRequired for Range Facets
toggleBooleanRequired for Toggle Facets

FilterConditionInput

A condition a listing applies before the shopper's facet selections, which cannot widen it. A product matches any of its values; conditions join with AND.

FieldTypeDescription
keyString!Filter condition key
valueStringA single value to match; ignored where values is set.
values[String!]The values to match, any of them.

Enums

CategorySortOrderType

Available sorting options for category listings

NAME_ASCENDINGSort by name in ascending order
NAME_DESCENDINGSort by name in descending order

ProductAccessoryKindType

How an accessory relates to the variant it is listed for.

ACCESSORYSomething to use with the variant
SPARE_PARTA replacement part for the variant

ProductAvailabilityType

Product availability status indicating stock levels and purchase options

IN_STOCKThe product is currently in stock and available for purchase.
OUT_OF_STOCKThe product is temporarily unavailable because it is out of stock. Customers cannot purchase it at the moment.
BACKORDERThe product is temporarily out of stock, but customers can still place orders. The product will be shipped once it becomes available again.
DISCONTINUEDThe product has been permanently discontinued and is no longer available for purchase.
NOT_FOR_SALEThe variant has no price for the shopper's store, currency and customer, so it cannot be bought whatever its stock. Show it as unavailable, without a stock claim.

ProductDocumentKindType

What a product document is, so a page can group and label it.

DATASHEETA technical datasheet
DECLARATION_OF_CONFORMITYA declaration of conformity, such as the CE declaration
SAFETY_INFORMATIONSafety information
MANUALA manual or instructions
OTHERAny other document

ProductKindType

How a product reaches the buyer.

PHYSICALShipped as a parcel.
DIGITALDelivered digitally, such as an ebook or a download: no shipping, no quantity.

StockLevelType

How a variant's stock reads to a buyer.

IN_STOCKIn stock, with more left than is worth mentioning.
LOW_STOCKIn stock, and few enough left to say how many.
PRE_ORDEROut of stock, and orderable now to ship when it is back.
SOLD_OUTOut of stock, and not orderable until it is back.

Interfaces

AbstractProductSpecificationAttribute

FieldTypeDescription
nameString!The name of the attribute, e.g. 'color'. Consistent across all locales
labelString!The label of the attribute, e.g. 'Color'. Localized to the current locale
descriptionStringOptional descriptive information about the attribute, Localized to the current locale

Implemented by ProductSpecificationBooleanAttribute, ProductSpecificationDateTimeAttribute, ProductSpecificationEnumAttribute, ProductSpecificationEnumListAttribute, ProductSpecificationNumberAttribute and ProductSpecificationStringAttribute.

ProductVariantDimensionOption

Interface for product variant dimension options with common properties

FieldTypeDescription
labelString!Display label for the option
valueString!Value of the option
selectedBoolean!Whether this option is currently selected
availabilityProductAvailabilityTypeAvailability status of this option
productProductThe product this option belongs to
variantProductVariantThe specific variant this option represents

Implemented by ProductVariantDimensionColorOption, ProductVariantDimensionImageOption and ProductVariantDimensionTextOption.

Unions

Facet

Union of different facet types for product filtering

One of RangeFacet, OptionsFacet, ToggleFacet or CategoryFacet.

Media

Union of different media types available for products

One of ProductImage, ProductImage360 or ProductYouTubeVideo.

ProductSpecificationAttribute

One of ProductSpecificationStringAttribute, ProductSpecificationNumberAttribute, ProductSpecificationBooleanAttribute, ProductSpecificationEnumAttribute, ProductSpecificationEnumListAttribute or ProductSpecificationDateTimeAttribute.