Skip to content
Guides

Schema and types

Compact reference for Query, inputs, enums, objects, nullability, and limits in the Storefront schema.

Last updated:

The public Storefront schema is read-oriented. It exposes a Query root; it does not expose Mutation or subscriptions.

Conventions

  • ! means the value cannot be null.
  • Public IDs use String, even when a value looks numeric. They are opaque.
  • Decimal represents monetary values and decimal measurements.
  • DateTime uses an ISO 8601 date and time.
  • An argument without ! can be omitted or sent as null.
  • GraphQL only returns fields included in the selection set.

Query

FieldSignatureReturn valueReference
storestoreStorefrontStore!Open
productsproducts(input: StorefrontProductsInput)SearchResult!Open
productproduct(slug: String!)ProductDetail!Open
relatedProductsrelatedProducts(productId: String!, limit: Int)[ProductSummary!]!Open
collectionscollections(search: String, sort: NavigationSearchSort)[CollectionItem!]!Open
collectioncollection(slug: String!)CollectionItem!Open
sellerssellers[StorefrontSellerDto!]!Open
sellerseller(slug: String!)StorefrontSellerProfileDto!Open
productReviewsproductReviews(productId: String!, ...)Paginated review resultOpen

This table is exhaustive for the current public root. Operations not shown here remain in REST.

StorefrontProductsInput

FieldTypeLimit or default
productIds[String!]At most 100 valid IDs.
searchStringAt most 200 characters.
categories[String!]At most 50; 100 characters per value.
brands[String!]At most 50; 100 characters per value.
sellerSlugs[String!]At most 20; 100 characters per slug.
collections[String!]At most 50; 100 characters per value.
collectionIdStringValid public ID.
productTypes[ProductType!]At most 50.
tags[String!]At most 50; 100 characters per value.
filters[String!]At most 100; 250 characters per filter.
inStockBooleanNo filter when omitted.
minPriceDecimalGreater than or equal to 0.
maxPriceDecimalGreater than or equal to 0 and minPrice.
pageInt1; from 1 through 100.
pageSizeInt24; from 1 through 100.
sortProductSearchSortDEFAULT.

Facet filters use option:name:value or attribute:name:value. Read products for combination rules.

Enums

EnumValues
StoreTypeB2C, MARKETPLACE, RETAIL, B2B, SOCIAL, HUB, RESTAURANT
ProductTypePRODUCT, SERVICE, BUNDLE
ProductSearchSortDEFAULT, PRICE_ASC, PRICE_DESC, NEWEST, NAME_ASC, NAME_DESC
NavigationSearchSortDEFAULT, NAME_ASC, NAME_DESC, ORDER_ASC, ORDER_DESC, NEWEST, UPDATED_DESC
SortDirectionASC, DESC

ORDER_ASC and ORDER_DESC currently use ascending name order for collections. In productReviews, SortDirection only affects rating sorting; createdOn always uses DESC.

Store and navigation objects

TypeFields
StorefrontStoreid, name, description, slug, domain, logo, icon, type, currency, language
CollectionItemid, slug, name, description, imageUrl, type, productCount
StorefrontSellerDtoid, name, slug, logo, rating
StorefrontSellerProfileDtoid, name, slug, logo, rating, deliveryPolicy, privacyAndSecurityPolicy
StorefrontSellerRatingDtoaverage, totalReviews

Each query page documents optional fields with exact nullability.

Product objects

TypeMain fields
SearchResultpageIndex, pageSize, totalCount, totalPages, products, filters
ProductSummaryid, name, slug, productType, imageUrl, price, compareAtPrice, variantCount, isAvailable, totalInventory, bundleItemsCount, brand, category, status, collections, tags, seller
ProductDetailApplicable ProductSummary fields plus description, categoryId, specifications, variants, images, bundleItems, sizeGuide, priceTiers, createdAt, updatedAt
ProductSellerInfoid, name, slug
SearchFilterid, label, type, values, min, max, selectedMin, selectedMax
FacetItemvalue, count, label, selected

Product details also use these objects:

TypeFields
SpecItemkey, name, value
ImageItemurl, name, order
VariantItemid, sku, status, price, compareAtPrice, quantity, isAvailable, requiresShipping, options, images
BundleItemproductId, variantId, productName, variantName, sku, brand, imageUrl, quantity, available, allowBackorders, requiresShipping
ProductPriceTiervariantId, minQuantity, maxQuantity, unitPrice
SizeGuideInfoid, name, slug, description, imageUrl, gender, measurementType, unit, notes, rows
SizeGuideRowInfolabel, sizeKey, order, measurements
SizeGuideMeasurementInfokey, name, min, max, value, description

The product reference includes field-by-field types and nullability.

Reviews and pagination

The productReviews result exposes:

FieldTypeUse
data[StorefrontReviewDto!]!Current page.
hasNextPageBoolean!Whether you can continue.
nextCursorStringOpaque cursor for the next page.
totalCountLongTotal count when calculated.

StorefrontReviewDto contains id, productId, isVerifiedPurchase, rating, title, content, reviewerName, and createdOn.

Quick limits

OperationLimit
product.slug, collection.slug200 characters
seller.slug100 characters
relatedProducts.limit1–12; default 8
products.page, products.pageSize1–100; defaults 1 and 24
collections.search200 characters
productReviews.limit1–200; default 20
productReviews.rating1–5
productReviews.cursor2000 characters
productReviews.search200 characters

The schema does not replace business rules

A value can have the correct type and still be rejected because of its length, range, visibility, or store context. Each query page documents those rules and error codes.

On this page