Skip to content

Shared types

Types that several domains use, such as money, addresses, and the scalars.

Objects

Address

Represents the basic structure for an address, supporting both private and company addresses.

FieldTypeDescription
idID
nameStringWhat the owner calls this address in their address book, such as "Work" or the name of a company location. Empty when the address was never named.
salutationSalutationTypeThe salutation or title for the person associated with the address.
givenNameStringThe given name (first name) of the individual. May be left empty for company addresses.
familyNameStringThe family name (last name) of the individual. May be left empty for company addresses.
streetAddressStringThe unstructured full street address, including street name, number, and optional suffix.
streetNameStringThe name of the street where the address is located.
streetNumberStringThe number of the building on the street. This field represents the main address number.
streetNumberSuffixStringAdditional suffixes to the street number, often used in countries like the Netherlands. Example: "A", "B", or "1/2".
additionalAddressInfoStringExtra information regarding the address, such as building number, floor, or apartment number.
postalCodeString!The postal code or ZIP code for the address, depending on the country.
cityStringThe city where the address is located.
countryCountryCode!The country where the address is located. Must be provided.
regionStringThe region, state, or province for the address. Used to represent subdivisions of countries.
phoneStringThe phone number associated with this address, typically including the international code.
emailStringThe email address for contact, optional for both personal and business addresses.
companyStringThe company name for business addresses. This field may be omitted for personal addresses.

AddressLookupMatch

An address the lookup found, to fill in an address form with

FieldTypeDescription
streetAddressString!The first address line as the country writes it, street and number together, for a country whose addresses do not split into the fields below
streetNameString!
streetNumberStringNull for an address without a separate house number
streetNumberSuffixStringThe addition to the house number, such as a letter or a unit, when it has one
postalCodeString!
cityString!
countryCountryCode!

AddressResult

A page of addresses out of an address book, whether the book belongs to a person or to a company. Both are read by the same picker, so both answer with the same shape.

FieldTypeDescription
items[Address!]!Addresses in the current page
paginationPagination!Where this page sits within the full result set

ApplePayExtra

Implements PaymentMethodExtraFields

FieldTypeDescription
typeString!
brands[String!]
configurationPaymentMethodApplePayConfiguration

Represents a single item in a breadcrumb trail.

FieldTypeDescription
nameString!Name of the breadcrumb item.
pathString!Path of the breadcrumb item.
typeBreadcrumbType!Type of the breadcrumb item.

Carrier

A company that delivers parcels.

FieldTypeDescription
keyString!Stable identifier of the carrier, e.g. postnl.
nameString!Display name of the carrier.

CartError

Implements Error

A recoverable error that occurred during a cart operation

FieldTypeDescription
messageString!Developer/debug description of the failure. Not localized and never shown to end users.
codeCartErrorCodeType!The error code identifying the cart operation failure

FieldValidationIssue

A single field-level validation failure, to attach to its input control

FieldTypeDescription
messageString!Developer/debug description of the failure. Not localized and never shown to end users.
codeString!Machine-readable code driving the displayed message — REQUIRED, TOO_LONG, INVALID_FORMAT, … Deliberately a String, not an enum, so a project can emit its own codes without forking the framework.
fieldString!The input field that caused the issue, e.g. email

GooglePayExtra

Implements PaymentMethodExtraFields

What a storefront needs to show the Google Pay button for this method.

FieldTypeDescription
typeString!
brands[String!]Card networks Google Pay may offer.
configurationPaymentMethodGooglePayConfiguration

Money

FieldTypeDescription
centAmountInt!
currencyCurrency!

OpenGraph

Open Graph protocol metadata for social media sharing

FieldTypeDescription
titleStringOpen Graph title.
descriptionStringOpen Graph description.
imageStringOpen Graph image URL.

OrderSingleLineItem

Implements OrderLineItem

Individual line item in an order containing product details and pricing information

FieldTypeDescription
idID!Unique identifier for the line item
nameString!Name of the line item
variantProductVariant!Product variant details for this line item
quantityInt!Number of items in the line item
priceTaxedPrice!The final price for the whole line, after any additional discounts on top of the regular price: the unit price multiplied by the quantity. This is not a unit price -- divide by quantity at the call site if you need one, as there is no rounding-safe per-unit field.
regularPriceTaxedPrice!The regular selling price for the whole line, potentially already discounted from the MSRP: the standard price at which the product is offered when there are no special sales or additional discounts. Same basis as the final price, unit price multiplied by quantity.
listPriceTaxedPrice!The list price for the whole line, also known as the Manufacturer's Suggested Retail Price (MSRP), on the same basis as the other two. It is the highest price shown and can be used as the strikethrough price. An engine that carries no separate MSRP reports the regular price here, so the two can be equal.

OtherPaymentMethodExtra

Implements PaymentMethodExtraFields

FieldTypeDescription
typeString!

PageMeta

Page metadata for SEO, from the page's three SEO fields. A field the editor left empty is null, and the site template supplies the fallback: a title pattern, the intro or lead as description, the lead image as image.

FieldTypeDescription
titleStringThe page's SEO title; null where it falls back to the site template
descriptionStringThe page's SEO description; null where it falls back to the site template
keywords[String]SEO keywords for the pageDeprecated: No CMS stores keywords any more; search engines ignore them
openGraphOpenGraphOpen Graph metadata for the page

Pagination

Where a page sits within the full result set.

FieldTypeDescription
pageInt!1-based index of this page.
pageSizeInt!Maximum items per page, as requested or defaulted.
totalCountIntTotal matching items, where the engine can count them exactly. Null when the engine caps or estimates its count, so a number here is never an approximation.
pageCountIntNumber of pages at this page size. Null whenever totalCount is null, since a page count cannot be derived from a count the engine could not produce.
hasNextPageBoolean!Whether a further page exists.
hasPreviousPageBoolean!Whether an earlier page exists. Always exact, since it follows from page.

Payment

FieldTypeDescription
idID!

PaymentMethod

FieldTypeDescription
idID!Unique identifier of the payment method
internalIdString!Internal identifier of the payment method for the provider
nameString!Human readable name of the payment method (localized)
providerString!Payment method provider
options[PaymentMethodOption!]Sub-methods a method resolves to, where choosing it is not yet a complete choice -- a card scheme within cards, a particular giftcard within vouchers. The provider is told which one was picked. Most methods have none.
extraPaymentMethodExtra

PaymentMethodApplePayConfiguration

FieldTypeDescription
merchantIdString!
merchantNameString!

PaymentMethodGooglePayConfiguration

FieldTypeDescription
merchantIdStringThe merchant id Google issued. Absent in a test environment.
gatewayMerchantIdString!The merchant id at the payment provider, which Google passes the token to.

PaymentMethodOption

FieldTypeDescription
idID!Unique identifier of the payment method option
nameString!Human readable name of the payment method (localized)

PaymentRedirect

Where to send the shopper to complete a payment at the provider. Returned by any mutation that starts a payment.

FieldTypeDescription
redirectUrlURL!URL to redirect the shopper to

ProductImage

FieldTypeDescription
urlString!The URL to the image.
altString
descriptionString

ProductSource

Which products a listing shows: those in a category, narrowed by facet selections, in a sort order. Every part is optional; a source with no category and no filters selects nothing.

FieldTypeDescription
categoryProductCategoryThe category whose products, its subcategories included, the source selects.
filters[ProductSourceFilter!]!The facet selections that narrow the products; a product matches every facet.
sortProductSortOrderTypeThe order to show the products in; null for RELEVANCE.

ProductSourceFilter

One facet of a product source and the values it selects.

FieldTypeDescription
keyString!The facet's key, the same in every search engine.
values[String!]!The selected values; a product matches any of them.

ResourceMeta

Metadata for a resource

FieldTypeDescription
titleStringTitle metadata
descriptionStringDescription metadata

SearchRedirect

Where a keyword rule sends a search instead of to a result page.

FieldTypeDescription
kindLinkKindType!
pathString!A page's path in the current locale without a locale prefix, or the URL.
pageTypePageTypeThe type of the page a PAGE redirect opens, so a client routes a catalog page apart from a content page. Null for a URL, and where the source does not know it, as for a search engine's keyword rule.

Store

Physical or virtual store location within a business unit

FieldTypeDescription
idID!Unique identifier for the store
nameString!Name of the store

StoreContext

FieldTypeDescription
storeKeyString!The store key associated with the store context.
localeLocale!The locale of the store context. For example: en-US.
currencyCurrency!The currency used in the store context.
countryCountryCodeThe market the store context is for; null for every market.

Tax

FieldTypeDescription
rateFloat!Rate of the tax line item as percentage from 0 to 1.
valueMoney!Value in money of the tax line item.

TaxedPrice

FieldTypeDescription
netMoney!
grossMoney!
taxTax!

TaxedTotalPrice

A total price consists of items that can have different tax rates.

FieldTypeDescription
netMoney!
grossMoney!
taxes[Tax!]!

TaxPortion

Tax portion breakdown

FieldTypeDescription
nameStringTax rate name
rateFloat!Tax rate percentage
amountMoney!Tax amount

ValidationError

Implements Error

The input was malformed: one or more fields need editing before the operation can succeed. Present in every mutation's error union.

FieldTypeDescription
messageString!Developer/debug description of the failure. Not localized and never shown to end users.
fields[FieldValidationIssue!]!The individual fields that failed validation

VatOutcome

The VAT rule a purchase follows and the reason it applies

FieldTypeDescription
treatmentVatTreatmentType!How VAT is applied
reasonVatReasonType!Why, as a code a checkout maps to its own explanation
incotermIncotermTypeThe delivery terms of an export. Null unless treatment is EXPORT.
eoriNumberStringThe EORI number of the company the cart is bought for, which customs need to clear an export. Carried to the order. Null unless treatment is EXPORT, and where the company has none recorded.

Input objects

AddressInput

Represents the basic structure for inputting an address, supporting both personal and business addresses.

FieldTypeDescription
idIDThe unique identifier for the address.
nameStringWhat the owner calls this address in their address book, such as "Work" or the name of a company location. Left out, the address has no name; on an update that removes the one it had.
salutationSalutationTypeThe salutation or title for the person associated with the address (e.g., Mr., Ms.). Optional.
givenNameStringThe given name (first name) of the individual. May be left empty for company addresses.
familyNameStringThe family name (last name) of the individual. May be left empty for company addresses.
streetAddressStringThe unstructured full street address, including street name, number, and optional suffix.
streetNameStringThe name of the street where the address is located. Required.
streetNumberStringThe number of the building on the street. This field represents the main address number. Required.
streetNumberSuffixStringAdditional suffixes to the street number, often used in countries like the Netherlands. Example: "A", "B", or "1/2".
additionalAddressInfoStringExtra information regarding the address, such as building number, floor, or apartment number.
postalCodeString!The postal code or ZIP code for the address, depending on the country. Required.
cityString!The city where the address is located. Required.
countryCountryCode!The country where the address is located. Must be a valid 2-letter ISO country code.
regionStringThe region, state, or province for the address. Used to represent subdivisions of countries. Optional.
phoneStringThe phone number associated with this address, typically including the international code. Optional.
emailStringThe email address for contact, optional for both personal and business addresses. Must be a valid email format.
companyStringThe company name for business addresses. This field is required for business addresses.

StoreContextInput

FieldTypeDescription
storeKeyString!The store key associated with the store context.
localeLocale!The locale of the store context. For example: en-US.
currencyCurrency!The currency used in the store context.
countryCountryCodeThe market the store context is for; leave out for every market.

Enums

Represents different types of breadcrumbs in the navigation structure.

CATEGORYRepresents a category in the breadcrumb.
CONTENTRepresents a content page in the breadcrumb.
PRODUCTRepresents a product in the breadcrumb.

CartErrorCodeType

Error codes for recoverable cart operation failures. These represent state or business conditions the client can act on (e.g. recreate the cart, refetch and retry), as opposed to malformed input which is reported as a ValidationError.

CART_NOT_FOUNDThe cart no longer exists, has expired, or belongs to another session. Create a new cart and retry.
CART_VERSION_CONFLICTThe cart was modified concurrently. Refetch the cart to get the latest version and retry.
CART_NOT_PERMITTEDThe cart exists and the caller's role does not allow acting on it. Retrying will not help; another cart might.
OUT_OF_STOCKOne or more requested line items are out of stock.
PAYMENT_NOT_REMOVABLEThe payment cannot be removed: its money has been taken, or its provider is still deciding.
NOT_FOR_SALEA requested variant has no price for this store, currency and customer, so it cannot be bought.
MERGE_NOT_UNDOABLEThere is no cart merge to undo: signing in did not merge, or the merge was already undone.

ClientDeviceType

Type of client device making the request

WEBWeb browser client
IOSiOS mobile application
ANDROIDAndroid mobile application

IncotermType

The delivery terms agreed for a shipment, by their Incoterms code

DAPDelivered at place: the seller delivers to the named address, and the buyer clears the goods through import customs and pays any duties and import VAT

LinkKindType

What a resolved link points at: a page of the site, or a URL.

PAGEA page of the site, by its path in the current locale.
URLA URL, such as another site or a mail address.

PageType

Defines the different types of pages available in the system.

CONTENTRepresents a content page.
CATALOGRepresents a catalog page.
ARTICLERepresents an article.
ARTICLE_OVERVIEWRepresents an article overview, one per section.

ProductSortOrderType

Available sorting options for product listings

RELEVANCEThe engine's own ranking: relevance to the search term, otherwise its default order.
POPULARITYSort by average review rating, the best rated first
NEWESTSort by the newest first
PRICE_ASCENDINGSort by price in ascending order
PRICE_DESCENDINGSort by price in descending order
NAME_ASCENDINGSort by name in ascending order
NAME_DESCENDINGSort by name in descending order

QuoteStatusType

Status of a quote. Only PENDING is orderable; every other value means the quote cannot be turned into an order, whether because one was already placed against it or because it is no longer live.

PENDINGIssued by the merchant and orderable
ACCEPTEDAn order has already been placed against this quote. Not orderable again.
DECLINEDDeclined, and not orderable
RENEGOTIATION_REQUESTEDThe buyer replied asking for a different offer, and the seller has yet to answer. Not orderable; the answer arrives as a new quote.
EXPIREDIssued by the merchant but past its validity date, so no longer orderable. A quote reports this as soon as validUntil passes.
CANCELLEDWithdrawn by the merchant, or replaced by a renegotiated quote

SalutationType

Defines the available options for a salutation, including gender-neutral options.

MR
MS
MX
NONE

VatReasonType

Why a purchase's VAT is applied the way it is, for a checkout to explain

NO_VAT_NUMBERNo VAT number is recorded, so the delivery country's VAT is charged
NO_VAT_NUMBER_IN_DELIVERY_COUNTRYThe company the cart is bought for holds no VAT registration in the delivery country, so the seller's member state's VAT is charged. A checkout can hint that a registration in the delivery country makes the delivery reverse-charged.
VAT_NUMBER_INVALIDThe register says the recorded VAT number is not registered
VAT_NUMBER_UNVERIFIEDThe recorded VAT number was not checked, or the register could not answer. Recording the number again checks it again.
VAT_NUMBER_DOMESTICThe VAT number is registered in the seller's own member state
DELIVERY_DOMESTICThe goods stay in the seller's member state, so its VAT is charged whatever VAT number the buyer holds elsewhere
PICKUP_AT_SELLERThe buyer collects the goods at the seller's own premises, so they never leave the seller's member state and its VAT is charged
INTRA_EU_SUPPLYThe goods go to another member state for a buyer with a valid VAT number from a member state other than the seller's, or for a company registered for VAT in the delivery country: an intra-community supply
DELIVERY_OUTSIDE_EUThe goods are delivered outside the EU

VatTreatmentType

How VAT is applied to a purchase

CHARGEDVAT is charged at the rates of the delivery country
REVERSE_CHARGEThe buyer accounts for the VAT under the reverse-charge mechanism, so the cart is taxed at 0%
EXPORTThe goods leave the EU, so the sale is an export taxed at 0%

Interfaces

Error

Shared interface for every error returned as data. Display is always driven by the error type or its code — never by the message.

FieldTypeDescription
messageString!Developer/debug description of the failure. Not localized and never shown to end users.

Implemented by AuthenticationError, BusinessUnitError, CartError, CartNotQuotableError, DeliveryError, OrderError, PasswordChangeError, PasswordResetError, PaymentError, ProductReviewError, QuoteNotOrderableError, QuoteNotPendingError, QuoteRequestNotCancellableError, ReturnError and ValidationError.

OrderLineItem

FieldTypeDescription
idID!Unique identifier for the line item
nameString!Name of the line item
quantityInt!Number of items in the line item
priceTaxedPrice!The final price for the whole line, after any additional discounts on top of the regular price: the unit price multiplied by the quantity. This is not a unit price -- divide by quantity at the call site if you need one, as there is no rounding-safe per-unit field.
regularPriceTaxedPrice!The regular selling price for the whole line, potentially already discounted from the MSRP: the standard price at which the product is offered when there are no special sales or additional discounts. Same basis as the final price, unit price multiplied by quantity.
listPriceTaxedPrice!The list price for the whole line, also known as the Manufacturer's Suggested Retail Price (MSRP), on the same basis as the other two. It is the highest price shown and can be used as the strikethrough price. An engine that carries no separate MSRP reports the regular price here, so the two can be equal.

Implemented by OrderSingleLineItem.

PaymentMethodExtraFields

FieldTypeDescription
typeString!

Implemented by ApplePayExtra, GooglePayExtra and OtherPaymentMethodExtra.

Unions

PaymentMethodExtra

One of ApplePayExtra, GooglePayExtra or OtherPaymentMethodExtra.

Scalars

CountryCode

ISO 3166-1 alpha-2 country code, e.g. NL.

Currency

ISO 4217 currency code, e.g. EUR.

Date

ISO 8601 calendar date with no time and no zone, e.g. 2026-08-06.

DateTime

ISO 8601 date and time, e.g. 2026-08-06T09:30:00Z.

EmailAddress

RFC 5322 email address.

JSON

Arbitrary JSON value.

Locale

BCP 47 language tag, e.g. en-US.

Time

ISO 8601 time of day, e.g. 09:30:00Z.

URL

Absolute URL, e.g. https://example.com/pay.