---
title: "Types"
generated: true
---



## ActiveOrderResult {#activeorderresult}

<GraphQLDoc
  type="union"
  typeName="ActiveOrderResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    NoActiveOrderError: '/reference/graphql-api/shop/object-types#noactiveordererror',
  }}
>
{`union ActiveOrderResult = Order | NoActiveOrderError`}
</GraphQLDoc>

## AddPaymentToOrderResult {#addpaymenttoorderresult}

<GraphQLDoc
  type="union"
  typeName="AddPaymentToOrderResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    OrderPaymentStateError: '/reference/graphql-api/shop/object-types#orderpaymentstateerror',
    IneligiblePaymentMethodError: '/reference/graphql-api/shop/object-types#ineligiblepaymentmethoderror',
    PaymentFailedError: '/reference/graphql-api/shop/object-types#paymentfailederror',
    PaymentDeclinedError: '/reference/graphql-api/shop/object-types#paymentdeclinederror',
    OrderStateTransitionError: '/reference/graphql-api/shop/object-types#orderstatetransitionerror',
    NoActiveOrderError: '/reference/graphql-api/shop/object-types#noactiveordererror',
  }}
>
{`union AddPaymentToOrderResult = Order | OrderPaymentStateError | IneligiblePaymentMethodError | PaymentFailedError | PaymentDeclinedError | OrderStateTransitionError | NoActiveOrderError`}
</GraphQLDoc>

## Address {#address}

<GraphQLDoc
  type="type"
  typeName="Address"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Country: '/reference/graphql-api/shop/object-types#country',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Address {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  fullName: String
  company: String
  streetLine1: String!
  streetLine2: String
  city: String
  province: String
  postalCode: String
  country: Country!
  phoneNumber: String
  defaultShippingAddress: Boolean
  defaultBillingAddress: Boolean
  customFields: JSON
}`}
</GraphQLDoc>

## Adjustment {#adjustment}

<GraphQLDoc
  type="type"
  typeName="Adjustment"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    AdjustmentType: '/reference/graphql-api/shop/enums#adjustmenttype',
    Money: '/reference/graphql-api/shop/object-types#money',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Adjustment {
  adjustmentSource: String!
  type: AdjustmentType!
  description: String!
  amount: Money!
  data: JSON
}`}
</GraphQLDoc>

## AlreadyLoggedInError {#alreadyloggedinerror}

<GraphQLDoc
  type="type"
  typeName="AlreadyLoggedInError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to set the Customer for an Order when already logged in."""
type AlreadyLoggedInError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## ApplyCouponCodeResult {#applycouponcoderesult}

<GraphQLDoc
  type="union"
  typeName="ApplyCouponCodeResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    CouponCodeExpiredError: '/reference/graphql-api/shop/object-types#couponcodeexpirederror',
    CouponCodeInvalidError: '/reference/graphql-api/shop/object-types#couponcodeinvaliderror',
    CouponCodeLimitError: '/reference/graphql-api/shop/object-types#couponcodelimiterror',
  }}
>
{`union ApplyCouponCodeResult = Order | CouponCodeExpiredError | CouponCodeInvalidError | CouponCodeLimitError`}
</GraphQLDoc>

## Asset {#asset}

<GraphQLDoc
  type="type"
  typeName="Asset"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    AssetType: '/reference/graphql-api/shop/enums#assettype',
    Int: '/reference/graphql-api/shop/object-types#int',
    Coordinate: '/reference/graphql-api/shop/object-types#coordinate',
    Tag: '/reference/graphql-api/shop/object-types#tag',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Asset {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  type: AssetType!
  fileSize: Int!
  mimeType: String!
  width: Int!
  height: Int!
  source: String!
  preview: String!
  focalPoint: Coordinate
  tags: [Tag!]!
  customFields: JSON
}`}
</GraphQLDoc>

## AssetList {#assetlist}

<GraphQLDoc
  type="type"
  typeName="AssetList"
  typeLinks={{
    Asset: '/reference/graphql-api/shop/object-types#asset',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type AssetList {
  items: [Asset!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## AuthenticationMethod {#authenticationmethod}

<GraphQLDoc
  type="type"
  typeName="AuthenticationMethod"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type AuthenticationMethod {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  strategy: String!
}`}
</GraphQLDoc>

## AuthenticationResult {#authenticationresult}

<GraphQLDoc
  type="union"
  typeName="AuthenticationResult"
  typeLinks={{
    CurrentUser: '/reference/graphql-api/shop/object-types#currentuser',
    InvalidCredentialsError: '/reference/graphql-api/shop/object-types#invalidcredentialserror',
    NotVerifiedError: '/reference/graphql-api/shop/object-types#notverifiederror',
  }}
>
{`union AuthenticationResult = CurrentUser | InvalidCredentialsError | NotVerifiedError`}
</GraphQLDoc>

## Boolean {#boolean}

<GraphQLDoc
  type="scalar"
  typeName="Boolean"
  typeLinks={{}}
>
{`"""The \`Boolean\` scalar type represents \`true\` or \`false\`."""
scalar Boolean`}
</GraphQLDoc>

## BooleanCustomFieldConfig {#booleancustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="BooleanCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type BooleanCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  ui: JSON
}`}
</GraphQLDoc>

## BooleanStructFieldConfig {#booleanstructfieldconfig}

<GraphQLDoc
  type="type"
  typeName="BooleanStructFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type BooleanStructFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  ui: JSON
}`}
</GraphQLDoc>

## Channel {#channel}

<GraphQLDoc
  type="type"
  typeName="Channel"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Zone: '/reference/graphql-api/shop/object-types#zone',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    CurrencyCode: '/reference/graphql-api/shop/enums#currencycode',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Int: '/reference/graphql-api/shop/object-types#int',
    Seller: '/reference/graphql-api/shop/object-types#seller',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Channel {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  code: String!
  token: String!
  defaultTaxZone: Zone
  defaultShippingZone: Zone
  defaultLanguageCode: LanguageCode!
  availableLanguageCodes: [LanguageCode!]
  currencyCode: CurrencyCode!
  defaultCurrencyCode: CurrencyCode!
  availableCurrencyCodes: [CurrencyCode!]!
  """Not yet used - will be implemented in a future release."""
  trackInventory: Boolean
  """Not yet used - will be implemented in a future release."""
  outOfStockThreshold: Int
  pricesIncludeTax: Boolean!
  seller: Seller
  customFields: JSON
}`}
</GraphQLDoc>

## Collection {#collection}

<GraphQLDoc
  type="type"
  typeName="Collection"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    CollectionBreadcrumb: '/reference/graphql-api/shop/object-types#collectionbreadcrumb',
    Int: '/reference/graphql-api/shop/object-types#int',
    Asset: '/reference/graphql-api/shop/object-types#asset',
    Collection: '/reference/graphql-api/shop/object-types#collection',
    ConfigurableOperation: '/reference/graphql-api/shop/object-types#configurableoperation',
    CollectionTranslation: '/reference/graphql-api/shop/object-types#collectiontranslation',
    ProductVariantList: '/reference/graphql-api/shop/object-types#productvariantlist',
    ProductVariantListOptions: '/reference/graphql-api/shop/input-types#productvariantlistoptions',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Collection {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode
  name: String!
  slug: String!
  breadcrumbs: [CollectionBreadcrumb!]!
  position: Int!
  description: String!
  featuredAsset: Asset
  assets: [Asset!]!
  parent: Collection
  parentId: ID!
  children: [Collection!]
  filters: [ConfigurableOperation!]!
  translations: [CollectionTranslation!]!
  productVariants(options: ProductVariantListOptions): ProductVariantList!
  customFields: JSON
}`}
</GraphQLDoc>

## CollectionBreadcrumb {#collectionbreadcrumb}

<GraphQLDoc
  type="type"
  typeName="CollectionBreadcrumb"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type CollectionBreadcrumb {
  id: ID!
  name: String!
  slug: String!
}`}
</GraphQLDoc>

## CollectionList {#collectionlist}

<GraphQLDoc
  type="type"
  typeName="CollectionList"
  typeLinks={{
    Collection: '/reference/graphql-api/shop/object-types#collection',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type CollectionList {
  items: [Collection!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## CollectionResult {#collectionresult}

<GraphQLDoc
  type="type"
  typeName="CollectionResult"
  typeLinks={{
    Collection: '/reference/graphql-api/shop/object-types#collection',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`"""
Which Collections are present in the products returned
by the search, and in what quantity.
"""
type CollectionResult {
  collection: Collection!
  count: Int!
}`}
</GraphQLDoc>

## CollectionTranslation {#collectiontranslation}

<GraphQLDoc
  type="type"
  typeName="CollectionTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type CollectionTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
  slug: String!
  description: String!
}`}
</GraphQLDoc>

## ConfigArg {#configarg}

<GraphQLDoc
  type="type"
  typeName="ConfigArg"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type ConfigArg {
  name: String!
  value: String!
}`}
</GraphQLDoc>

## ConfigArgDefinition {#configargdefinition}

<GraphQLDoc
  type="type"
  typeName="ConfigArgDefinition"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type ConfigArgDefinition {
  name: String!
  type: String!
  list: Boolean!
  required: Boolean!
  defaultValue: JSON
  label: String
  description: String
  ui: JSON
}`}
</GraphQLDoc>

## ConfigurableOperation {#configurableoperation}

<GraphQLDoc
  type="type"
  typeName="ConfigurableOperation"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    ConfigArg: '/reference/graphql-api/shop/object-types#configarg',
  }}
>
{`type ConfigurableOperation {
  code: String!
  args: [ConfigArg!]!
}`}
</GraphQLDoc>

## ConfigurableOperationDefinition {#configurableoperationdefinition}

<GraphQLDoc
  type="type"
  typeName="ConfigurableOperationDefinition"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    ConfigArgDefinition: '/reference/graphql-api/shop/object-types#configargdefinition',
  }}
>
{`type ConfigurableOperationDefinition {
  code: String!
  args: [ConfigArgDefinition!]!
  description: String!
}`}
</GraphQLDoc>

## Coordinate {#coordinate}

<GraphQLDoc
  type="type"
  typeName="Coordinate"
  typeLinks={{
    Float: '/reference/graphql-api/shop/object-types#float',
  }}
>
{`type Coordinate {
  x: Float!
  y: Float!
}`}
</GraphQLDoc>

## Country {#country}

<GraphQLDoc
  type="type"
  typeName="Country"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Region: '/reference/graphql-api/shop/object-types#region',
    RegionTranslation: '/reference/graphql-api/shop/object-types#regiontranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`"""
A Country of the world which your shop operates in.

The \`code\` field is typically a 2-character ISO code such as "GB", "US", "DE" etc. This code is used in certain inputs such as
\`UpdateAddressInput\` and \`CreateAddressInput\` to specify the country.
"""
type Country {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  code: String!
  type: String!
  name: String!
  enabled: Boolean!
  parent: Region
  parentId: ID
  translations: [RegionTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## CountryList {#countrylist}

<GraphQLDoc
  type="type"
  typeName="CountryList"
  typeLinks={{
    Country: '/reference/graphql-api/shop/object-types#country',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type CountryList {
  items: [Country!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## CouponCodeExpiredError {#couponcodeexpirederror}

<GraphQLDoc
  type="type"
  typeName="CouponCodeExpiredError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned if the provided coupon code is invalid"""
type CouponCodeExpiredError {
  errorCode: ErrorCode!
  message: String!
  couponCode: String!
}`}
</GraphQLDoc>

## CouponCodeInvalidError {#couponcodeinvaliderror}

<GraphQLDoc
  type="type"
  typeName="CouponCodeInvalidError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned if the provided coupon code is invalid"""
type CouponCodeInvalidError {
  errorCode: ErrorCode!
  message: String!
  couponCode: String!
}`}
</GraphQLDoc>

## CouponCodeLimitError {#couponcodelimiterror}

<GraphQLDoc
  type="type"
  typeName="CouponCodeLimitError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`"""Returned if the provided coupon code is invalid"""
type CouponCodeLimitError {
  errorCode: ErrorCode!
  message: String!
  couponCode: String!
  limit: Int!
}`}
</GraphQLDoc>

## CurrentUser {#currentuser}

<GraphQLDoc
  type="type"
  typeName="CurrentUser"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    String: '/reference/graphql-api/shop/object-types#string',
    CurrentUserChannel: '/reference/graphql-api/shop/object-types#currentuserchannel',
  }}
>
{`type CurrentUser {
  id: ID!
  identifier: String!
  channels: [CurrentUserChannel!]!
}`}
</GraphQLDoc>

## CurrentUserChannel {#currentuserchannel}

<GraphQLDoc
  type="type"
  typeName="CurrentUserChannel"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    String: '/reference/graphql-api/shop/object-types#string',
    Permission: '/reference/graphql-api/shop/enums#permission',
  }}
>
{`type CurrentUserChannel {
  id: ID!
  token: String!
  code: String!
  permissions: [Permission!]!
}`}
</GraphQLDoc>

## CustomFieldConfig {#customfieldconfig}

<GraphQLDoc
  type="union"
  typeName="CustomFieldConfig"
  typeLinks={{
    StringCustomFieldConfig: '/reference/graphql-api/shop/object-types#stringcustomfieldconfig',
    LocaleStringCustomFieldConfig: '/reference/graphql-api/shop/object-types#localestringcustomfieldconfig',
    IntCustomFieldConfig: '/reference/graphql-api/shop/object-types#intcustomfieldconfig',
    FloatCustomFieldConfig: '/reference/graphql-api/shop/object-types#floatcustomfieldconfig',
    BooleanCustomFieldConfig: '/reference/graphql-api/shop/object-types#booleancustomfieldconfig',
    DateTimeCustomFieldConfig: '/reference/graphql-api/shop/object-types#datetimecustomfieldconfig',
    RelationCustomFieldConfig: '/reference/graphql-api/shop/object-types#relationcustomfieldconfig',
    TextCustomFieldConfig: '/reference/graphql-api/shop/object-types#textcustomfieldconfig',
    LocaleTextCustomFieldConfig: '/reference/graphql-api/shop/object-types#localetextcustomfieldconfig',
    StructCustomFieldConfig: '/reference/graphql-api/shop/object-types#structcustomfieldconfig',
  }}
>
{`union CustomFieldConfig = StringCustomFieldConfig | LocaleStringCustomFieldConfig | IntCustomFieldConfig | FloatCustomFieldConfig | BooleanCustomFieldConfig | DateTimeCustomFieldConfig | RelationCustomFieldConfig | TextCustomFieldConfig | LocaleTextCustomFieldConfig | StructCustomFieldConfig`}
</GraphQLDoc>

## Customer {#customer}

<GraphQLDoc
  type="type"
  typeName="Customer"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Address: '/reference/graphql-api/shop/object-types#address',
    OrderList: '/reference/graphql-api/shop/object-types#orderlist',
    OrderListOptions: '/reference/graphql-api/shop/input-types#orderlistoptions',
    User: '/reference/graphql-api/shop/object-types#user',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Customer {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  title: String
  firstName: String!
  lastName: String!
  phoneNumber: String
  emailAddress: String!
  addresses: [Address!]
  orders(options: OrderListOptions): OrderList!
  user: User
  customFields: JSON
}`}
</GraphQLDoc>

## CustomerGroup {#customergroup}

<GraphQLDoc
  type="type"
  typeName="CustomerGroup"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    CustomerList: '/reference/graphql-api/shop/object-types#customerlist',
    CustomerListOptions: '/reference/graphql-api/shop/input-types#customerlistoptions',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type CustomerGroup {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  customers(options: CustomerListOptions): CustomerList!
  customFields: JSON
}`}
</GraphQLDoc>

## CustomerList {#customerlist}

<GraphQLDoc
  type="type"
  typeName="CustomerList"
  typeLinks={{
    Customer: '/reference/graphql-api/shop/object-types#customer',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type CustomerList {
  items: [Customer!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## DateTime {#datetime}

<GraphQLDoc
  type="scalar"
  typeName="DateTime"
  typeLinks={{}}
>
{`"""A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the \`date-time\` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar."""
scalar DateTime`}
</GraphQLDoc>

## DateTimeCustomFieldConfig {#datetimecustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="DateTimeCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    Int: '/reference/graphql-api/shop/object-types#int',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`"""
Expects the same validation formats as the \`<input type="datetime-local">\` HTML element.
See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local#Additional_attributes
"""
type DateTimeCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  min: String
  max: String
  step: Int
  ui: JSON
}`}
</GraphQLDoc>

## DateTimeStructFieldConfig {#datetimestructfieldconfig}

<GraphQLDoc
  type="type"
  typeName="DateTimeStructFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Int: '/reference/graphql-api/shop/object-types#int',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`"""
Expects the same validation formats as the \`<input type="datetime-local">\` HTML element.
See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local#Additional_attributes
"""
type DateTimeStructFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  min: String
  max: String
  step: Int
  ui: JSON
}`}
</GraphQLDoc>

## DeletionResponse {#deletionresponse}

<GraphQLDoc
  type="type"
  typeName="DeletionResponse"
  typeLinks={{
    DeletionResult: '/reference/graphql-api/shop/enums#deletionresult',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type DeletionResponse {
  result: DeletionResult!
  message: String
}`}
</GraphQLDoc>

## Discount {#discount}

<GraphQLDoc
  type="type"
  typeName="Discount"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    AdjustmentType: '/reference/graphql-api/shop/enums#adjustmenttype',
    Money: '/reference/graphql-api/shop/object-types#money',
  }}
>
{`type Discount {
  adjustmentSource: String!
  type: AdjustmentType!
  description: String!
  amount: Money!
  amountWithTax: Money!
}`}
</GraphQLDoc>

## EmailAddressConflictError {#emailaddressconflicterror}

<GraphQLDoc
  type="type"
  typeName="EmailAddressConflictError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to create a Customer with an email address already registered to an existing User."""
type EmailAddressConflictError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## Facet {#facet}

<GraphQLDoc
  type="type"
  typeName="Facet"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    FacetValue: '/reference/graphql-api/shop/object-types#facetvalue',
    FacetValueList: '/reference/graphql-api/shop/object-types#facetvaluelist',
    FacetValueListOptions: '/reference/graphql-api/shop/input-types#facetvaluelistoptions',
    FacetTranslation: '/reference/graphql-api/shop/object-types#facettranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Facet {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
  code: String!
  values: [FacetValue!]!
  """Returns a paginated, sortable, filterable list of the Facet's values. Added in v2.1.0."""
  valueList(options: FacetValueListOptions): FacetValueList!
  translations: [FacetTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## FacetList {#facetlist}

<GraphQLDoc
  type="type"
  typeName="FacetList"
  typeLinks={{
    Facet: '/reference/graphql-api/shop/object-types#facet',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type FacetList {
  items: [Facet!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## FacetTranslation {#facettranslation}

<GraphQLDoc
  type="type"
  typeName="FacetTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type FacetTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
}`}
</GraphQLDoc>

## FacetValue {#facetvalue}

<GraphQLDoc
  type="type"
  typeName="FacetValue"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    Facet: '/reference/graphql-api/shop/object-types#facet',
    String: '/reference/graphql-api/shop/object-types#string',
    FacetValueTranslation: '/reference/graphql-api/shop/object-types#facetvaluetranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type FacetValue {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  facet: Facet!
  facetId: ID!
  name: String!
  code: String!
  translations: [FacetValueTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## FacetValueList {#facetvaluelist}

<GraphQLDoc
  type="type"
  typeName="FacetValueList"
  typeLinks={{
    FacetValue: '/reference/graphql-api/shop/object-types#facetvalue',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type FacetValueList {
  items: [FacetValue!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## FacetValueResult {#facetvalueresult}

<GraphQLDoc
  type="type"
  typeName="FacetValueResult"
  typeLinks={{
    FacetValue: '/reference/graphql-api/shop/object-types#facetvalue',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`"""
Which FacetValues are present in the products returned
by the search, and in what quantity.
"""
type FacetValueResult {
  facetValue: FacetValue!
  count: Int!
}`}
</GraphQLDoc>

## FacetValueTranslation {#facetvaluetranslation}

<GraphQLDoc
  type="type"
  typeName="FacetValueTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type FacetValueTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
}`}
</GraphQLDoc>

## Float {#float}

<GraphQLDoc
  type="scalar"
  typeName="Float"
  typeLinks={{}}
>
{`"""The \`Float\` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point)."""
scalar Float`}
</GraphQLDoc>

## FloatCustomFieldConfig {#floatcustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="FloatCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    Float: '/reference/graphql-api/shop/object-types#float',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type FloatCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  min: Float
  max: Float
  step: Float
  ui: JSON
}`}
</GraphQLDoc>

## FloatStructFieldConfig {#floatstructfieldconfig}

<GraphQLDoc
  type="type"
  typeName="FloatStructFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Float: '/reference/graphql-api/shop/object-types#float',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type FloatStructFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  min: Float
  max: Float
  step: Float
  ui: JSON
}`}
</GraphQLDoc>

## Fulfillment {#fulfillment}

<GraphQLDoc
  type="type"
  typeName="Fulfillment"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    FulfillmentLine: '/reference/graphql-api/shop/object-types#fulfillmentline',
    String: '/reference/graphql-api/shop/object-types#string',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Fulfillment {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  lines: [FulfillmentLine!]!
  summary: [FulfillmentLine!]!
  state: String!
  method: String!
  trackingCode: String
  customFields: JSON
}`}
</GraphQLDoc>

## FulfillmentLine {#fulfillmentline}

<GraphQLDoc
  type="type"
  typeName="FulfillmentLine"
  typeLinks={{
    OrderLine: '/reference/graphql-api/shop/object-types#orderline',
    ID: '/reference/graphql-api/shop/object-types#id',
    Int: '/reference/graphql-api/shop/object-types#int',
    Fulfillment: '/reference/graphql-api/shop/object-types#fulfillment',
  }}
>
{`type FulfillmentLine {
  orderLine: OrderLine!
  orderLineId: ID!
  quantity: Int!
  fulfillment: Fulfillment!
  fulfillmentId: ID!
}`}
</GraphQLDoc>

## GuestCheckoutError {#guestcheckouterror}

<GraphQLDoc
  type="type"
  typeName="GuestCheckoutError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to set the Customer on a guest checkout when the configured GuestCheckoutStrategy does not allow it."""
type GuestCheckoutError {
  errorCode: ErrorCode!
  message: String!
  errorDetail: String!
}`}
</GraphQLDoc>

## HistoryEntry {#historyentry}

<GraphQLDoc
  type="type"
  typeName="HistoryEntry"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    HistoryEntryType: '/reference/graphql-api/shop/enums#historyentrytype',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type HistoryEntry {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  type: HistoryEntryType!
  data: JSON!
  customFields: JSON
}`}
</GraphQLDoc>

## HistoryEntryList {#historyentrylist}

<GraphQLDoc
  type="type"
  typeName="HistoryEntryList"
  typeLinks={{
    HistoryEntry: '/reference/graphql-api/shop/object-types#historyentry',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type HistoryEntryList {
  items: [HistoryEntry!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## ID {#id}

<GraphQLDoc
  type="scalar"
  typeName="ID"
  typeLinks={{}}
>
{`"""The \`ID\` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as \`"4"\`) or integer (such as \`4\`) input value will be accepted as an ID."""
scalar ID`}
</GraphQLDoc>

## IdentifierChangeTokenExpiredError {#identifierchangetokenexpirederror}

<GraphQLDoc
  type="type"
  typeName="IdentifierChangeTokenExpiredError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""
Returned if the token used to change a Customer's email address is valid, but has
expired according to the \`verificationTokenDuration\` setting in the AuthOptions.
"""
type IdentifierChangeTokenExpiredError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## IdentifierChangeTokenInvalidError {#identifierchangetokeninvaliderror}

<GraphQLDoc
  type="type"
  typeName="IdentifierChangeTokenInvalidError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""
Returned if the token used to change a Customer's email address is either
invalid or does not match any expected tokens.
"""
type IdentifierChangeTokenInvalidError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## IneligiblePaymentMethodError {#ineligiblepaymentmethoderror}

<GraphQLDoc
  type="type"
  typeName="IneligiblePaymentMethodError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to add a Payment using a PaymentMethod for which the Order is not eligible."""
type IneligiblePaymentMethodError {
  errorCode: ErrorCode!
  message: String!
  eligibilityCheckerMessage: String
}`}
</GraphQLDoc>

## IneligibleShippingMethodError {#ineligibleshippingmethoderror}

<GraphQLDoc
  type="type"
  typeName="IneligibleShippingMethodError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to set a ShippingMethod for which the Order is not eligible"""
type IneligibleShippingMethodError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## InsufficientStockError {#insufficientstockerror}

<GraphQLDoc
  type="type"
  typeName="InsufficientStockError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
    Int: '/reference/graphql-api/shop/object-types#int',
    Order: '/reference/graphql-api/shop/object-types#order',
  }}
>
{`"""Returned when attempting to add more items to the Order than are available"""
type InsufficientStockError {
  errorCode: ErrorCode!
  message: String!
  quantityAvailable: Int!
  order: Order!
}`}
</GraphQLDoc>

## Int {#int}

<GraphQLDoc
  type="scalar"
  typeName="Int"
  typeLinks={{}}
>
{`"""The \`Int\` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1."""
scalar Int`}
</GraphQLDoc>

## IntCustomFieldConfig {#intcustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="IntCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    Int: '/reference/graphql-api/shop/object-types#int',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type IntCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  min: Int
  max: Int
  step: Int
  ui: JSON
}`}
</GraphQLDoc>

## IntStructFieldConfig {#intstructfieldconfig}

<GraphQLDoc
  type="type"
  typeName="IntStructFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Int: '/reference/graphql-api/shop/object-types#int',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type IntStructFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  min: Int
  max: Int
  step: Int
  ui: JSON
}`}
</GraphQLDoc>

## InvalidCredentialsError {#invalidcredentialserror}

<GraphQLDoc
  type="type"
  typeName="InvalidCredentialsError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned if the user authentication credentials are not valid"""
type InvalidCredentialsError {
  errorCode: ErrorCode!
  message: String!
  authenticationError: String!
}`}
</GraphQLDoc>

## JSON {#json}

<GraphQLDoc
  type="scalar"
  typeName="JSON"
  typeLinks={{}}
>
{`"""The \`JSON\` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)."""
scalar JSON`}
</GraphQLDoc>

## LocaleStringCustomFieldConfig {#localestringcustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="LocaleStringCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Int: '/reference/graphql-api/shop/object-types#int',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type LocaleStringCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  length: Int
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  pattern: String
  ui: JSON
}`}
</GraphQLDoc>

## LocaleTextCustomFieldConfig {#localetextcustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="LocaleTextCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type LocaleTextCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  ui: JSON
}`}
</GraphQLDoc>

## LocalizedString {#localizedstring}

<GraphQLDoc
  type="type"
  typeName="LocalizedString"
  typeLinks={{
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type LocalizedString {
  languageCode: LanguageCode!
  value: String!
}`}
</GraphQLDoc>

## MissingPasswordError {#missingpassworderror}

<GraphQLDoc
  type="type"
  typeName="MissingPasswordError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to register or verify a customer account without a password, when one is required."""
type MissingPasswordError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## Money {#money}

<GraphQLDoc
  type="scalar"
  typeName="Money"
  typeLinks={{}}
>
{`"""The \`Money\` scalar type represents monetary values and supports signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point)."""
scalar Money`}
</GraphQLDoc>

## NativeAuthStrategyError {#nativeauthstrategyerror}

<GraphQLDoc
  type="type"
  typeName="NativeAuthStrategyError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting an operation that relies on the NativeAuthStrategy, if that strategy is not configured."""
type NativeAuthStrategyError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## NativeAuthenticationResult {#nativeauthenticationresult}

<GraphQLDoc
  type="union"
  typeName="NativeAuthenticationResult"
  typeLinks={{
    CurrentUser: '/reference/graphql-api/shop/object-types#currentuser',
    InvalidCredentialsError: '/reference/graphql-api/shop/object-types#invalidcredentialserror',
    NotVerifiedError: '/reference/graphql-api/shop/object-types#notverifiederror',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
  }}
>
{`union NativeAuthenticationResult = CurrentUser | InvalidCredentialsError | NotVerifiedError | NativeAuthStrategyError`}
</GraphQLDoc>

## NegativeQuantityError {#negativequantityerror}

<GraphQLDoc
  type="type"
  typeName="NegativeQuantityError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to set a negative OrderLine quantity."""
type NegativeQuantityError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## NoActiveOrderError {#noactiveordererror}

<GraphQLDoc
  type="type"
  typeName="NoActiveOrderError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""
Returned when invoking a mutation which depends on there being an active Order on the
current session.
"""
type NoActiveOrderError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## NotVerifiedError {#notverifiederror}

<GraphQLDoc
  type="type"
  typeName="NotVerifiedError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""
Returned if \`authOptions.requireVerification\` is set to \`true\` (which is the default)
and an unverified user attempts to authenticate.
"""
type NotVerifiedError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## Order {#order}

<GraphQLDoc
  type="type"
  typeName="Order"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    OrderType: '/reference/graphql-api/shop/enums#ordertype',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Customer: '/reference/graphql-api/shop/object-types#customer',
    OrderAddress: '/reference/graphql-api/shop/object-types#orderaddress',
    OrderLine: '/reference/graphql-api/shop/object-types#orderline',
    Surcharge: '/reference/graphql-api/shop/object-types#surcharge',
    Discount: '/reference/graphql-api/shop/object-types#discount',
    Promotion: '/reference/graphql-api/shop/object-types#promotion',
    Payment: '/reference/graphql-api/shop/object-types#payment',
    Fulfillment: '/reference/graphql-api/shop/object-types#fulfillment',
    Int: '/reference/graphql-api/shop/object-types#int',
    Money: '/reference/graphql-api/shop/object-types#money',
    CurrencyCode: '/reference/graphql-api/shop/enums#currencycode',
    ShippingLine: '/reference/graphql-api/shop/object-types#shippingline',
    OrderTaxSummary: '/reference/graphql-api/shop/object-types#ordertaxsummary',
    HistoryEntryList: '/reference/graphql-api/shop/object-types#historyentrylist',
    HistoryEntryListOptions: '/reference/graphql-api/shop/input-types#historyentrylistoptions',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Order {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  type: OrderType!
  """
  The date & time that the Order was placed, i.e. the Customer
  completed the checkout and the Order is no longer "active"
  """
  orderPlacedAt: DateTime
  """A unique code for the Order"""
  code: String!
  state: String!
  """An order is active as long as the payment process has not been completed"""
  active: Boolean!
  customer: Customer
  shippingAddress: OrderAddress
  billingAddress: OrderAddress
  lines: [OrderLine!]!
  """
  Surcharges are arbitrary modifications to the Order total which are neither
  ProductVariants nor discounts resulting from applied Promotions. For example,
  one-off discounts based on customer interaction, or surcharges based on payment
  methods.
  """
  surcharges: [Surcharge!]!
  discounts: [Discount!]!
  """An array of all coupon codes applied to the Order"""
  couponCodes: [String!]!
  """Promotions applied to the order. Only gets populated after the payment process has completed."""
  promotions: [Promotion!]!
  payments: [Payment!]
  fulfillments: [Fulfillment!]
  totalQuantity: Int!
  """
  The subTotal is the total of all OrderLines in the Order. This figure also includes any Order-level
  discounts which have been prorated (proportionally distributed) amongst the items of each OrderLine.
  To get a total of all OrderLines which does not account for prorated discounts, use the
  sum of \`OrderLine.discountedLinePrice\` values.
  """
  subTotal: Money!
  """Same as subTotal, but inclusive of tax"""
  subTotalWithTax: Money!
  currencyCode: CurrencyCode!
  shippingLines: [ShippingLine!]!
  shipping: Money!
  shippingWithTax: Money!
  """Equal to subTotal plus shipping"""
  total: Money!
  """The final payable amount. Equal to subTotalWithTax plus shippingWithTax"""
  totalWithTax: Money!
  """A summary of the taxes being applied to this Order"""
  taxSummary: [OrderTaxSummary!]!
  history(options: HistoryEntryListOptions): HistoryEntryList!
  customFields: JSON
}`}
</GraphQLDoc>

## OrderAddress {#orderaddress}

<GraphQLDoc
  type="type"
  typeName="OrderAddress"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type OrderAddress {
  fullName: String
  company: String
  streetLine1: String
  streetLine2: String
  city: String
  province: String
  postalCode: String
  country: String
  countryCode: String
  phoneNumber: String
  customFields: JSON
}`}
</GraphQLDoc>

## OrderInterceptorError {#orderinterceptorerror}

<GraphQLDoc
  type="type"
  typeName="OrderInterceptorError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when an order operation is rejected by an OrderInterceptor method."""
type OrderInterceptorError {
  errorCode: ErrorCode!
  message: String!
  interceptorError: String!
}`}
</GraphQLDoc>

## OrderLimitError {#orderlimiterror}

<GraphQLDoc
  type="type"
  typeName="OrderLimitError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`"""Returned when the maximum order size limit has been reached."""
type OrderLimitError {
  errorCode: ErrorCode!
  message: String!
  maxItems: Int!
}`}
</GraphQLDoc>

## OrderLine {#orderline}

<GraphQLDoc
  type="type"
  typeName="OrderLine"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    ProductVariant: '/reference/graphql-api/shop/object-types#productvariant',
    Asset: '/reference/graphql-api/shop/object-types#asset',
    Money: '/reference/graphql-api/shop/object-types#money',
    Int: '/reference/graphql-api/shop/object-types#int',
    Float: '/reference/graphql-api/shop/object-types#float',
    Discount: '/reference/graphql-api/shop/object-types#discount',
    TaxLine: '/reference/graphql-api/shop/object-types#taxline',
    Order: '/reference/graphql-api/shop/object-types#order',
    FulfillmentLine: '/reference/graphql-api/shop/object-types#fulfillmentline',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type OrderLine {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  productVariant: ProductVariant!
  featuredAsset: Asset
  """The price of a single unit, excluding tax and discounts"""
  unitPrice: Money!
  """The price of a single unit, including tax but excluding discounts"""
  unitPriceWithTax: Money!
  """Non-zero if the unitPrice has changed since it was initially added to Order"""
  unitPriceChangeSinceAdded: Money!
  """Non-zero if the unitPriceWithTax has changed since it was initially added to Order"""
  unitPriceWithTaxChangeSinceAdded: Money!
  """
  The price of a single unit including discounts, excluding tax.
  
  If Order-level discounts have been applied, this will not be the
  actual taxable unit price (see \`proratedUnitPrice\`), but is generally the
  correct price to display to customers to avoid confusion
  about the internal handling of distributed Order-level discounts.
  """
  discountedUnitPrice: Money!
  """The price of a single unit including discounts and tax"""
  discountedUnitPriceWithTax: Money!
  """
  The actual unit price, taking into account both item discounts _and_ prorated (proportionally-distributed)
  Order-level discounts. This value is the true economic value of the OrderItem, and is used in tax
  and refund calculations.
  """
  proratedUnitPrice: Money!
  """The proratedUnitPrice including tax"""
  proratedUnitPriceWithTax: Money!
  """The quantity of items purchased"""
  quantity: Int!
  """The quantity at the time the Order was placed"""
  orderPlacedQuantity: Int!
  taxRate: Float!
  """The total price of the line excluding tax and discounts."""
  linePrice: Money!
  """The total price of the line including tax but excluding discounts."""
  linePriceWithTax: Money!
  """The price of the line including discounts, excluding tax"""
  discountedLinePrice: Money!
  """The price of the line including discounts and tax"""
  discountedLinePriceWithTax: Money!
  """
  The actual line price, taking into account both item discounts _and_ prorated (proportionally-distributed)
  Order-level discounts. This value is the true economic value of the OrderLine, and is used in tax
  and refund calculations.
  """
  proratedLinePrice: Money!
  """The proratedLinePrice including tax"""
  proratedLinePriceWithTax: Money!
  """The total tax on this line"""
  lineTax: Money!
  discounts: [Discount!]!
  taxLines: [TaxLine!]!
  order: Order!
  fulfillmentLines: [FulfillmentLine!]
  customFields: JSON
}`}
</GraphQLDoc>

## OrderList {#orderlist}

<GraphQLDoc
  type="type"
  typeName="OrderList"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type OrderList {
  items: [Order!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## OrderModificationError {#ordermodificationerror}

<GraphQLDoc
  type="type"
  typeName="OrderModificationError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to modify the contents of an Order that is not in the \`AddingItems\` state."""
type OrderModificationError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## OrderPaymentStateError {#orderpaymentstateerror}

<GraphQLDoc
  type="type"
  typeName="OrderPaymentStateError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to add a Payment to an Order that is not in the \`ArrangingPayment\` state."""
type OrderPaymentStateError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## OrderStateTransitionError {#orderstatetransitionerror}

<GraphQLDoc
  type="type"
  typeName="OrderStateTransitionError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned if there is an error in transitioning the Order state"""
type OrderStateTransitionError {
  errorCode: ErrorCode!
  message: String!
  transitionError: String!
  fromState: String!
  toState: String!
}`}
</GraphQLDoc>

## OrderTaxSummary {#ordertaxsummary}

<GraphQLDoc
  type="type"
  typeName="OrderTaxSummary"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Float: '/reference/graphql-api/shop/object-types#float',
    Money: '/reference/graphql-api/shop/object-types#money',
  }}
>
{`"""
A summary of the taxes being applied to this order, grouped
by taxRate.
"""
type OrderTaxSummary {
  """A description of this tax"""
  description: String!
  """The taxRate as a percentage"""
  taxRate: Float!
  """The total net price of OrderLines to which this taxRate applies"""
  taxBase: Money!
  """The total tax being applied to the Order at this taxRate"""
  taxTotal: Money!
}`}
</GraphQLDoc>

## PasswordAlreadySetError {#passwordalreadyseterror}

<GraphQLDoc
  type="type"
  typeName="PasswordAlreadySetError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to verify a customer account with a password, when a password has already been set."""
type PasswordAlreadySetError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## PasswordResetTokenExpiredError {#passwordresettokenexpirederror}

<GraphQLDoc
  type="type"
  typeName="PasswordResetTokenExpiredError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""
Returned if the token used to reset a Customer's password is valid, but has
expired according to the \`verificationTokenDuration\` setting in the AuthOptions.
"""
type PasswordResetTokenExpiredError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## PasswordResetTokenInvalidError {#passwordresettokeninvaliderror}

<GraphQLDoc
  type="type"
  typeName="PasswordResetTokenInvalidError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""
Returned if the token used to reset a Customer's password is either
invalid or does not match any expected tokens.
"""
type PasswordResetTokenInvalidError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## PasswordValidationError {#passwordvalidationerror}

<GraphQLDoc
  type="type"
  typeName="PasswordValidationError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when attempting to register or verify a customer account where the given password fails password validation."""
type PasswordValidationError {
  errorCode: ErrorCode!
  message: String!
  validationErrorMessage: String!
}`}
</GraphQLDoc>

## Payment {#payment}

<GraphQLDoc
  type="type"
  typeName="Payment"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Money: '/reference/graphql-api/shop/object-types#money',
    Refund: '/reference/graphql-api/shop/object-types#refund',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Payment {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  method: String!
  amount: Money!
  state: String!
  transactionId: String
  errorMessage: String
  refunds: [Refund!]!
  metadata: JSON
  customFields: JSON
}`}
</GraphQLDoc>

## PaymentDeclinedError {#paymentdeclinederror}

<GraphQLDoc
  type="type"
  typeName="PaymentDeclinedError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when a Payment is declined by the payment provider."""
type PaymentDeclinedError {
  errorCode: ErrorCode!
  message: String!
  paymentErrorMessage: String!
}`}
</GraphQLDoc>

## PaymentFailedError {#paymentfailederror}

<GraphQLDoc
  type="type"
  typeName="PaymentFailedError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""Returned when a Payment fails due to an error."""
type PaymentFailedError {
  errorCode: ErrorCode!
  message: String!
  paymentErrorMessage: String!
}`}
</GraphQLDoc>

## PaymentMethod {#paymentmethod}

<GraphQLDoc
  type="type"
  typeName="PaymentMethod"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    ConfigurableOperation: '/reference/graphql-api/shop/object-types#configurableoperation',
    PaymentMethodTranslation: '/reference/graphql-api/shop/object-types#paymentmethodtranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type PaymentMethod {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  code: String!
  description: String!
  enabled: Boolean!
  checker: ConfigurableOperation
  handler: ConfigurableOperation!
  translations: [PaymentMethodTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## PaymentMethodQuote {#paymentmethodquote}

<GraphQLDoc
  type="type"
  typeName="PaymentMethodQuote"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type PaymentMethodQuote {
  id: ID!
  code: String!
  name: String!
  description: String!
  isEligible: Boolean!
  eligibilityMessage: String
  customFields: JSON
}`}
</GraphQLDoc>

## PaymentMethodTranslation {#paymentmethodtranslation}

<GraphQLDoc
  type="type"
  typeName="PaymentMethodTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type PaymentMethodTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
  description: String!
}`}
</GraphQLDoc>

## PriceRange {#pricerange}

<GraphQLDoc
  type="type"
  typeName="PriceRange"
  typeLinks={{
    Money: '/reference/graphql-api/shop/object-types#money',
  }}
>
{`"""The price range where the result has more than one price"""
type PriceRange {
  min: Money!
  max: Money!
}`}
</GraphQLDoc>

## Product {#product}

<GraphQLDoc
  type="type"
  typeName="Product"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Asset: '/reference/graphql-api/shop/object-types#asset',
    ProductVariant: '/reference/graphql-api/shop/object-types#productvariant',
    ProductVariantList: '/reference/graphql-api/shop/object-types#productvariantlist',
    ProductVariantListOptions: '/reference/graphql-api/shop/input-types#productvariantlistoptions',
    ProductOptionGroup: '/reference/graphql-api/shop/object-types#productoptiongroup',
    FacetValue: '/reference/graphql-api/shop/object-types#facetvalue',
    ProductTranslation: '/reference/graphql-api/shop/object-types#producttranslation',
    Collection: '/reference/graphql-api/shop/object-types#collection',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Product {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
  slug: String!
  description: String!
  enabled: Boolean!
  featuredAsset: Asset
  assets: [Asset!]!
  """Returns all ProductVariants"""
  variants: [ProductVariant!]!
  """Returns a paginated, sortable, filterable list of ProductVariants"""
  variantList(options: ProductVariantListOptions): ProductVariantList!
  optionGroups: [ProductOptionGroup!]!
  facetValues: [FacetValue!]!
  translations: [ProductTranslation!]!
  collections: [Collection!]!
  customFields: JSON
}`}
</GraphQLDoc>

## ProductList {#productlist}

<GraphQLDoc
  type="type"
  typeName="ProductList"
  typeLinks={{
    Product: '/reference/graphql-api/shop/object-types#product',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type ProductList {
  items: [Product!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## ProductOption {#productoption}

<GraphQLDoc
  type="type"
  typeName="ProductOption"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    ProductOptionGroup: '/reference/graphql-api/shop/object-types#productoptiongroup',
    ProductOptionTranslation: '/reference/graphql-api/shop/object-types#productoptiontranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type ProductOption {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  code: String!
  name: String!
  groupId: ID!
  group: ProductOptionGroup!
  translations: [ProductOptionTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## ProductOptionGroup {#productoptiongroup}

<GraphQLDoc
  type="type"
  typeName="ProductOptionGroup"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    ProductOption: '/reference/graphql-api/shop/object-types#productoption',
    ProductOptionGroupTranslation: '/reference/graphql-api/shop/object-types#productoptiongrouptranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type ProductOptionGroup {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  code: String!
  name: String!
  options: [ProductOption!]!
  translations: [ProductOptionGroupTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## ProductOptionGroupTranslation {#productoptiongrouptranslation}

<GraphQLDoc
  type="type"
  typeName="ProductOptionGroupTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type ProductOptionGroupTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
}`}
</GraphQLDoc>

## ProductOptionTranslation {#productoptiontranslation}

<GraphQLDoc
  type="type"
  typeName="ProductOptionTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type ProductOptionTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
}`}
</GraphQLDoc>

## ProductTranslation {#producttranslation}

<GraphQLDoc
  type="type"
  typeName="ProductTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type ProductTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
  slug: String!
  description: String!
}`}
</GraphQLDoc>

## ProductVariant {#productvariant}

<GraphQLDoc
  type="type"
  typeName="ProductVariant"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    Product: '/reference/graphql-api/shop/object-types#product',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    Asset: '/reference/graphql-api/shop/object-types#asset',
    Money: '/reference/graphql-api/shop/object-types#money',
    CurrencyCode: '/reference/graphql-api/shop/enums#currencycode',
    TaxRate: '/reference/graphql-api/shop/object-types#taxrate',
    TaxCategory: '/reference/graphql-api/shop/object-types#taxcategory',
    ProductOption: '/reference/graphql-api/shop/object-types#productoption',
    FacetValue: '/reference/graphql-api/shop/object-types#facetvalue',
    ProductVariantTranslation: '/reference/graphql-api/shop/object-types#productvarianttranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type ProductVariant {
  id: ID!
  product: Product!
  productId: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  sku: String!
  name: String!
  featuredAsset: Asset
  assets: [Asset!]!
  price: Money!
  currencyCode: CurrencyCode!
  priceWithTax: Money!
  stockLevel: String!
  taxRateApplied: TaxRate!
  taxCategory: TaxCategory!
  options: [ProductOption!]!
  facetValues: [FacetValue!]!
  translations: [ProductVariantTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## ProductVariantList {#productvariantlist}

<GraphQLDoc
  type="type"
  typeName="ProductVariantList"
  typeLinks={{
    ProductVariant: '/reference/graphql-api/shop/object-types#productvariant',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type ProductVariantList {
  items: [ProductVariant!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## ProductVariantTranslation {#productvarianttranslation}

<GraphQLDoc
  type="type"
  typeName="ProductVariantTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type ProductVariantTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
}`}
</GraphQLDoc>

## Promotion {#promotion}

<GraphQLDoc
  type="type"
  typeName="Promotion"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Int: '/reference/graphql-api/shop/object-types#int',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    ConfigurableOperation: '/reference/graphql-api/shop/object-types#configurableoperation',
    PromotionTranslation: '/reference/graphql-api/shop/object-types#promotiontranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Promotion {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  startsAt: DateTime
  endsAt: DateTime
  couponCode: String
  perCustomerUsageLimit: Int
  usageLimit: Int
  name: String!
  description: String!
  enabled: Boolean!
  conditions: [ConfigurableOperation!]!
  actions: [ConfigurableOperation!]!
  translations: [PromotionTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## PromotionList {#promotionlist}

<GraphQLDoc
  type="type"
  typeName="PromotionList"
  typeLinks={{
    Promotion: '/reference/graphql-api/shop/object-types#promotion',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type PromotionList {
  items: [Promotion!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## PromotionTranslation {#promotiontranslation}

<GraphQLDoc
  type="type"
  typeName="PromotionTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type PromotionTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
  description: String!
}`}
</GraphQLDoc>

## Province {#province}

<GraphQLDoc
  type="type"
  typeName="Province"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Region: '/reference/graphql-api/shop/object-types#region',
    RegionTranslation: '/reference/graphql-api/shop/object-types#regiontranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Province {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  code: String!
  type: String!
  name: String!
  enabled: Boolean!
  parent: Region
  parentId: ID
  translations: [RegionTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## ProvinceList {#provincelist}

<GraphQLDoc
  type="type"
  typeName="ProvinceList"
  typeLinks={{
    Province: '/reference/graphql-api/shop/object-types#province',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type ProvinceList {
  items: [Province!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## PublicPaymentMethod {#publicpaymentmethod}

<GraphQLDoc
  type="type"
  typeName="PublicPaymentMethod"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    String: '/reference/graphql-api/shop/object-types#string',
    PaymentMethodTranslation: '/reference/graphql-api/shop/object-types#paymentmethodtranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type PublicPaymentMethod {
  id: ID!
  code: String!
  name: String!
  description: String
  translations: [PaymentMethodTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## PublicShippingMethod {#publicshippingmethod}

<GraphQLDoc
  type="type"
  typeName="PublicShippingMethod"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    String: '/reference/graphql-api/shop/object-types#string',
    ShippingMethodTranslation: '/reference/graphql-api/shop/object-types#shippingmethodtranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type PublicShippingMethod {
  id: ID!
  code: String!
  name: String!
  description: String
  translations: [ShippingMethodTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## RefreshCustomerVerificationResult {#refreshcustomerverificationresult}

<GraphQLDoc
  type="union"
  typeName="RefreshCustomerVerificationResult"
  typeLinks={{
    Success: '/reference/graphql-api/shop/object-types#success',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
  }}
>
{`union RefreshCustomerVerificationResult = Success | NativeAuthStrategyError`}
</GraphQLDoc>

## Refund {#refund}

<GraphQLDoc
  type="type"
  typeName="Refund"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    Money: '/reference/graphql-api/shop/object-types#money',
    String: '/reference/graphql-api/shop/object-types#string',
    RefundLine: '/reference/graphql-api/shop/object-types#refundline',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Refund {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  items: Money!
  shipping: Money!
  adjustment: Money!
  total: Money!
  method: String
  state: String!
  transactionId: String
  reason: String
  lines: [RefundLine!]!
  paymentId: ID!
  metadata: JSON
  customFields: JSON
}`}
</GraphQLDoc>

## RefundLine {#refundline}

<GraphQLDoc
  type="type"
  typeName="RefundLine"
  typeLinks={{
    OrderLine: '/reference/graphql-api/shop/object-types#orderline',
    ID: '/reference/graphql-api/shop/object-types#id',
    Int: '/reference/graphql-api/shop/object-types#int',
    Refund: '/reference/graphql-api/shop/object-types#refund',
  }}
>
{`type RefundLine {
  orderLine: OrderLine!
  orderLineId: ID!
  quantity: Int!
  refund: Refund!
  refundId: ID!
}`}
</GraphQLDoc>

## RegionTranslation {#regiontranslation}

<GraphQLDoc
  type="type"
  typeName="RegionTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type RegionTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
}`}
</GraphQLDoc>

## RegisterCustomerAccountResult {#registercustomeraccountresult}

<GraphQLDoc
  type="union"
  typeName="RegisterCustomerAccountResult"
  typeLinks={{
    Success: '/reference/graphql-api/shop/object-types#success',
    MissingPasswordError: '/reference/graphql-api/shop/object-types#missingpassworderror',
    PasswordValidationError: '/reference/graphql-api/shop/object-types#passwordvalidationerror',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
  }}
>
{`union RegisterCustomerAccountResult = Success | MissingPasswordError | PasswordValidationError | NativeAuthStrategyError`}
</GraphQLDoc>

## RelationCustomFieldConfig {#relationcustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="RelationCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type RelationCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  entity: String!
  scalarFields: [String!]!
  ui: JSON
}`}
</GraphQLDoc>

## RemoveOrderItemsResult {#removeorderitemsresult}

<GraphQLDoc
  type="union"
  typeName="RemoveOrderItemsResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    OrderModificationError: '/reference/graphql-api/shop/object-types#ordermodificationerror',
    OrderInterceptorError: '/reference/graphql-api/shop/object-types#orderinterceptorerror',
  }}
>
{`union RemoveOrderItemsResult = Order | OrderModificationError | OrderInterceptorError`}
</GraphQLDoc>

## RequestPasswordResetResult {#requestpasswordresetresult}

<GraphQLDoc
  type="union"
  typeName="RequestPasswordResetResult"
  typeLinks={{
    Success: '/reference/graphql-api/shop/object-types#success',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
  }}
>
{`union RequestPasswordResetResult = Success | NativeAuthStrategyError`}
</GraphQLDoc>

## RequestUpdateCustomerEmailAddressResult {#requestupdatecustomeremailaddressresult}

<GraphQLDoc
  type="union"
  typeName="RequestUpdateCustomerEmailAddressResult"
  typeLinks={{
    Success: '/reference/graphql-api/shop/object-types#success',
    InvalidCredentialsError: '/reference/graphql-api/shop/object-types#invalidcredentialserror',
    EmailAddressConflictError: '/reference/graphql-api/shop/object-types#emailaddressconflicterror',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
  }}
>
{`union RequestUpdateCustomerEmailAddressResult = Success | InvalidCredentialsError | EmailAddressConflictError | NativeAuthStrategyError`}
</GraphQLDoc>

## ResetPasswordResult {#resetpasswordresult}

<GraphQLDoc
  type="union"
  typeName="ResetPasswordResult"
  typeLinks={{
    CurrentUser: '/reference/graphql-api/shop/object-types#currentuser',
    PasswordResetTokenInvalidError: '/reference/graphql-api/shop/object-types#passwordresettokeninvaliderror',
    PasswordResetTokenExpiredError: '/reference/graphql-api/shop/object-types#passwordresettokenexpirederror',
    PasswordValidationError: '/reference/graphql-api/shop/object-types#passwordvalidationerror',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
    NotVerifiedError: '/reference/graphql-api/shop/object-types#notverifiederror',
  }}
>
{`union ResetPasswordResult = CurrentUser | PasswordResetTokenInvalidError | PasswordResetTokenExpiredError | PasswordValidationError | NativeAuthStrategyError | NotVerifiedError`}
</GraphQLDoc>

## Role {#role}

<GraphQLDoc
  type="type"
  typeName="Role"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Permission: '/reference/graphql-api/shop/enums#permission',
    Channel: '/reference/graphql-api/shop/object-types#channel',
  }}
>
{`type Role {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  code: String!
  description: String!
  permissions: [Permission!]!
  channels: [Channel!]!
}`}
</GraphQLDoc>

## RoleList {#rolelist}

<GraphQLDoc
  type="type"
  typeName="RoleList"
  typeLinks={{
    Role: '/reference/graphql-api/shop/object-types#role',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type RoleList {
  items: [Role!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## SearchReindexResponse {#searchreindexresponse}

<GraphQLDoc
  type="type"
  typeName="SearchReindexResponse"
  typeLinks={{
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
  }}
>
{`type SearchReindexResponse {
  success: Boolean!
}`}
</GraphQLDoc>

## SearchResponse {#searchresponse}

<GraphQLDoc
  type="type"
  typeName="SearchResponse"
  typeLinks={{
    SearchResult: '/reference/graphql-api/shop/object-types#searchresult',
    Int: '/reference/graphql-api/shop/object-types#int',
    FacetValueResult: '/reference/graphql-api/shop/object-types#facetvalueresult',
    CollectionResult: '/reference/graphql-api/shop/object-types#collectionresult',
  }}
>
{`type SearchResponse {
  items: [SearchResult!]!
  totalItems: Int!
  facetValues: [FacetValueResult!]!
  collections: [CollectionResult!]!
}`}
</GraphQLDoc>

## SearchResult {#searchresult}

<GraphQLDoc
  type="type"
  typeName="SearchResult"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    ID: '/reference/graphql-api/shop/object-types#id',
    SearchResultAsset: '/reference/graphql-api/shop/object-types#searchresultasset',
    SearchResultPrice: '/reference/graphql-api/shop/object-types#searchresultprice',
    CurrencyCode: '/reference/graphql-api/shop/enums#currencycode',
    Float: '/reference/graphql-api/shop/object-types#float',
  }}
>
{`type SearchResult {
  sku: String!
  slug: String!
  productId: ID!
  productName: String!
  productAsset: SearchResultAsset
  productVariantId: ID!
  productVariantName: String!
  productVariantAsset: SearchResultAsset
  price: SearchResultPrice!
  priceWithTax: SearchResultPrice!
  currencyCode: CurrencyCode!
  description: String!
  facetIds: [ID!]!
  facetValueIds: [ID!]!
  """An array of ids of the Collections in which this result appears"""
  collectionIds: [ID!]!
  """A relevance score for the result. Differs between database implementations"""
  score: Float!
}`}
</GraphQLDoc>

## SearchResultAsset {#searchresultasset}

<GraphQLDoc
  type="type"
  typeName="SearchResultAsset"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    String: '/reference/graphql-api/shop/object-types#string',
    Coordinate: '/reference/graphql-api/shop/object-types#coordinate',
  }}
>
{`type SearchResultAsset {
  id: ID!
  preview: String!
  focalPoint: Coordinate
}`}
</GraphQLDoc>

## SearchResultPrice {#searchresultprice}

<GraphQLDoc
  type="union"
  typeName="SearchResultPrice"
  typeLinks={{
    PriceRange: '/reference/graphql-api/shop/object-types#pricerange',
    SinglePrice: '/reference/graphql-api/shop/object-types#singleprice',
  }}
>
{`"""The price of a search result product, either as a range or as a single price"""
union SearchResultPrice = PriceRange | SinglePrice`}
</GraphQLDoc>

## Seller {#seller}

<GraphQLDoc
  type="type"
  typeName="Seller"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Seller {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  customFields: JSON
}`}
</GraphQLDoc>

## SetCustomerForOrderResult {#setcustomerfororderresult}

<GraphQLDoc
  type="union"
  typeName="SetCustomerForOrderResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    AlreadyLoggedInError: '/reference/graphql-api/shop/object-types#alreadyloggedinerror',
    EmailAddressConflictError: '/reference/graphql-api/shop/object-types#emailaddressconflicterror',
    NoActiveOrderError: '/reference/graphql-api/shop/object-types#noactiveordererror',
    GuestCheckoutError: '/reference/graphql-api/shop/object-types#guestcheckouterror',
  }}
>
{`union SetCustomerForOrderResult = Order | AlreadyLoggedInError | EmailAddressConflictError | NoActiveOrderError | GuestCheckoutError`}
</GraphQLDoc>

## SetOrderShippingMethodResult {#setordershippingmethodresult}

<GraphQLDoc
  type="union"
  typeName="SetOrderShippingMethodResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    OrderModificationError: '/reference/graphql-api/shop/object-types#ordermodificationerror',
    IneligibleShippingMethodError: '/reference/graphql-api/shop/object-types#ineligibleshippingmethoderror',
    NoActiveOrderError: '/reference/graphql-api/shop/object-types#noactiveordererror',
  }}
>
{`union SetOrderShippingMethodResult = Order | OrderModificationError | IneligibleShippingMethodError | NoActiveOrderError`}
</GraphQLDoc>

## ShippingLine {#shippingline}

<GraphQLDoc
  type="type"
  typeName="ShippingLine"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    ShippingMethod: '/reference/graphql-api/shop/object-types#shippingmethod',
    Money: '/reference/graphql-api/shop/object-types#money',
    Discount: '/reference/graphql-api/shop/object-types#discount',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type ShippingLine {
  id: ID!
  shippingMethod: ShippingMethod!
  price: Money!
  priceWithTax: Money!
  discountedPrice: Money!
  discountedPriceWithTax: Money!
  discounts: [Discount!]!
  customFields: JSON
}`}
</GraphQLDoc>

## ShippingMethod {#shippingmethod}

<GraphQLDoc
  type="type"
  typeName="ShippingMethod"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
    ConfigurableOperation: '/reference/graphql-api/shop/object-types#configurableoperation',
    ShippingMethodTranslation: '/reference/graphql-api/shop/object-types#shippingmethodtranslation',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type ShippingMethod {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  code: String!
  name: String!
  description: String!
  fulfillmentHandlerCode: String!
  checker: ConfigurableOperation!
  calculator: ConfigurableOperation!
  translations: [ShippingMethodTranslation!]!
  customFields: JSON
}`}
</GraphQLDoc>

## ShippingMethodList {#shippingmethodlist}

<GraphQLDoc
  type="type"
  typeName="ShippingMethodList"
  typeLinks={{
    ShippingMethod: '/reference/graphql-api/shop/object-types#shippingmethod',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type ShippingMethodList {
  items: [ShippingMethod!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## ShippingMethodQuote {#shippingmethodquote}

<GraphQLDoc
  type="type"
  typeName="ShippingMethodQuote"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    Money: '/reference/graphql-api/shop/object-types#money',
    String: '/reference/graphql-api/shop/object-types#string',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type ShippingMethodQuote {
  id: ID!
  price: Money!
  priceWithTax: Money!
  code: String!
  name: String!
  description: String!
  """Any optional metadata returned by the ShippingCalculator in the ShippingCalculationResult"""
  metadata: JSON
  customFields: JSON
}`}
</GraphQLDoc>

## ShippingMethodTranslation {#shippingmethodtranslation}

<GraphQLDoc
  type="type"
  typeName="ShippingMethodTranslation"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    LanguageCode: '/reference/graphql-api/shop/enums#languagecode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type ShippingMethodTranslation {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  languageCode: LanguageCode!
  name: String!
  description: String!
}`}
</GraphQLDoc>

## SinglePrice {#singleprice}

<GraphQLDoc
  type="type"
  typeName="SinglePrice"
  typeLinks={{
    Money: '/reference/graphql-api/shop/object-types#money',
  }}
>
{`"""The price value where the result has a single price"""
type SinglePrice {
  value: Money!
}`}
</GraphQLDoc>

## String {#string}

<GraphQLDoc
  type="scalar"
  typeName="String"
  typeLinks={{}}
>
{`"""The \`String\` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text."""
scalar String`}
</GraphQLDoc>

## StringCustomFieldConfig {#stringcustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="StringCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Int: '/reference/graphql-api/shop/object-types#int',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    StringFieldOption: '/reference/graphql-api/shop/object-types#stringfieldoption',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type StringCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  length: Int
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  pattern: String
  options: [StringFieldOption!]
  ui: JSON
}`}
</GraphQLDoc>

## StringFieldOption {#stringfieldoption}

<GraphQLDoc
  type="type"
  typeName="StringFieldOption"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
  }}
>
{`type StringFieldOption {
  value: String!
  label: [LocalizedString!]
}`}
</GraphQLDoc>

## StringStructFieldConfig {#stringstructfieldconfig}

<GraphQLDoc
  type="type"
  typeName="StringStructFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Int: '/reference/graphql-api/shop/object-types#int',
    StringFieldOption: '/reference/graphql-api/shop/object-types#stringfieldoption',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type StringStructFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  length: Int
  pattern: String
  options: [StringFieldOption!]
  ui: JSON
}`}
</GraphQLDoc>

## StructCustomFieldConfig {#structcustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="StructCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    StructFieldConfig: '/reference/graphql-api/shop/object-types#structfieldconfig',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type StructCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  fields: [StructFieldConfig!]!
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  ui: JSON
}`}
</GraphQLDoc>

## StructFieldConfig {#structfieldconfig}

<GraphQLDoc
  type="union"
  typeName="StructFieldConfig"
  typeLinks={{
    StringStructFieldConfig: '/reference/graphql-api/shop/object-types#stringstructfieldconfig',
    IntStructFieldConfig: '/reference/graphql-api/shop/object-types#intstructfieldconfig',
    FloatStructFieldConfig: '/reference/graphql-api/shop/object-types#floatstructfieldconfig',
    BooleanStructFieldConfig: '/reference/graphql-api/shop/object-types#booleanstructfieldconfig',
    DateTimeStructFieldConfig: '/reference/graphql-api/shop/object-types#datetimestructfieldconfig',
    TextStructFieldConfig: '/reference/graphql-api/shop/object-types#textstructfieldconfig',
  }}
>
{`union StructFieldConfig = StringStructFieldConfig | IntStructFieldConfig | FloatStructFieldConfig | BooleanStructFieldConfig | DateTimeStructFieldConfig | TextStructFieldConfig`}
</GraphQLDoc>

## Success {#success}

<GraphQLDoc
  type="type"
  typeName="Success"
  typeLinks={{
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
  }}
>
{`"""Indicates that an operation succeeded, where we do not want to return any more specific information."""
type Success {
  success: Boolean!
}`}
</GraphQLDoc>

## Surcharge {#surcharge}

<GraphQLDoc
  type="type"
  typeName="Surcharge"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    TaxLine: '/reference/graphql-api/shop/object-types#taxline',
    Money: '/reference/graphql-api/shop/object-types#money',
    Float: '/reference/graphql-api/shop/object-types#float',
  }}
>
{`type Surcharge {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  description: String!
  sku: String
  taxLines: [TaxLine!]!
  price: Money!
  priceWithTax: Money!
  taxRate: Float!
}`}
</GraphQLDoc>

## Tag {#tag}

<GraphQLDoc
  type="type"
  typeName="Tag"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`type Tag {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  value: String!
}`}
</GraphQLDoc>

## TagList {#taglist}

<GraphQLDoc
  type="type"
  typeName="TagList"
  typeLinks={{
    Tag: '/reference/graphql-api/shop/object-types#tag',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type TagList {
  items: [Tag!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## TaxCategory {#taxcategory}

<GraphQLDoc
  type="type"
  typeName="TaxCategory"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type TaxCategory {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  isDefault: Boolean!
  customFields: JSON
}`}
</GraphQLDoc>

## TaxLine {#taxline}

<GraphQLDoc
  type="type"
  typeName="TaxLine"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Float: '/reference/graphql-api/shop/object-types#float',
  }}
>
{`type TaxLine {
  description: String!
  taxRate: Float!
}`}
</GraphQLDoc>

## TaxRate {#taxrate}

<GraphQLDoc
  type="type"
  typeName="TaxRate"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Float: '/reference/graphql-api/shop/object-types#float',
    TaxCategory: '/reference/graphql-api/shop/object-types#taxcategory',
    Zone: '/reference/graphql-api/shop/object-types#zone',
    CustomerGroup: '/reference/graphql-api/shop/object-types#customergroup',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type TaxRate {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  enabled: Boolean!
  value: Float!
  category: TaxCategory!
  zone: Zone!
  customerGroup: CustomerGroup
  customFields: JSON
}`}
</GraphQLDoc>

## TaxRateList {#taxratelist}

<GraphQLDoc
  type="type"
  typeName="TaxRateList"
  typeLinks={{
    TaxRate: '/reference/graphql-api/shop/object-types#taxrate',
    Int: '/reference/graphql-api/shop/object-types#int',
  }}
>
{`type TaxRateList {
  items: [TaxRate!]!
  totalItems: Int!
}`}
</GraphQLDoc>

## TextCustomFieldConfig {#textcustomfieldconfig}

<GraphQLDoc
  type="type"
  typeName="TextCustomFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    Permission: '/reference/graphql-api/shop/enums#permission',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type TextCustomFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  readonly: Boolean
  internal: Boolean
  nullable: Boolean
  requiresPermission: [Permission!]
  deprecated: Boolean
  deprecationReason: String
  ui: JSON
}`}
</GraphQLDoc>

## TextStructFieldConfig {#textstructfieldconfig}

<GraphQLDoc
  type="type"
  typeName="TextStructFieldConfig"
  typeLinks={{
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    LocalizedString: '/reference/graphql-api/shop/object-types#localizedstring',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type TextStructFieldConfig {
  name: String!
  type: String!
  list: Boolean!
  label: [LocalizedString!]
  description: [LocalizedString!]
  ui: JSON
}`}
</GraphQLDoc>

## TransitionOrderToStateResult {#transitionordertostateresult}

<GraphQLDoc
  type="union"
  typeName="TransitionOrderToStateResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    OrderStateTransitionError: '/reference/graphql-api/shop/object-types#orderstatetransitionerror',
  }}
>
{`union TransitionOrderToStateResult = Order | OrderStateTransitionError`}
</GraphQLDoc>

## UpdateCustomerEmailAddressResult {#updatecustomeremailaddressresult}

<GraphQLDoc
  type="union"
  typeName="UpdateCustomerEmailAddressResult"
  typeLinks={{
    Success: '/reference/graphql-api/shop/object-types#success',
    IdentifierChangeTokenInvalidError: '/reference/graphql-api/shop/object-types#identifierchangetokeninvaliderror',
    IdentifierChangeTokenExpiredError: '/reference/graphql-api/shop/object-types#identifierchangetokenexpirederror',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
  }}
>
{`union UpdateCustomerEmailAddressResult = Success | IdentifierChangeTokenInvalidError | IdentifierChangeTokenExpiredError | NativeAuthStrategyError`}
</GraphQLDoc>

## UpdateCustomerPasswordResult {#updatecustomerpasswordresult}

<GraphQLDoc
  type="union"
  typeName="UpdateCustomerPasswordResult"
  typeLinks={{
    Success: '/reference/graphql-api/shop/object-types#success',
    InvalidCredentialsError: '/reference/graphql-api/shop/object-types#invalidcredentialserror',
    PasswordValidationError: '/reference/graphql-api/shop/object-types#passwordvalidationerror',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
  }}
>
{`union UpdateCustomerPasswordResult = Success | InvalidCredentialsError | PasswordValidationError | NativeAuthStrategyError`}
</GraphQLDoc>

## UpdateMultipleOrderItemsResult {#updatemultipleorderitemsresult}

<GraphQLDoc
  type="type"
  typeName="UpdateMultipleOrderItemsResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    UpdateOrderItemErrorResult: '/reference/graphql-api/shop/object-types#updateorderitemerrorresult',
  }}
>
{`"""
Returned when multiple items are added to an Order.
The errorResults array contains the errors that occurred for each item, if any.
"""
type UpdateMultipleOrderItemsResult {
  order: Order!
  errorResults: [UpdateOrderItemErrorResult!]!
}`}
</GraphQLDoc>

## UpdateOrderItemErrorResult {#updateorderitemerrorresult}

<GraphQLDoc
  type="union"
  typeName="UpdateOrderItemErrorResult"
  typeLinks={{
    OrderModificationError: '/reference/graphql-api/shop/object-types#ordermodificationerror',
    OrderLimitError: '/reference/graphql-api/shop/object-types#orderlimiterror',
    NegativeQuantityError: '/reference/graphql-api/shop/object-types#negativequantityerror',
    InsufficientStockError: '/reference/graphql-api/shop/object-types#insufficientstockerror',
    OrderInterceptorError: '/reference/graphql-api/shop/object-types#orderinterceptorerror',
  }}
>
{`"""Union type of all possible errors that can occur when adding or removing items from an Order."""
union UpdateOrderItemErrorResult = OrderModificationError | OrderLimitError | NegativeQuantityError | InsufficientStockError | OrderInterceptorError`}
</GraphQLDoc>

## UpdateOrderItemsResult {#updateorderitemsresult}

<GraphQLDoc
  type="union"
  typeName="UpdateOrderItemsResult"
  typeLinks={{
    Order: '/reference/graphql-api/shop/object-types#order',
    OrderModificationError: '/reference/graphql-api/shop/object-types#ordermodificationerror',
    OrderLimitError: '/reference/graphql-api/shop/object-types#orderlimiterror',
    NegativeQuantityError: '/reference/graphql-api/shop/object-types#negativequantityerror',
    InsufficientStockError: '/reference/graphql-api/shop/object-types#insufficientstockerror',
    OrderInterceptorError: '/reference/graphql-api/shop/object-types#orderinterceptorerror',
  }}
>
{`union UpdateOrderItemsResult = Order | OrderModificationError | OrderLimitError | NegativeQuantityError | InsufficientStockError | OrderInterceptorError`}
</GraphQLDoc>

## Upload {#upload}

<GraphQLDoc
  type="scalar"
  typeName="Upload"
  typeLinks={{}}
>
{`"""The \`Upload\` scalar type represents a file upload."""
scalar Upload`}
</GraphQLDoc>

## User {#user}

<GraphQLDoc
  type="type"
  typeName="User"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Boolean: '/reference/graphql-api/shop/object-types#boolean',
    Role: '/reference/graphql-api/shop/object-types#role',
    AuthenticationMethod: '/reference/graphql-api/shop/object-types#authenticationmethod',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type User {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  identifier: String!
  verified: Boolean!
  roles: [Role!]!
  lastLogin: DateTime
  authenticationMethods: [AuthenticationMethod!]!
  customFields: JSON
}`}
</GraphQLDoc>

## VerificationTokenExpiredError {#verificationtokenexpirederror}

<GraphQLDoc
  type="type"
  typeName="VerificationTokenExpiredError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""
Returned if the verification token (used to verify a Customer's email address) is valid, but has
expired according to the \`verificationTokenDuration\` setting in the AuthOptions.
"""
type VerificationTokenExpiredError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## VerificationTokenInvalidError {#verificationtokeninvaliderror}

<GraphQLDoc
  type="type"
  typeName="VerificationTokenInvalidError"
  typeLinks={{
    ErrorCode: '/reference/graphql-api/shop/enums#errorcode',
    String: '/reference/graphql-api/shop/object-types#string',
  }}
>
{`"""
Returned if the verification token (used to verify a Customer's email address) is either
invalid or does not match any expected tokens.
"""
type VerificationTokenInvalidError {
  errorCode: ErrorCode!
  message: String!
}`}
</GraphQLDoc>

## VerifyCustomerAccountResult {#verifycustomeraccountresult}

<GraphQLDoc
  type="union"
  typeName="VerifyCustomerAccountResult"
  typeLinks={{
    CurrentUser: '/reference/graphql-api/shop/object-types#currentuser',
    VerificationTokenInvalidError: '/reference/graphql-api/shop/object-types#verificationtokeninvaliderror',
    VerificationTokenExpiredError: '/reference/graphql-api/shop/object-types#verificationtokenexpirederror',
    MissingPasswordError: '/reference/graphql-api/shop/object-types#missingpassworderror',
    PasswordValidationError: '/reference/graphql-api/shop/object-types#passwordvalidationerror',
    PasswordAlreadySetError: '/reference/graphql-api/shop/object-types#passwordalreadyseterror',
    NativeAuthStrategyError: '/reference/graphql-api/shop/object-types#nativeauthstrategyerror',
  }}
>
{`union VerifyCustomerAccountResult = CurrentUser | VerificationTokenInvalidError | VerificationTokenExpiredError | MissingPasswordError | PasswordValidationError | PasswordAlreadySetError | NativeAuthStrategyError`}
</GraphQLDoc>

## Zone {#zone}

<GraphQLDoc
  type="type"
  typeName="Zone"
  typeLinks={{
    ID: '/reference/graphql-api/shop/object-types#id',
    DateTime: '/reference/graphql-api/shop/object-types#datetime',
    String: '/reference/graphql-api/shop/object-types#string',
    Region: '/reference/graphql-api/shop/object-types#region',
    JSON: '/reference/graphql-api/shop/object-types#json',
  }}
>
{`type Zone {
  id: ID!
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  members: [Region!]!
  customFields: JSON
}`}
</GraphQLDoc>
