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.
| Field | Type | Description |
|---|---|---|
id | ID | |
name | String | What 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. |
salutation | SalutationType | The salutation or title for the person associated with the address. |
givenName | String | The given name (first name) of the individual. May be left empty for company addresses. |
familyName | String | The family name (last name) of the individual. May be left empty for company addresses. |
streetAddress | String | The unstructured full street address, including street name, number, and optional suffix. |
streetName | String | The name of the street where the address is located. |
streetNumber | String | The number of the building on the street. This field represents the main address number. |
streetNumberSuffix | String | Additional suffixes to the street number, often used in countries like the Netherlands. Example: "A", "B", or "1/2". |
additionalAddressInfo | String | Extra information regarding the address, such as building number, floor, or apartment number. |
postalCode | String! | The postal code or ZIP code for the address, depending on the country. |
city | String | The city where the address is located. |
country | CountryCode! | The country where the address is located. Must be provided. |
region | String | The region, state, or province for the address. Used to represent subdivisions of countries. |
phone | String | The phone number associated with this address, typically including the international code. |
email | String | The email address for contact, optional for both personal and business addresses. |
company | String | The 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
| Field | Type | Description |
|---|---|---|
streetAddress | String! | 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 |
streetName | String! | |
streetNumber | String | Null for an address without a separate house number |
streetNumberSuffix | String | The addition to the house number, such as a letter or a unit, when it has one |
postalCode | String! | |
city | String! | |
country | CountryCode! |
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.
| Field | Type | Description |
|---|---|---|
items | [Address!]! | Addresses in the current page |
pagination | Pagination! | Where this page sits within the full result set |
ApplePayExtra
Implements PaymentMethodExtraFields
| Field | Type | Description |
|---|---|---|
type | String! | |
brands | [String!] | |
configuration | PaymentMethodApplePayConfiguration |
Breadcrumb
Represents a single item in a breadcrumb trail.
| Field | Type | Description |
|---|---|---|
name | String! | Name of the breadcrumb item. |
path | String! | Path of the breadcrumb item. |
type | BreadcrumbType! | Type of the breadcrumb item. |
Carrier
A company that delivers parcels.
| Field | Type | Description |
|---|---|---|
key | String! | Stable identifier of the carrier, e.g. postnl. |
name | String! | Display name of the carrier. |
CartError
Implements Error
A recoverable error that occurred during a cart operation
| Field | Type | Description |
|---|---|---|
message | String! | Developer/debug description of the failure. Not localized and never shown to end users. |
code | CartErrorCodeType! | The error code identifying the cart operation failure |
FieldValidationIssue
A single field-level validation failure, to attach to its input control
| Field | Type | Description |
|---|---|---|
message | String! | Developer/debug description of the failure. Not localized and never shown to end users. |
code | String! | 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. |
field | String! | 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.
| Field | Type | Description |
|---|---|---|
type | String! | |
brands | [String!] | Card networks Google Pay may offer. |
configuration | PaymentMethodGooglePayConfiguration |
Money
| Field | Type | Description |
|---|---|---|
centAmount | Int! | |
currency | Currency! |
OpenGraph
Open Graph protocol metadata for social media sharing
| Field | Type | Description |
|---|---|---|
title | String | Open Graph title. |
description | String | Open Graph description. |
image | String | Open Graph image URL. |
OrderSingleLineItem
Implements OrderLineItem
Individual line item in an order containing product details and pricing information
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier for the line item |
name | String! | Name of the line item |
variant | ProductVariant! | Product variant details for this line item |
quantity | Int! | Number of items in the line item |
price | TaxedPrice! | 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. |
regularPrice | TaxedPrice! | 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. |
listPrice | TaxedPrice! | 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
| Field | Type | Description |
|---|---|---|
type | String! |
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.
| Field | Type | Description |
|---|---|---|
title | String | The page's SEO title; null where it falls back to the site template |
description | String | The 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 |
openGraph | OpenGraph | Open Graph metadata for the page |
Pagination
Where a page sits within the full result set.
| Field | Type | Description |
|---|---|---|
page | Int! | 1-based index of this page. |
pageSize | Int! | Maximum items per page, as requested or defaulted. |
totalCount | Int | Total 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. |
pageCount | Int | Number 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. |
hasNextPage | Boolean! | Whether a further page exists. |
hasPreviousPage | Boolean! | Whether an earlier page exists. Always exact, since it follows from page. |
Payment
| Field | Type | Description |
|---|---|---|
id | ID! |
PaymentMethod
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier of the payment method |
internalId | String! | Internal identifier of the payment method for the provider |
name | String! | Human readable name of the payment method (localized) |
provider | String! | 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. |
extra | PaymentMethodExtra |
PaymentMethodApplePayConfiguration
| Field | Type | Description |
|---|---|---|
merchantId | String! | |
merchantName | String! |
PaymentMethodGooglePayConfiguration
| Field | Type | Description |
|---|---|---|
merchantId | String | The merchant id Google issued. Absent in a test environment. |
gatewayMerchantId | String! | The merchant id at the payment provider, which Google passes the token to. |
PaymentMethodOption
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier of the payment method option |
name | String! | 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.
| Field | Type | Description |
|---|---|---|
redirectUrl | URL! | URL to redirect the shopper to |
ProductImage
| Field | Type | Description |
|---|---|---|
url | String! | The URL to the image. |
alt | String | |
description | String |
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.
| Field | Type | Description |
|---|---|---|
category | ProductCategory | The category whose products, its subcategories included, the source selects. |
filters | [ProductSourceFilter!]! | The facet selections that narrow the products; a product matches every facet. |
sort | ProductSortOrderType | The order to show the products in; null for RELEVANCE. |
ProductSourceFilter
One facet of a product source and the values it selects.
| Field | Type | Description |
|---|---|---|
key | String! | 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
| Field | Type | Description |
|---|---|---|
title | String | Title metadata |
description | String | Description metadata |
SearchRedirect
Where a keyword rule sends a search instead of to a result page.
| Field | Type | Description |
|---|---|---|
kind | LinkKindType! | |
path | String! | A page's path in the current locale without a locale prefix, or the URL. |
pageType | PageType | The 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
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier for the store |
name | String! | Name of the store |
StoreContext
| Field | Type | Description |
|---|---|---|
storeKey | String! | The store key associated with the store context. |
locale | Locale! | The locale of the store context. For example: en-US. |
currency | Currency! | The currency used in the store context. |
country | CountryCode | The market the store context is for; null for every market. |
Tax
| Field | Type | Description |
|---|---|---|
rate | Float! | Rate of the tax line item as percentage from 0 to 1. |
value | Money! | Value in money of the tax line item. |
TaxedPrice
TaxedTotalPrice
A total price consists of items that can have different tax rates.
TaxPortion
Tax portion breakdown
| Field | Type | Description |
|---|---|---|
name | String | Tax rate name |
rate | Float! | Tax rate percentage |
amount | Money! | 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.
| Field | Type | Description |
|---|---|---|
message | String! | 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
| Field | Type | Description |
|---|---|---|
treatment | VatTreatmentType! | How VAT is applied |
reason | VatReasonType! | Why, as a code a checkout maps to its own explanation |
incoterm | IncotermType | The delivery terms of an export. Null unless treatment is EXPORT. |
eoriNumber | String | The 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.
| Field | Type | Description |
|---|---|---|
id | ID | The unique identifier for the address. |
name | String | What 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. |
salutation | SalutationType | The salutation or title for the person associated with the address (e.g., Mr., Ms.). Optional. |
givenName | String | The given name (first name) of the individual. May be left empty for company addresses. |
familyName | String | The family name (last name) of the individual. May be left empty for company addresses. |
streetAddress | String | The unstructured full street address, including street name, number, and optional suffix. |
streetName | String | The name of the street where the address is located. Required. |
streetNumber | String | The number of the building on the street. This field represents the main address number. Required. |
streetNumberSuffix | String | Additional suffixes to the street number, often used in countries like the Netherlands. Example: "A", "B", or "1/2". |
additionalAddressInfo | String | Extra information regarding the address, such as building number, floor, or apartment number. |
postalCode | String! | The postal code or ZIP code for the address, depending on the country. Required. |
city | String! | The city where the address is located. Required. |
country | CountryCode! | The country where the address is located. Must be a valid 2-letter ISO country code. |
region | String | The region, state, or province for the address. Used to represent subdivisions of countries. Optional. |
phone | String | The phone number associated with this address, typically including the international code. Optional. |
email | String | The email address for contact, optional for both personal and business addresses. Must be a valid email format. |
company | String | The company name for business addresses. This field is required for business addresses. |
StoreContextInput
| Field | Type | Description |
|---|---|---|
storeKey | String! | The store key associated with the store context. |
locale | Locale! | The locale of the store context. For example: en-US. |
currency | Currency! | The currency used in the store context. |
country | CountryCode | The market the store context is for; leave out for every market. |
Enums
BreadcrumbType
Represents different types of breadcrumbs in the navigation structure.
CATEGORY | Represents a category in the breadcrumb. |
CONTENT | Represents a content page in the breadcrumb. |
PRODUCT | Represents 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_FOUND | The cart no longer exists, has expired, or belongs to another session. Create a new cart and retry. |
CART_VERSION_CONFLICT | The cart was modified concurrently. Refetch the cart to get the latest version and retry. |
CART_NOT_PERMITTED | The cart exists and the caller's role does not allow acting on it. Retrying will not help; another cart might. |
OUT_OF_STOCK | One or more requested line items are out of stock. |
PAYMENT_NOT_REMOVABLE | The payment cannot be removed: its money has been taken, or its provider is still deciding. |
NOT_FOR_SALE | A requested variant has no price for this store, currency and customer, so it cannot be bought. |
MERGE_NOT_UNDOABLE | There 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
WEB | Web browser client |
IOS | iOS mobile application |
ANDROID | Android mobile application |
IncotermType
The delivery terms agreed for a shipment, by their Incoterms code
DAP | Delivered 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.
PAGE | A page of the site, by its path in the current locale. |
URL | A URL, such as another site or a mail address. |
PageType
Defines the different types of pages available in the system.
CONTENT | Represents a content page. |
CATALOG | Represents a catalog page. |
ARTICLE | Represents an article. |
ARTICLE_OVERVIEW | Represents an article overview, one per section. |
ProductSortOrderType
Available sorting options for product listings
RELEVANCE | The engine's own ranking: relevance to the search term, otherwise its default order. |
POPULARITY | Sort by average review rating, the best rated first |
NEWEST | Sort by the newest first |
PRICE_ASCENDING | Sort by price in ascending order |
PRICE_DESCENDING | Sort by price in descending order |
NAME_ASCENDING | Sort by name in ascending order |
NAME_DESCENDING | Sort 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.
PENDING | Issued by the merchant and orderable |
ACCEPTED | An order has already been placed against this quote. Not orderable again. |
DECLINED | Declined, and not orderable |
RENEGOTIATION_REQUESTED | The buyer replied asking for a different offer, and the seller has yet to answer. Not orderable; the answer arrives as a new quote. |
EXPIRED | Issued by the merchant but past its validity date, so no longer orderable. A quote reports this as soon as validUntil passes. |
CANCELLED | Withdrawn 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_NUMBER | No VAT number is recorded, so the delivery country's VAT is charged |
NO_VAT_NUMBER_IN_DELIVERY_COUNTRY | The 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_INVALID | The register says the recorded VAT number is not registered |
VAT_NUMBER_UNVERIFIED | The recorded VAT number was not checked, or the register could not answer. Recording the number again checks it again. |
VAT_NUMBER_DOMESTIC | The VAT number is registered in the seller's own member state |
DELIVERY_DOMESTIC | The goods stay in the seller's member state, so its VAT is charged whatever VAT number the buyer holds elsewhere |
PICKUP_AT_SELLER | The 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_SUPPLY | The 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_EU | The goods are delivered outside the EU |
VatTreatmentType
How VAT is applied to a purchase
CHARGED | VAT is charged at the rates of the delivery country |
REVERSE_CHARGE | The buyer accounts for the VAT under the reverse-charge mechanism, so the cart is taxed at 0% |
EXPORT | The 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.
| Field | Type | Description |
|---|---|---|
message | String! | 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
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier for the line item |
name | String! | Name of the line item |
quantity | Int! | Number of items in the line item |
price | TaxedPrice! | 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. |
regularPrice | TaxedPrice! | 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. |
listPrice | TaxedPrice! | 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
| Field | Type | Description |
|---|---|---|
type | String! |
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.

