schema {
  query: Input
  mutation: MutationRoot
}

"""
Scale the Functions resource limits based on the field's length.
"""
directive @scaleLimits(rate: Float!) on FIELD_DEFINITION

"""
Requires that exactly one field must be supplied and that field must not be `null`.
"""
directive @oneOf on INPUT_OBJECT

"""
A custom property. Attributes are used to store additional information about a Shopify resource, such as
products, customers, or orders. Attributes are stored as key-value pairs.

For example, a list of attributes might include whether a customer is a first-time buyer (`"customer_first_order": "true"`),
whether an order is gift-wrapped (`"gift_wrapped": "true"`), a preferred delivery date
(`"preferred_delivery_date": "2025-10-01"`), the discount applied (`"loyalty_discount_applied": "10%"`), and any
notes provided by the customer (`"customer_notes": "Please leave at the front door"`).
"""
type Attribute {
  """
  The key or name of the attribute. For example, `"customer_first_order"`.
  """
  key: String!

  """
  The value of the attribute. For example, `"true"`.
  """
  value: String
}

"""
Information about the customer that's interacting with the cart. It includes details such as the
customer's email and phone number, and the total amount of money the customer has spent in the store.
This information helps personalize the checkout experience and ensures that accurate pricing and delivery options
are displayed to customers.
"""
type BuyerIdentity {
  """
  The [customer](https://help.shopify.com/manual/customers/manage-customers) that's interacting with the cart.
  """
  customer: Customer

  """
  The email address of the customer that's interacting with the cart.
  """
  email: String

  """
  Whether the customer is authenticated through their
  [customer account](https://help.shopify.com/manual/customers/customer-accounts).
  """
  isAuthenticated: Boolean!

  """
  The phone number of the customer that's interacting with the cart.
  """
  phone: String

  """
  The company of a B2B customer that's interacting with the cart.
  Used to manage and track purchases made by businesses rather than individual customers.
  """
  purchasingCompany: PurchasingCompany
}

"""
The cart where the Function is running. A cart contains the merchandise that a customer intends to purchase
and information about the customer, such as the customer's email address and phone number.
"""
type Cart implements HasMetafields {
  """
  The custom attributes associated with a cart to store additional information. Cart attributes
  allow you to collect specific information from customers on the **Cart** page, such as order notes,
  gift wrapping requests, or custom product details. Attributes are stored as key-value pairs.
  """
  attribute(
    """
    The key of the cart attribute to retrieve. For example, `"gift_wrapping"`.
    """
    key: String
  ): Attribute

  """
  Information about the customer that's interacting with the cart. It includes details such as the
  customer's email and phone number, and the total amount of money the customer has spent in the store.
  This information helps personalize the checkout experience and ensures that accurate pricing and delivery options
  are displayed to customers.
  """
  buyerIdentity: BuyerIdentity

  """
  A breakdown of the costs that the customer will pay at checkout. It includes the total amount,
  the subtotal before taxes and duties, the tax amount, and duty charges.
  """
  cost: CartCost!

  """
  The items in a cart that are eligible for fulfillment and can be delivered to the customer.
  """
  deliverableLines: [DeliverableCartLine!]!

  """
  A collection of items that are grouped by shared delivery characteristics. Delivery groups streamline
  fulfillment by organizing items that can be shipped together, based on the customer's
  shipping address. For example, if a customer orders a t-shirt and a pair of shoes that can be shipped
  together, then the items are included in the same delivery group.

  In the [Order Discount](https://shopify.dev/docs/api/functions/reference/order-discounts) and
  [Product Discount](https://shopify.dev/docs/api/functions/reference/product-discounts) legacy APIs,
  the `cart.deliveryGroups` input is always an empty array. This means you can't access delivery groups when
  creating Order Discount or Product Discount Functions. If you need to apply discounts to shipping costs,
  then use the [Discount Function API](https://shopify.dev/docs/api/functions/reference/discount)
  instead.
  """
  deliveryGroups: [CartDeliveryGroup!]!

  """
  The items in a cart that the customer intends to purchase. A cart line is an entry in the
  customer's cart that represents a single unit of a product variant. For example, if a customer adds two
  different sizes of the same t-shirt to their cart, then each size is represented as a separate cart line.
  """
  lines: [CartLine!]! @scaleLimits(rate: 0.005)

  """
  The additional fields on the **Cart** page that are required for international orders in specific countries,
  such as customs information or tax identification numbers.
  """
  localizedFields(
    """
    The keys of the localized fields to retrieve.
    """
    keys: [LocalizedFieldKey!]! = []
  ): [LocalizedField!]!

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  The physical location where a retail order is created or completed.
  """
  retailLocation: Location
}

"""
A breakdown of the costs that the customer will pay at checkout. It includes the total amount,
the subtotal before taxes and duties, the tax amount, and duty charges.
"""
type CartCost {
  """
  The amount, before taxes and cart-level discounts, for the customer to pay.
  """
  subtotalAmount: MoneyV2!

  """
  The total amount for the customer to pay at checkout.
  """
  totalAmount: MoneyV2!

  """
  The duty charges for a customer to pay at checkout.
  """
  totalDutyAmount: MoneyV2

  """
  The total tax amount for the customer to pay at checkout.
  """
  totalTaxAmount: MoneyV2
}

"""
Information about items in a cart that are grouped by shared delivery characteristics.
Delivery groups streamline fulfillment by organizing items that can be shipped together, based on the customer's
shipping address. For example, if a customer orders a t-shirt and a pair of shoes that can be shipped
together, then the items are included in the same delivery group.
"""
type CartDeliveryGroup {
  """
  Information about items in a cart that a customer intends to purchase. A cart line is an entry in the
  customer's cart that represents a single unit of a product variant. For example, if a customer adds two
  different sizes of the same t-shirt to their cart, then each size is represented as a separate cart line.
  """
  cartLines: [CartLine!]! @scaleLimits(rate: 0.005)

  """
  The shipping or destination address associated with the delivery group.
  """
  deliveryAddress: MailingAddress

  """
  The delivery options available for the delivery group. Delivery options are the different ways that customers
  can choose to have their orders shipped. Examples include express shipping or standard shipping.
  """
  deliveryOptions: [CartDeliveryOption!]!

  """
  The type of merchandise in the delivery group.
  """
  groupType: CartDeliveryGroupType!

  """
  A [globally-unique ID](https://shopify.dev/docs/api/usage/gids)
  for the delivery group.
  """
  id: ID!

  """
  Information about the delivery option that the customer has selected.
  """
  selectedDeliveryOption: CartDeliveryOption
}

"""
Defines what type of merchandise is in the delivery group.
"""
enum CartDeliveryGroupType {
  """
  The delivery group only contains merchandise that is either a one time purchase or a first delivery of
  subscription merchandise.
  """
  ONE_TIME_PURCHASE

  """
  The delivery group only contains subscription merchandise.
  """
  SUBSCRIPTION
}

"""
Information about a delivery option that's available for an item in a cart. Delivery options are the different
ways that customers can choose to have their orders shipped. Examples include express shipping or standard
shipping.
"""
type CartDeliveryOption {
  """
  A unique identifier that represents the delivery option offered to customers.
  For example, `Canada Post Expedited`.
  """
  code: String

  """
  The amount that the customer pays if they select the delivery option.
  """
  cost: MoneyV2!

  """
  The delivery method associated with the delivery option. A delivery method is a way that merchants can
  fulfill orders from their online stores. Delivery methods include shipping to an address,
  [local pickup](https://help.shopify.com/manual/fulfillment/setup/delivery-methods/pickup-in-store),
  and shipping to a [pickup point](https://help.shopify.com/manual/fulfillment/shopify-shipping/pickup-points),
  all of which are natively supported by Shopify checkout.
  """
  deliveryMethodType: DeliveryMethod!

  """
  A single-line description of the delivery option, with HTML tags removed.
  """
  description: String

  """
  A unique, human-readable identifier of the delivery option's title.
  A handle can contain letters, hyphens (`-`), and numbers, but not spaces.
  For example, `standard-shipping`.
  """
  handle: Handle!

  """
  The name of the delivery option that displays to customers. The title is used to construct the delivery
  option's handle. For example, if a delivery option is titled "Standard Shipping", then the handle is
  `standard-shipping`.
  """
  title: String
}

"""
Information about an item in a cart that a customer intends to purchase. A cart line is an entry in the
customer's cart that represents a single unit of a product variant. For example, if a customer adds two
different sizes of the same t-shirt to their cart, then each size is represented as a separate cart line.
"""
type CartLine {
  """
  The custom attributes associated with a cart to store additional information. Cart attributes
  allow you to collect specific information from customers on the **Cart** page, such as order notes,
  gift wrapping requests, or custom product details. Attributes are stored as key-value pairs.

  Cart line attributes are equivalent to the
  [`line_item`](https://shopify.dev/docs/api/liquid/objects/line_item)
  object in Liquid.
  """
  attribute(
    """
    The key of the cart attribute to retrieve. For example, `"gift_wrapping"`.
    """
    key: String
  ): Attribute

  """
  The cost of an item in a cart that the customer intends to purchase. Cart lines are entries in the customer's
  cart that represent a single unit of a product variant. For example, if a customer adds two different sizes of
  the same t-shirt to their cart, then each size is represented as a separate cart line.
  """
  cost: CartLineCost!

  """
  The ID of the cart line.
  """
  id: ID!

  """
  The item that the customer intends to purchase.
  """
  merchandise: Merchandise!

  """
  The [nested relationship](https://shopify.dev/docs/apps/build/product-merchandising/nested-cart-lines)
  between this line and its parent line, if any.
  """
  parentRelationship: CartLineParentRelationship

  """
  The quantity of the item that the customer intends to purchase.
  """
  quantity: Int!

  """
  The [selling plan](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/selling-plans)
  associated with the cart line, including information about how a product variant can be sold and purchased.
  """
  sellingPlanAllocation: SellingPlanAllocation
}

"""
The cost of an item in a cart that the customer intends to purchase. Cart lines are entries in the customer's
cart that represent a single unit of a product variant. For example, if a customer adds two different sizes of
the same t-shirt to their cart, then each size is represented as a separate cart line.
"""
type CartLineCost {
  """
  The cost of a single unit. For example, if a customer purchases three units of a product
  that are priced at $10 each, then the `amountPerQuantity` is $10.
  """
  amountPerQuantity: MoneyV2!

  """
  The `compareAt` price of a single unit before any discounts are applied. This field is used to calculate and display
  savings for customers. For example, if a product's `compareAtAmountPerQuantity` is $25 and its current price
  is $20, then the customer sees a $5 discount. This value can change based on the buyer's identity and is
  `null` when the value is hidden from buyers.
  """
  compareAtAmountPerQuantity: MoneyV2

  """
  The cost of items in the cart before applying any discounts to certain items.
  This amount serves as the starting point for calculating any potential savings customers
  might receive through promotions or discounts.
  """
  subtotalAmount: MoneyV2!

  """
  The total cost of items in a cart.
  """
  totalAmount: MoneyV2!
}

"""
Represents the relationship between a cart line and its parent line.
"""
type CartLineParentRelationship {
  """
  The parent line in the relationship.
  """
  parent: CartLine!
}

"""
The `CartPaymentMethodsTransformRunResult` object is the output of the Function
run target. The object contains the operations to apply to payment methods in checkout.
"""
input CartPaymentMethodsTransformRunResult {
  """
  The ordered list of operations to apply to the list of payment methods.
  """
  operations: [Operation!]!
}

"""
Whether the product is in the specified collection.

A collection is a group of products that can be displayed in online stores and other sales channels in
categories, which makes it easy for customers to find them. For example, an athletics store might create
different collections for running attire and accessories.
"""
type CollectionMembership {
  """
  A [globally-unique ID](https://shopify.dev/docs/api/usage/gids)
  for the collection.
  """
  collectionId: ID!

  """
  Whether the product is in the specified collection.
  """
  isMember: Boolean!
}

"""
Represents information about a company which is also a customer of the shop.
"""
type Company implements HasMetafields {
  """
  The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company was created in Shopify.
  """
  createdAt: DateTime!

  """
  A unique externally-supplied ID for the company.
  """
  externalId: String

  """
  The ID of the company.
  """
  id: ID!

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  The name of the company.
  """
  name: String!

  """
  The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company was last modified.
  """
  updatedAt: DateTime!
}

"""
A company's main point of contact.
"""
type CompanyContact {
  """
  The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601))
  at which the company contact was created in Shopify.
  """
  createdAt: DateTime!

  """
  The ID of the company.
  """
  id: ID!

  """
  The company contact's locale (language).
  """
  locale: String

  """
  The company contact's job title.
  """
  title: String

  """
  The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601))
  at which the company contact was last modified.
  """
  updatedAt: DateTime!
}

"""
A company's location.
"""
type CompanyLocation implements HasMetafields {
  """
  The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601))
  at which the company location was created in Shopify.
  """
  createdAt: DateTime!

  """
  A unique externally-supplied ID for the company.
  """
  externalId: String

  """
  The ID of the company.
  """
  id: ID!

  """
  The preferred locale of the company location.
  """
  locale: String

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  The name of the company location.
  """
  name: String!

  """
  The number of orders placed at this company location.
  """
  ordersCount: Int!

  """
  The total amount spent at this company location.
  """
  totalSpent: MoneyV2!

  """
  The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601))
  at which the company location was last modified.
  """
  updatedAt: DateTime!
}

"""
The country for which the store is customized, reflecting local preferences and regulations.
Localization might influence the language, currency, and product offerings available in a store to enhance
the shopping experience for customers in that region.
"""
type Country {
  """
  The ISO code of the country.
  """
  isoCode: CountryCode!
}

"""
The code designating a country/region, which generally follows ISO 3166-1 alpha-2 guidelines.
If a territory doesn't have a country code value in the `CountryCode` enum, then it might be considered a subdivision
of another country. For example, the territories associated with Spain are represented by the country code `ES`,
and the territories associated with the United States of America are represented by the country code `US`.
"""
enum CountryCode {
  """
  Ascension Island.
  """
  AC

  """
  Andorra.
  """
  AD

  """
  United Arab Emirates.
  """
  AE

  """
  Afghanistan.
  """
  AF

  """
  Antigua & Barbuda.
  """
  AG

  """
  Anguilla.
  """
  AI

  """
  Albania.
  """
  AL

  """
  Armenia.
  """
  AM

  """
  Netherlands Antilles.
  """
  AN

  """
  Angola.
  """
  AO

  """
  Argentina.
  """
  AR

  """
  Austria.
  """
  AT

  """
  Australia.
  """
  AU

  """
  Aruba.
  """
  AW

  """
  Åland Islands.
  """
  AX

  """
  Azerbaijan.
  """
  AZ

  """
  Bosnia & Herzegovina.
  """
  BA

  """
  Barbados.
  """
  BB

  """
  Bangladesh.
  """
  BD

  """
  Belgium.
  """
  BE

  """
  Burkina Faso.
  """
  BF

  """
  Bulgaria.
  """
  BG

  """
  Bahrain.
  """
  BH

  """
  Burundi.
  """
  BI

  """
  Benin.
  """
  BJ

  """
  St. Barthélemy.
  """
  BL

  """
  Bermuda.
  """
  BM

  """
  Brunei.
  """
  BN

  """
  Bolivia.
  """
  BO

  """
  Caribbean Netherlands.
  """
  BQ

  """
  Brazil.
  """
  BR

  """
  Bahamas.
  """
  BS

  """
  Bhutan.
  """
  BT

  """
  Bouvet Island.
  """
  BV

  """
  Botswana.
  """
  BW

  """
  Belarus.
  """
  BY

  """
  Belize.
  """
  BZ

  """
  Canada.
  """
  CA

  """
  Cocos (Keeling) Islands.
  """
  CC

  """
  Congo - Kinshasa.
  """
  CD

  """
  Central African Republic.
  """
  CF

  """
  Congo - Brazzaville.
  """
  CG

  """
  Switzerland.
  """
  CH

  """
  Côte d’Ivoire.
  """
  CI

  """
  Cook Islands.
  """
  CK

  """
  Chile.
  """
  CL

  """
  Cameroon.
  """
  CM

  """
  China.
  """
  CN

  """
  Colombia.
  """
  CO

  """
  Costa Rica.
  """
  CR

  """
  Cuba.
  """
  CU

  """
  Cape Verde.
  """
  CV

  """
  Curaçao.
  """
  CW

  """
  Christmas Island.
  """
  CX

  """
  Cyprus.
  """
  CY

  """
  Czechia.
  """
  CZ

  """
  Germany.
  """
  DE

  """
  Djibouti.
  """
  DJ

  """
  Denmark.
  """
  DK

  """
  Dominica.
  """
  DM

  """
  Dominican Republic.
  """
  DO

  """
  Algeria.
  """
  DZ

  """
  Ecuador.
  """
  EC

  """
  Estonia.
  """
  EE

  """
  Egypt.
  """
  EG

  """
  Western Sahara.
  """
  EH

  """
  Eritrea.
  """
  ER

  """
  Spain.
  """
  ES

  """
  Ethiopia.
  """
  ET

  """
  Finland.
  """
  FI

  """
  Fiji.
  """
  FJ

  """
  Falkland Islands.
  """
  FK

  """
  Faroe Islands.
  """
  FO

  """
  France.
  """
  FR

  """
  Gabon.
  """
  GA

  """
  United Kingdom.
  """
  GB

  """
  Grenada.
  """
  GD

  """
  Georgia.
  """
  GE

  """
  French Guiana.
  """
  GF

  """
  Guernsey.
  """
  GG

  """
  Ghana.
  """
  GH

  """
  Gibraltar.
  """
  GI

  """
  Greenland.
  """
  GL

  """
  Gambia.
  """
  GM

  """
  Guinea.
  """
  GN

  """
  Guadeloupe.
  """
  GP

  """
  Equatorial Guinea.
  """
  GQ

  """
  Greece.
  """
  GR

  """
  South Georgia & South Sandwich Islands.
  """
  GS

  """
  Guatemala.
  """
  GT

  """
  Guinea-Bissau.
  """
  GW

  """
  Guyana.
  """
  GY

  """
  Hong Kong SAR.
  """
  HK

  """
  Heard & McDonald Islands.
  """
  HM

  """
  Honduras.
  """
  HN

  """
  Croatia.
  """
  HR

  """
  Haiti.
  """
  HT

  """
  Hungary.
  """
  HU

  """
  Indonesia.
  """
  ID

  """
  Ireland.
  """
  IE

  """
  Israel.
  """
  IL

  """
  Isle of Man.
  """
  IM

  """
  India.
  """
  IN

  """
  British Indian Ocean Territory.
  """
  IO

  """
  Iraq.
  """
  IQ

  """
  Iran.
  """
  IR

  """
  Iceland.
  """
  IS

  """
  Italy.
  """
  IT

  """
  Jersey.
  """
  JE

  """
  Jamaica.
  """
  JM

  """
  Jordan.
  """
  JO

  """
  Japan.
  """
  JP

  """
  Kenya.
  """
  KE

  """
  Kyrgyzstan.
  """
  KG

  """
  Cambodia.
  """
  KH

  """
  Kiribati.
  """
  KI

  """
  Comoros.
  """
  KM

  """
  St. Kitts & Nevis.
  """
  KN

  """
  North Korea.
  """
  KP

  """
  South Korea.
  """
  KR

  """
  Kuwait.
  """
  KW

  """
  Cayman Islands.
  """
  KY

  """
  Kazakhstan.
  """
  KZ

  """
  Laos.
  """
  LA

  """
  Lebanon.
  """
  LB

  """
  St. Lucia.
  """
  LC

  """
  Liechtenstein.
  """
  LI

  """
  Sri Lanka.
  """
  LK

  """
  Liberia.
  """
  LR

  """
  Lesotho.
  """
  LS

  """
  Lithuania.
  """
  LT

  """
  Luxembourg.
  """
  LU

  """
  Latvia.
  """
  LV

  """
  Libya.
  """
  LY

  """
  Morocco.
  """
  MA

  """
  Monaco.
  """
  MC

  """
  Moldova.
  """
  MD

  """
  Montenegro.
  """
  ME

  """
  St. Martin.
  """
  MF

  """
  Madagascar.
  """
  MG

  """
  North Macedonia.
  """
  MK

  """
  Mali.
  """
  ML

  """
  Myanmar (Burma).
  """
  MM

  """
  Mongolia.
  """
  MN

  """
  Macao SAR.
  """
  MO

  """
  Martinique.
  """
  MQ

  """
  Mauritania.
  """
  MR

  """
  Montserrat.
  """
  MS

  """
  Malta.
  """
  MT

  """
  Mauritius.
  """
  MU

  """
  Maldives.
  """
  MV

  """
  Malawi.
  """
  MW

  """
  Mexico.
  """
  MX

  """
  Malaysia.
  """
  MY

  """
  Mozambique.
  """
  MZ

  """
  Namibia.
  """
  NA

  """
  New Caledonia.
  """
  NC

  """
  Niger.
  """
  NE

  """
  Norfolk Island.
  """
  NF

  """
  Nigeria.
  """
  NG

  """
  Nicaragua.
  """
  NI

  """
  Netherlands.
  """
  NL

  """
  Norway.
  """
  NO

  """
  Nepal.
  """
  NP

  """
  Nauru.
  """
  NR

  """
  Niue.
  """
  NU

  """
  New Zealand.
  """
  NZ

  """
  Oman.
  """
  OM

  """
  Panama.
  """
  PA

  """
  Peru.
  """
  PE

  """
  French Polynesia.
  """
  PF

  """
  Papua New Guinea.
  """
  PG

  """
  Philippines.
  """
  PH

  """
  Pakistan.
  """
  PK

  """
  Poland.
  """
  PL

  """
  St. Pierre & Miquelon.
  """
  PM

  """
  Pitcairn Islands.
  """
  PN

  """
  Palestinian Territories.
  """
  PS

  """
  Portugal.
  """
  PT

  """
  Paraguay.
  """
  PY

  """
  Qatar.
  """
  QA

  """
  Réunion.
  """
  RE

  """
  Romania.
  """
  RO

  """
  Serbia.
  """
  RS

  """
  Russia.
  """
  RU

  """
  Rwanda.
  """
  RW

  """
  Saudi Arabia.
  """
  SA

  """
  Solomon Islands.
  """
  SB

  """
  Seychelles.
  """
  SC

  """
  Sudan.
  """
  SD

  """
  Sweden.
  """
  SE

  """
  Singapore.
  """
  SG

  """
  St. Helena.
  """
  SH

  """
  Slovenia.
  """
  SI

  """
  Svalbard & Jan Mayen.
  """
  SJ

  """
  Slovakia.
  """
  SK

  """
  Sierra Leone.
  """
  SL

  """
  San Marino.
  """
  SM

  """
  Senegal.
  """
  SN

  """
  Somalia.
  """
  SO

  """
  Suriname.
  """
  SR

  """
  South Sudan.
  """
  SS

  """
  São Tomé & Príncipe.
  """
  ST

  """
  El Salvador.
  """
  SV

  """
  Sint Maarten.
  """
  SX

  """
  Syria.
  """
  SY

  """
  Eswatini.
  """
  SZ

  """
  Tristan da Cunha.
  """
  TA

  """
  Turks & Caicos Islands.
  """
  TC

  """
  Chad.
  """
  TD

  """
  French Southern Territories.
  """
  TF

  """
  Togo.
  """
  TG

  """
  Thailand.
  """
  TH

  """
  Tajikistan.
  """
  TJ

  """
  Tokelau.
  """
  TK

  """
  Timor-Leste.
  """
  TL

  """
  Turkmenistan.
  """
  TM

  """
  Tunisia.
  """
  TN

  """
  Tonga.
  """
  TO

  """
  Türkiye.
  """
  TR

  """
  Trinidad & Tobago.
  """
  TT

  """
  Tuvalu.
  """
  TV

  """
  Taiwan.
  """
  TW

  """
  Tanzania.
  """
  TZ

  """
  Ukraine.
  """
  UA

  """
  Uganda.
  """
  UG

  """
  U.S. Outlying Islands.
  """
  UM

  """
  United States.
  """
  US

  """
  Uruguay.
  """
  UY

  """
  Uzbekistan.
  """
  UZ

  """
  Vatican City.
  """
  VA

  """
  St. Vincent & Grenadines.
  """
  VC

  """
  Venezuela.
  """
  VE

  """
  British Virgin Islands.
  """
  VG

  """
  Vietnam.
  """
  VN

  """
  Vanuatu.
  """
  VU

  """
  Wallis & Futuna.
  """
  WF

  """
  Samoa.
  """
  WS

  """
  Kosovo.
  """
  XK

  """
  Yemen.
  """
  YE

  """
  Mayotte.
  """
  YT

  """
  South Africa.
  """
  ZA

  """
  Zambia.
  """
  ZM

  """
  Zimbabwe.
  """
  ZW

  """
  Unknown Region.
  """
  ZZ
}

"""
The currency codes that represent the world currencies throughout the Admin API. Currency codes include
[standard ISO 4217 codes](https://en.wikipedia.org/wiki/ISO_4217), legacy codes, non-standard codes,
digital currency codes.
"""
enum CurrencyCode {
  """
  United Arab Emirates Dirham (AED).
  """
  AED

  """
  Afghan Afghani (AFN).
  """
  AFN

  """
  Albanian Lek (ALL).
  """
  ALL

  """
  Armenian Dram (AMD).
  """
  AMD

  """
  Netherlands Antillean Guilder.
  """
  ANG

  """
  Angolan Kwanza (AOA).
  """
  AOA

  """
  Argentine Pesos (ARS).
  """
  ARS

  """
  Australian Dollars (AUD).
  """
  AUD

  """
  Aruban Florin (AWG).
  """
  AWG

  """
  Azerbaijani Manat (AZN).
  """
  AZN

  """
  Bosnia and Herzegovina Convertible Mark (BAM).
  """
  BAM

  """
  Barbadian Dollar (BBD).
  """
  BBD

  """
  Bangladesh Taka (BDT).
  """
  BDT

  """
  Bulgarian Lev (BGN).
  """
  BGN

  """
  Bahraini Dinar (BHD).
  """
  BHD

  """
  Burundian Franc (BIF).
  """
  BIF

  """
  Bermudian Dollar (BMD).
  """
  BMD

  """
  Brunei Dollar (BND).
  """
  BND

  """
  Bolivian Boliviano (BOB).
  """
  BOB

  """
  Brazilian Real (BRL).
  """
  BRL

  """
  Bahamian Dollar (BSD).
  """
  BSD

  """
  Bhutanese Ngultrum (BTN).
  """
  BTN

  """
  Botswana Pula (BWP).
  """
  BWP

  """
  Belarusian Ruble (BYN).
  """
  BYN

  """
  Belarusian Ruble (BYR).
  """
  BYR @deprecated(reason: "Use `BYN` instead.")

  """
  Belize Dollar (BZD).
  """
  BZD

  """
  Canadian Dollars (CAD).
  """
  CAD

  """
  Congolese franc (CDF).
  """
  CDF

  """
  Swiss Francs (CHF).
  """
  CHF

  """
  Chilean Peso (CLP).
  """
  CLP

  """
  Chinese Yuan Renminbi (CNY).
  """
  CNY

  """
  Colombian Peso (COP).
  """
  COP

  """
  Costa Rican Colones (CRC).
  """
  CRC

  """
  Cape Verdean escudo (CVE).
  """
  CVE

  """
  Czech Koruny (CZK).
  """
  CZK

  """
  Djiboutian Franc (DJF).
  """
  DJF

  """
  Danish Kroner (DKK).
  """
  DKK

  """
  Dominican Peso (DOP).
  """
  DOP

  """
  Algerian Dinar (DZD).
  """
  DZD

  """
  Egyptian Pound (EGP).
  """
  EGP

  """
  Eritrean Nakfa (ERN).
  """
  ERN

  """
  Ethiopian Birr (ETB).
  """
  ETB

  """
  Euro (EUR).
  """
  EUR

  """
  Fijian Dollars (FJD).
  """
  FJD

  """
  Falkland Islands Pounds (FKP).
  """
  FKP

  """
  United Kingdom Pounds (GBP).
  """
  GBP

  """
  Georgian Lari (GEL).
  """
  GEL

  """
  Ghanaian Cedi (GHS).
  """
  GHS

  """
  Gibraltar Pounds (GIP).
  """
  GIP

  """
  Gambian Dalasi (GMD).
  """
  GMD

  """
  Guinean Franc (GNF).
  """
  GNF

  """
  Guatemalan Quetzal (GTQ).
  """
  GTQ

  """
  Guyanese Dollar (GYD).
  """
  GYD

  """
  Hong Kong Dollars (HKD).
  """
  HKD

  """
  Honduran Lempira (HNL).
  """
  HNL

  """
  Croatian Kuna (HRK).
  """
  HRK

  """
  Haitian Gourde (HTG).
  """
  HTG

  """
  Hungarian Forint (HUF).
  """
  HUF

  """
  Indonesian Rupiah (IDR).
  """
  IDR

  """
  Israeli New Shekel (NIS).
  """
  ILS

  """
  Indian Rupees (INR).
  """
  INR

  """
  Iraqi Dinar (IQD).
  """
  IQD

  """
  Iranian Rial (IRR).
  """
  IRR

  """
  Icelandic Kronur (ISK).
  """
  ISK

  """
  Jersey Pound.
  """
  JEP

  """
  Jamaican Dollars (JMD).
  """
  JMD

  """
  Jordanian Dinar (JOD).
  """
  JOD

  """
  Japanese Yen (JPY).
  """
  JPY

  """
  Kenyan Shilling (KES).
  """
  KES

  """
  Kyrgyzstani Som (KGS).
  """
  KGS

  """
  Cambodian Riel.
  """
  KHR

  """
  Kiribati Dollar (KID).
  """
  KID

  """
  Comorian Franc (KMF).
  """
  KMF

  """
  South Korean Won (KRW).
  """
  KRW

  """
  Kuwaiti Dinar (KWD).
  """
  KWD

  """
  Cayman Dollars (KYD).
  """
  KYD

  """
  Kazakhstani Tenge (KZT).
  """
  KZT

  """
  Laotian Kip (LAK).
  """
  LAK

  """
  Lebanese Pounds (LBP).
  """
  LBP

  """
  Sri Lankan Rupees (LKR).
  """
  LKR

  """
  Liberian Dollar (LRD).
  """
  LRD

  """
  Lesotho Loti (LSL).
  """
  LSL

  """
  Lithuanian Litai (LTL).
  """
  LTL

  """
  Latvian Lati (LVL).
  """
  LVL

  """
  Libyan Dinar (LYD).
  """
  LYD

  """
  Moroccan Dirham.
  """
  MAD

  """
  Moldovan Leu (MDL).
  """
  MDL

  """
  Malagasy Ariary (MGA).
  """
  MGA

  """
  Macedonia Denar (MKD).
  """
  MKD

  """
  Burmese Kyat (MMK).
  """
  MMK

  """
  Mongolian Tugrik.
  """
  MNT

  """
  Macanese Pataca (MOP).
  """
  MOP

  """
  Mauritanian Ouguiya (MRU).
  """
  MRU

  """
  Mauritian Rupee (MUR).
  """
  MUR

  """
  Maldivian Rufiyaa (MVR).
  """
  MVR

  """
  Malawian Kwacha (MWK).
  """
  MWK

  """
  Mexican Pesos (MXN).
  """
  MXN

  """
  Malaysian Ringgits (MYR).
  """
  MYR

  """
  Mozambican Metical.
  """
  MZN

  """
  Namibian Dollar.
  """
  NAD

  """
  Nigerian Naira (NGN).
  """
  NGN

  """
  Nicaraguan Córdoba (NIO).
  """
  NIO

  """
  Norwegian Kroner (NOK).
  """
  NOK

  """
  Nepalese Rupee (NPR).
  """
  NPR

  """
  New Zealand Dollars (NZD).
  """
  NZD

  """
  Omani Rial (OMR).
  """
  OMR

  """
  Panamian Balboa (PAB).
  """
  PAB

  """
  Peruvian Nuevo Sol (PEN).
  """
  PEN

  """
  Papua New Guinean Kina (PGK).
  """
  PGK

  """
  Philippine Peso (PHP).
  """
  PHP

  """
  Pakistani Rupee (PKR).
  """
  PKR

  """
  Polish Zlotych (PLN).
  """
  PLN

  """
  Paraguayan Guarani (PYG).
  """
  PYG

  """
  Qatari Rial (QAR).
  """
  QAR

  """
  Romanian Lei (RON).
  """
  RON

  """
  Serbian dinar (RSD).
  """
  RSD

  """
  Russian Rubles (RUB).
  """
  RUB

  """
  Rwandan Franc (RWF).
  """
  RWF

  """
  Saudi Riyal (SAR).
  """
  SAR

  """
  Solomon Islands Dollar (SBD).
  """
  SBD

  """
  Seychellois Rupee (SCR).
  """
  SCR

  """
  Sudanese Pound (SDG).
  """
  SDG

  """
  Swedish Kronor (SEK).
  """
  SEK

  """
  Singapore Dollars (SGD).
  """
  SGD

  """
  Saint Helena Pounds (SHP).
  """
  SHP

  """
  Sierra Leonean Leone (SLL).
  """
  SLL

  """
  Somali Shilling (SOS).
  """
  SOS

  """
  Surinamese Dollar (SRD).
  """
  SRD

  """
  South Sudanese Pound (SSP).
  """
  SSP

  """
  Sao Tome And Principe Dobra (STD).
  """
  STD @deprecated(reason: "Use `STN` instead.")

  """
  Sao Tome And Principe Dobra (STN).
  """
  STN

  """
  Syrian Pound (SYP).
  """
  SYP

  """
  Swazi Lilangeni (SZL).
  """
  SZL

  """
  Thai baht (THB).
  """
  THB

  """
  Tajikistani Somoni (TJS).
  """
  TJS

  """
  Turkmenistani Manat (TMT).
  """
  TMT

  """
  Tunisian Dinar (TND).
  """
  TND

  """
  Tongan Pa'anga (TOP).
  """
  TOP

  """
  Turkish Lira (TRY).
  """
  TRY

  """
  Trinidad and Tobago Dollars (TTD).
  """
  TTD

  """
  Taiwan Dollars (TWD).
  """
  TWD

  """
  Tanzanian Shilling (TZS).
  """
  TZS

  """
  Ukrainian Hryvnia (UAH).
  """
  UAH

  """
  Ugandan Shilling (UGX).
  """
  UGX

  """
  United States Dollars (USD).
  """
  USD

  """
  United States Dollars Coin (USDC).
  """
  USDC

  """
  Uruguayan Pesos (UYU).
  """
  UYU

  """
  Uzbekistan som (UZS).
  """
  UZS

  """
  Venezuelan Bolivares (VED).
  """
  VED

  """
  Venezuelan Bolivares (VEF).
  """
  VEF @deprecated(reason: "Use `VES` instead.")

  """
  Venezuelan Bolivares Soberanos (VES).
  """
  VES

  """
  Vietnamese đồng (VND).
  """
  VND

  """
  Vanuatu Vatu (VUV).
  """
  VUV

  """
  Samoan Tala (WST).
  """
  WST

  """
  Central African CFA Franc (XAF).
  """
  XAF

  """
  East Caribbean Dollar (XCD).
  """
  XCD

  """
  West African CFA franc (XOF).
  """
  XOF

  """
  CFP Franc (XPF).
  """
  XPF

  """
  Unrecognized currency.
  """
  XXX

  """
  Yemeni Rial (YER).
  """
  YER

  """
  South African Rand (ZAR).
  """
  ZAR

  """
  Zambian Kwacha (ZMW).
  """
  ZMW
}

"""
A custom product represents a product that doesn't map to Shopify's
[standard product categories](https://help.shopify.com/manual/products/details/product-type).
For example, you can use a custom product to manage gift cards, shipping requirements, localized product
information, or weight measurements and conversions.
"""
type CustomProduct {
  """
  Whether the merchandise is a gift card.
  """
  isGiftCard: Boolean!

  """
  Whether the item needs to be shipped to the customer. For example, a
  digital gift card doesn't need to be shipped, but a t-shirt does
  need to be shipped.
  """
  requiresShipping: Boolean!

  """
  The localized name for the product that displays to customers. The title is used to construct the product's
  handle, which is a unique, human-readable string of the product's title. For example, if a product is titled
  "Black Sunglasses", then the handle is `black-sunglasses`.
  """
  title: String!

  """
  The product variant's weight, in the system of measurement set in the `weightUnit` field.
  """
  weight: Float

  """
  The unit of measurement for weight.
  """
  weightUnit: WeightUnit!
}

"""
Represents a [customer](https://help.shopify.com/manual/customers/manage-customers).
`Customer` returns data including the customer's contact information and order history.
"""
type Customer implements HasMetafields {
  """
  The total amount that the customer has spent on orders.
  The amount is converted from the shop's currency to the currency of the cart using a market rate.
  """
  amountSpent: MoneyV2!

  """
  The full name of the customer, based on the values for `firstName` and `lastName`.
  If `firstName` and `lastName` aren't specified, then the value is the customer's email address.
  If the email address isn't specified, then the value is the customer's phone number.
  """
  displayName: String!

  """
  The customer's email address.
  """
  email: String

  """
  The customer's first name.
  """
  firstName: String

  """
  Whether the customer is associated with any of the specified tags. The customer must have at least one tag
  from the list to return `true`.
  """
  hasAnyTag(
    """
    A comma-separated list of searchable keywords that are associated with the customer. For example,
    `"VIP, Gold"` returns customers with either the `VIP` or `Gold` tag.
    """
    tags: [String!]! = []
  ): Boolean!

  """
  Whether the customer is associated with the specified tags.
  """
  hasTags(
    """
    A comma-separated list of searchable keywords that are associated with the customer. For example,
    `"VIP, Gold"` returns customers with both the `VIP` and `Gold` tags.
    """
    tags: [String!]! = []
  ): [HasTagResponse!]!

  """
  A [globally-unique ID](https://shopify.dev/docs/api/usage/gids)
  for the customer.
  """
  id: ID!

  """
  The customer's last name.
  """
  lastName: String

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  The total number of orders that the customer has made at the store.
  """
  numberOfOrders: Int!
}

"""
Represents an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)-encoded date string.
For example, September 7, 2019 is represented as `"2019-07-16"`.
"""
scalar Date

"""
Represents an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)-encoded date and time string.
For example, 3:50 pm on September 7, 2019 in the time zone of UTC (Coordinated Universal Time) is
represented as `"2019-09-07T15:50:00Z`".
"""
scalar DateTime

"""
A subset of the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format that
includes the date and time but not the timezone which is determined from context.

For example, "2018-01-01T00:00:00".
"""
scalar DateTimeWithoutTimezone

"""
A signed decimal number, which supports arbitrary precision and is serialized as a string.

Example values: `"29.99"`, `"29.999"`.
"""
scalar Decimal

"""
Represents information about the merchandise in the cart.
"""
type DeliverableCartLine {
  """
  The custom attributes associated with a cart to store additional information. Cart attributes
  allow you to collect specific information from customers on the **Cart** page, such as order notes,
  gift wrapping requests, or custom product details. Attributes are stored as key-value pairs.

  Cart line attributes are equivalent to the
  [`line_item`](https://shopify.dev/docs/api/liquid/objects/line_item)
  object in Liquid.
  """
  attribute(
    """
    The key of the cart attribute to retrieve. For example, `"gift_wrapping"`.
    """
    key: String
  ): Attribute

  """
  The ID of the cart line.
  """
  id: ID!

  """
  The item that the customer intends to purchase.
  """
  merchandise: Merchandise!

  """
  The quantity of the item that the customer intends to purchase.
  """
  quantity: Int!
}

"""
List of different delivery method types.
"""
enum DeliveryMethod {
  """
  Local Delivery.
  """
  LOCAL

  """
  None.
  """
  NONE

  """
  Shipping to a Pickup Point.
  """
  PICKUP_POINT

  """
  Local Pickup.
  """
  PICK_UP

  """
  Retail.
  """
  RETAIL

  """
  Shipping.
  """
  SHIPPING
}

"""
The percentage deposit required at checkout for the order.
"""
input Deposit {
  """
  The percentage of the order total that should be paid as a deposit. Must be between 1 and 99, inclusive.
  """
  percentage: Float!
}

"""
An operation to apply to the list of payment methods.
"""
input DeprecatedOperation @oneOf {
  """
  A request to hide a payment method during checkout.

  When your Function returns this operation, it removes the specified payment method
  from the available options shown to customers during checkout.

  Use this operation when you want to conditionally hide payment methods based on
  checkout attributes, customer data, or other business logic implemented in your Function.
  """
  hide: HideOperation @deprecated(reason: "Use `paymentMethodHide` instead.")

  """
  A request to move a payment method to a new position in the checkout display order.

  When your Function returns this operation, it changes the display order of payment methods
  by placing the specified payment method at the requested index position.

  Use this operation when you want to prioritize certain payment methods based on
  checkout context, customer preferences, or other business logic implemented in your Function.
  """
  move: MoveOperation @deprecated(reason: "Use `paymentMethodMove` instead.")

  """
  A request to set, modify, or remove payment terms for a checkout.

  When your Function returns this operation, it customizes the payment conditions
  presented to the customer at checkout, allowing for net terms, fixed due dates, and
  event-based terms. You can also specify deposit requirements.

  Use this operation to conditionally impose payment terms based on customer attributes,
  order value, or other business logic.

  This operation is only available on stores with the Plus plan.
  """
  paymentTermsSet: PaymentTermsSetOperation

  """
  A request to change the displayed name of a payment method during checkout.

  When your Function returns this operation, it replaces the default name of the
  specified payment method with the custom name that's provided in the request.

  Use this operation when you want to provide more context or clarity about
  payment methods based on checkout details, locale, or other business logic
  implemented in your Function.
  """
  rename: RenameOperation @deprecated(reason: "Use `paymentMethodRename` instead.")
}

"""
The input to set event-based payment terms.
"""
input EventPaymentTerms {
  """
  The deposit for payment terms. No deposit by default.
  """
  deposit: Deposit

  """
  The event that triggers the payment terms.
  """
  trigger: PaymentTermsTriggerEvent!
}

"""
The input to set fixed payment terms.
"""
input FixedPaymentTerms {
  """
  The deposit for payment terms. No deposit by default.
  """
  deposit: Deposit

  """
  The due date for fixed payment terms.
  """
  dueAt: DateTime!
}

"""
The output of the Function run target. The object contains the operations to
apply to payment methods in checkout. In API versions 2023-10 and beyond, this
type is deprecated in favor of `FunctionRunResult`.
"""
input FunctionResult {
  """
  The ordered list of operations to apply to the list of payment methods.
  """
  operations: [DeprecatedOperation!]!
}

"""
The output of the Function run target. The object contains the operations to apply to payment methods in checkout.
"""
input FunctionRunResult {
  """
  The ordered list of operations to apply to the list of payment methods.
  """
  operations: [DeprecatedOperation!]!
}

"""
A function-scoped handle to a refer a resource.
The Handle type appears in a JSON response as a String, but it is not intended to be human-readable.
Example value: `"10079785100"`
"""
scalar Handle

"""
Represents information about the metafields associated to the specified resource.
"""
interface HasMetafields {
  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield
}

"""
Whether a Shopify resource, such as a product or customer, has a specified tag.
"""
type HasTagResponse {
  """
  Whether the Shopify resource has the tag.
  """
  hasTag: Boolean!

  """
  A searchable keyword that's associated with a Shopify resource, such as a product or customer. For example,
  a merchant might apply the `sports` and `summer` tags to products that are associated with sportswear for
  summer.
  """
  tag: String!
}

"""
A request to hide a payment method during checkout.

When your Function returns this operation, it removes the specified payment method
from the available options shown to customers during checkout.

Use this operation when you want to conditionally hide payment methods based on
checkout attributes, customer data, or other business logic implemented in your Function.
"""
input HideOperation {
  """
  The identifier of the payment method to hide out.
  """
  paymentMethodId: ID!

  """
  Placement types to hide. If not provided, all placements will be hidden.
  """
  placements: [PaymentCustomizationPaymentMethodPlacement!]
}

"""
Represents a unique identifier, often used to refetch an object.
The ID type appears in a JSON response as a String, but it is not intended to be human-readable.

Example value: `"gid://shopify/Product/10079785100"`
"""
scalar ID

"""
The `Input` object is the complete GraphQL schema that your Function can query
as an input to customize the payment methods that are available to customers
during checkout. Your Function receives only the fields that you request in the
input query. To optimize performance, we highly recommend that you request only
the fields that your function requires.
"""
type Input {
  """
  The cart where the Function is running. A cart contains the merchandise that a customer intends to purchase
  and information about the customer, such as the customer's email address and phone number.
  """
  cart: Cart!

  """
  The regional and language settings that determine how the Function
  handles currency, numbers, dates, and other locale-specific values
  during discount calculations. These settings are based on the store's configured
  [localization practices](https://shopify.dev/docs/apps/build/functions/localization-practices-shopify-functions).
  """
  localization: Localization!

  """
  The configuration of the app that owns the Function. This configuration
  controls how merchants can modify [payment methods](https://help.shopify.com/manual/checkout-settings/checkout-customization),
  such as renaming, reordering, or hiding them.
  """
  paymentCustomization: PaymentCustomization!

  """
  The list of payment methods that are available to customers during checkout that your Function can customize.
  """
  paymentMethods: [PaymentCustomizationPaymentMethod!]!

  """
  The exchange rate used to convert discounts between the shop's default
  currency and the currency that displays to the customer during checkout.
  For example, if a store operates in USD but a customer is viewing discounts in EUR,
  then the presentment currency rate handles this conversion for accurate pricing.
  """
  presentmentCurrencyRate: Decimal!

  """
  Information about the shop where the Function is running, including the shop's timezone
  setting and associated [metafields](https://shopify.dev/docs/apps/build/custom-data).
  """
  shop: Shop!
}

"""
A [JSON](https://www.json.org/json-en.html) object.

Example value:
`{
  "product": {
    "id": "gid://shopify/Product/1346443542550",
    "title": "White T-shirt",
    "options": [{
      "name": "Size",
      "values": ["M", "L"]
    }]
  }
}`
"""
scalar JSON

"""
The language for which the store is customized, ensuring content is tailored to local customers.
This includes product descriptions and customer communications that resonate with the target audience.
"""
type Language {
  """
  The ISO code.
  """
  isoCode: LanguageCode!
}

"""
Language codes supported by Shopify.
"""
enum LanguageCode {
  """
  Afrikaans.
  """
  AF

  """
  Akan.
  """
  AK

  """
  Amharic.
  """
  AM

  """
  Arabic.
  """
  AR

  """
  Assamese.
  """
  AS

  """
  Azerbaijani.
  """
  AZ

  """
  Belarusian.
  """
  BE

  """
  Bulgarian.
  """
  BG

  """
  Bambara.
  """
  BM

  """
  Bangla.
  """
  BN

  """
  Tibetan.
  """
  BO

  """
  Breton.
  """
  BR

  """
  Bosnian.
  """
  BS

  """
  Catalan.
  """
  CA

  """
  Chechen.
  """
  CE

  """
  Central Kurdish.
  """
  CKB

  """
  Czech.
  """
  CS

  """
  Church Slavic.
  """
  CU

  """
  Welsh.
  """
  CY

  """
  Danish.
  """
  DA

  """
  German.
  """
  DE

  """
  Dzongkha.
  """
  DZ

  """
  Ewe.
  """
  EE

  """
  Greek.
  """
  EL

  """
  English.
  """
  EN

  """
  Esperanto.
  """
  EO

  """
  Spanish.
  """
  ES

  """
  Estonian.
  """
  ET

  """
  Basque.
  """
  EU

  """
  Persian.
  """
  FA

  """
  Fulah.
  """
  FF

  """
  Finnish.
  """
  FI

  """
  Filipino.
  """
  FIL

  """
  Faroese.
  """
  FO

  """
  French.
  """
  FR

  """
  Western Frisian.
  """
  FY

  """
  Irish.
  """
  GA

  """
  Scottish Gaelic.
  """
  GD

  """
  Galician.
  """
  GL

  """
  Gujarati.
  """
  GU

  """
  Manx.
  """
  GV

  """
  Hausa.
  """
  HA

  """
  Hebrew.
  """
  HE

  """
  Hindi.
  """
  HI

  """
  Croatian.
  """
  HR

  """
  Hungarian.
  """
  HU

  """
  Armenian.
  """
  HY

  """
  Interlingua.
  """
  IA

  """
  Indonesian.
  """
  ID

  """
  Igbo.
  """
  IG

  """
  Sichuan Yi.
  """
  II

  """
  Icelandic.
  """
  IS

  """
  Italian.
  """
  IT

  """
  Japanese.
  """
  JA

  """
  Javanese.
  """
  JV

  """
  Georgian.
  """
  KA

  """
  Kikuyu.
  """
  KI

  """
  Kazakh.
  """
  KK

  """
  Kalaallisut.
  """
  KL

  """
  Khmer.
  """
  KM

  """
  Kannada.
  """
  KN

  """
  Korean.
  """
  KO

  """
  Kashmiri.
  """
  KS

  """
  Kurdish.
  """
  KU

  """
  Cornish.
  """
  KW

  """
  Kyrgyz.
  """
  KY

  """
  Luxembourgish.
  """
  LB

  """
  Ganda.
  """
  LG

  """
  Lingala.
  """
  LN

  """
  Lao.
  """
  LO

  """
  Lithuanian.
  """
  LT

  """
  Luba-Katanga.
  """
  LU

  """
  Latvian.
  """
  LV

  """
  Malagasy.
  """
  MG

  """
  Māori.
  """
  MI

  """
  Macedonian.
  """
  MK

  """
  Malayalam.
  """
  ML

  """
  Mongolian.
  """
  MN

  """
  Marathi.
  """
  MR

  """
  Malay.
  """
  MS

  """
  Maltese.
  """
  MT

  """
  Burmese.
  """
  MY

  """
  Norwegian (Bokmål).
  """
  NB

  """
  North Ndebele.
  """
  ND

  """
  Nepali.
  """
  NE

  """
  Dutch.
  """
  NL

  """
  Norwegian Nynorsk.
  """
  NN

  """
  Norwegian.
  """
  NO

  """
  Oromo.
  """
  OM

  """
  Odia.
  """
  OR

  """
  Ossetic.
  """
  OS

  """
  Punjabi.
  """
  PA

  """
  Polish.
  """
  PL

  """
  Pashto.
  """
  PS

  """
  Portuguese.
  """
  PT

  """
  Portuguese (Brazil).
  """
  PT_BR

  """
  Portuguese (Portugal).
  """
  PT_PT

  """
  Quechua.
  """
  QU

  """
  Romansh.
  """
  RM

  """
  Rundi.
  """
  RN

  """
  Romanian.
  """
  RO

  """
  Russian.
  """
  RU

  """
  Kinyarwanda.
  """
  RW

  """
  Sanskrit.
  """
  SA

  """
  Sardinian.
  """
  SC

  """
  Sindhi.
  """
  SD

  """
  Northern Sami.
  """
  SE

  """
  Sango.
  """
  SG

  """
  Sinhala.
  """
  SI

  """
  Slovak.
  """
  SK

  """
  Slovenian.
  """
  SL

  """
  Shona.
  """
  SN

  """
  Somali.
  """
  SO

  """
  Albanian.
  """
  SQ

  """
  Serbian.
  """
  SR

  """
  Sundanese.
  """
  SU

  """
  Swedish.
  """
  SV

  """
  Swahili.
  """
  SW

  """
  Tamil.
  """
  TA

  """
  Telugu.
  """
  TE

  """
  Tajik.
  """
  TG

  """
  Thai.
  """
  TH

  """
  Tigrinya.
  """
  TI

  """
  Turkmen.
  """
  TK

  """
  Tongan.
  """
  TO

  """
  Turkish.
  """
  TR

  """
  Tatar.
  """
  TT

  """
  Uyghur.
  """
  UG

  """
  Ukrainian.
  """
  UK

  """
  Urdu.
  """
  UR

  """
  Uzbek.
  """
  UZ

  """
  Vietnamese.
  """
  VI

  """
  Volapük.
  """
  VO

  """
  Wolof.
  """
  WO

  """
  Xhosa.
  """
  XH

  """
  Yiddish.
  """
  YI

  """
  Yoruba.
  """
  YO

  """
  Chinese.
  """
  ZH

  """
  Chinese (Simplified).
  """
  ZH_CN

  """
  Chinese (Traditional).
  """
  ZH_TW

  """
  Zulu.
  """
  ZU
}

"""
The current time based on the
[store's timezone setting](https://help.shopify.com/manual/intro-to-shopify/initial-setup/setup-business-settings).
"""
type LocalTime {
  """
  The current date relative to the parent object.
  """
  date: Date!

  """
  Returns true if the current date and time is at or past the given date and time, and false otherwise.
  """
  dateTimeAfter(
    """
    The date and time to compare against, assumed to be in the timezone of the parent object.
    """
    dateTime: DateTimeWithoutTimezone!
  ): Boolean!

  """
  Returns true if the current date and time is before the given date and time, and false otherwise.
  """
  dateTimeBefore(
    """
    The date and time to compare against, assumed to be in the timezone of the parent timezone.
    """
    dateTime: DateTimeWithoutTimezone!
  ): Boolean!

  """
  Returns true if the current date and time is between the two given date and times, and false otherwise.
  """
  dateTimeBetween(
    """
    The upper bound time to compare against, assumed to be in the timezone of the parent timezone.
    """
    endDateTime: DateTimeWithoutTimezone!

    """
    The lower bound time to compare against, assumed to be in the timezone of the parent timezone.
    """
    startDateTime: DateTimeWithoutTimezone!
  ): Boolean!

  """
  Returns true if the current time is at or past the given time, and false otherwise.
  """
  timeAfter(
    """
    The time to compare against, assumed to be in the timezone of the parent timezone.
    """
    time: TimeWithoutTimezone!
  ): Boolean!

  """
  Returns true if the current time is at or past the given time, and false otherwise.
  """
  timeBefore(
    """
    The time to compare against, assumed to be in the timezone of the parent timezone.
    """
    time: TimeWithoutTimezone!
  ): Boolean!

  """
  Returns true if the current time is between the two given times, and false otherwise.
  """
  timeBetween(
    """
    The upper bound time to compare against, assumed to be in the timezone of the parent timezone.
    """
    endTime: TimeWithoutTimezone!

    """
    The lower bound time to compare against, assumed to be in the timezone of the parent timezone.
    """
    startTime: TimeWithoutTimezone!
  ): Boolean!
}

"""
Details about the localized experience for the store in a specific region, including country and language
settings. The localized experience is determined by the store's settings and the customer's location.
Localization ensures that customers can access relevant content and options while browsing or purchasing
products in a store.
"""
type Localization {
  """
  The country for which the store is customized, reflecting local preferences and regulations.
  Localization might influence the language, currency, and product offerings available in a store to enhance
  the shopping experience for customers in that region.
  """
  country: Country!

  """
  The language for which the store is customized, ensuring content is tailored to local customers.
  This includes product descriptions and customer communications that resonate with the target audience.
  """
  language: Language!

  """
  The market of the active localized experience.
  """
  market: Market! @deprecated(reason: "This `market` field will be removed in a future version of the API.")
}

"""
Represents the value captured by a localized field. Localized fields are
additional fields required by certain countries on international orders. For
example, some countries require additional fields for customs information or tax
identification numbers.
"""
type LocalizedField {
  """
  The key of the localized field.
  """
  key: LocalizedFieldKey!

  """
  The title of the localized field.
  """
  title: String!

  """
  The value of the localized field.
  """
  value: String
}

"""
Unique key identifying localized fields.
"""
enum LocalizedFieldKey {
  """
  Localized field key 'shipping_credential_br' for country Brazil.
  """
  SHIPPING_CREDENTIAL_BR

  """
  Localized field key 'shipping_credential_cl' for country Chile.
  """
  SHIPPING_CREDENTIAL_CL

  """
  Localized field key 'shipping_credential_cn' for country China.
  """
  SHIPPING_CREDENTIAL_CN

  """
  Localized field key 'shipping_credential_co' for country Colombia.
  """
  SHIPPING_CREDENTIAL_CO

  """
  Localized field key 'shipping_credential_cr' for country Costa Rica.
  """
  SHIPPING_CREDENTIAL_CR

  """
  Localized field key 'shipping_credential_ec' for country Ecuador.
  """
  SHIPPING_CREDENTIAL_EC

  """
  Localized field key 'shipping_credential_es' for country Spain.
  """
  SHIPPING_CREDENTIAL_ES

  """
  Localized field key 'shipping_credential_gt' for country Guatemala.
  """
  SHIPPING_CREDENTIAL_GT

  """
  Localized field key 'shipping_credential_id' for country Indonesia.
  """
  SHIPPING_CREDENTIAL_ID

  """
  Localized field key 'shipping_credential_kr' for country South Korea.
  """
  SHIPPING_CREDENTIAL_KR

  """
  Localized field key 'shipping_credential_mx' for country Mexico.
  """
  SHIPPING_CREDENTIAL_MX

  """
  Localized field key 'shipping_credential_my' for country Malaysia.
  """
  SHIPPING_CREDENTIAL_MY

  """
  Localized field key 'shipping_credential_pe' for country Peru.
  """
  SHIPPING_CREDENTIAL_PE

  """
  Localized field key 'shipping_credential_pt' for country Portugal.
  """
  SHIPPING_CREDENTIAL_PT

  """
  Localized field key 'shipping_credential_py' for country Paraguay.
  """
  SHIPPING_CREDENTIAL_PY

  """
  Localized field key 'shipping_credential_tr' for country Turkey.
  """
  SHIPPING_CREDENTIAL_TR

  """
  Localized field key 'shipping_credential_tw' for country Taiwan.
  """
  SHIPPING_CREDENTIAL_TW

  """
  Localized field key 'shipping_credential_type_co' for country Colombia.
  """
  SHIPPING_CREDENTIAL_TYPE_CO

  """
  Localized field key 'tax_credential_br' for country Brazil.
  """
  TAX_CREDENTIAL_BR

  """
  Localized field key 'tax_credential_cl' for country Chile.
  """
  TAX_CREDENTIAL_CL

  """
  Localized field key 'tax_credential_co' for country Colombia.
  """
  TAX_CREDENTIAL_CO

  """
  Localized field key 'tax_credential_cr' for country Costa Rica.
  """
  TAX_CREDENTIAL_CR

  """
  Localized field key 'tax_credential_ec' for country Ecuador.
  """
  TAX_CREDENTIAL_EC

  """
  Localized field key 'tax_credential_es' for country Spain.
  """
  TAX_CREDENTIAL_ES

  """
  Localized field key 'tax_credential_gt' for country Guatemala.
  """
  TAX_CREDENTIAL_GT

  """
  Localized field key 'tax_credential_id' for country Indonesia.
  """
  TAX_CREDENTIAL_ID

  """
  Localized field key 'tax_credential_it' for country Italy.
  """
  TAX_CREDENTIAL_IT

  """
  Localized field key 'tax_credential_mx' for country Mexico.
  """
  TAX_CREDENTIAL_MX

  """
  Localized field key 'tax_credential_my' for country Malaysia.
  """
  TAX_CREDENTIAL_MY

  """
  Localized field key 'tax_credential_pe' for country Peru.
  """
  TAX_CREDENTIAL_PE

  """
  Localized field key 'tax_credential_pt' for country Portugal.
  """
  TAX_CREDENTIAL_PT

  """
  Localized field key 'tax_credential_py' for country Paraguay.
  """
  TAX_CREDENTIAL_PY

  """
  Localized field key 'tax_credential_tr' for country Turkey.
  """
  TAX_CREDENTIAL_TR

  """
  Localized field key 'tax_credential_type_co' for country Colombia.
  """
  TAX_CREDENTIAL_TYPE_CO

  """
  Localized field key 'tax_credential_type_mx' for country Mexico.
  """
  TAX_CREDENTIAL_TYPE_MX

  """
  Localized field key 'tax_credential_use_mx' for country Mexico.
  """
  TAX_CREDENTIAL_USE_MX

  """
  Localized field key 'tax_email_it' for country Italy.
  """
  TAX_EMAIL_IT
}

"""
Represents the location where the inventory resides.
"""
type Location implements HasMetafields {
  """
  The address of this location.
  """
  address: LocationAddress!

  """
  The location handle.
  """
  handle: Handle!

  """
  The location id.
  """
  id: ID!

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  The name of the location.
  """
  name: String!
}

"""
Represents the address of a location.
"""
type LocationAddress {
  """
  The first line of the address for the location.
  """
  address1: String

  """
  The second line of the address for the location.
  """
  address2: String

  """
  The city of the location.
  """
  city: String

  """
  The country of the location.
  """
  country: String

  """
  The country code of the location.
  """
  countryCode: String

  """
  A formatted version of the address for the location.
  """
  formatted: [String!]!

  """
  The approximate latitude coordinates of the location.
  """
  latitude: Float

  """
  The approximate longitude coordinates of the location.
  """
  longitude: Float

  """
  The phone number of the location.
  """
  phone: String

  """
  The province of the location.
  """
  province: String

  """
  The code for the province, state, or district of the address of the location.
  """
  provinceCode: String

  """
  The ZIP code of the location.
  """
  zip: String
}

"""
Represents a mailing address.
"""
type MailingAddress {
  """
  The first line of the address. Typically the street address or PO Box number.
  """
  address1: String

  """
  The second line of the address. Typically the number of the apartment, suite, or unit.
  """
  address2: String

  """
  The name of the city, district, village, or town.
  """
  city: String

  """
  The name of the customer's company or organization.
  """
  company: String

  """
  The two-letter code for the country of the address. For example, US.
  """
  countryCode: CountryCode

  """
  The first name of the customer.
  """
  firstName: String

  """
  The last name of the customer.
  """
  lastName: String

  """
  The approximate latitude of the address.
  """
  latitude: Float

  """
  The approximate longitude of the address.
  """
  longitude: Float

  """
  The market of the address.
  """
  market: Market @deprecated(reason: "This `market` field will be removed in a future version of the API.")

  """
  The full name of the customer, based on firstName and lastName.
  """
  name: String

  """
  A unique phone number for the customer. Formatted using E.164 standard. For example, +16135551111.
  """
  phone: String

  """
  The alphanumeric code for the region. For example, ON.
  """
  provinceCode: String

  """
  The zip or postal code of the address.
  """
  zip: String
}

"""
A market is a group of one or more regions that you want to target for international sales.
By creating a market, you can configure a distinct, localized shopping experience for
customers from a specific area of the world. For example, you can
[change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
[configure international pricing](https://shopify.dev/api/examples/product-price-lists),
or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
"""
type Market implements HasMetafields {
  """
  A human-readable unique string for the market automatically generated from its title.
  """
  handle: Handle!

  """
  A globally-unique identifier.
  """
  id: ID!

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  A geographic region which comprises a market.
  """
  regions: [MarketRegion!]!
}

"""
Represents a region.
"""
interface MarketRegion {
  """
  The name of the region in the language of the current localization.
  """
  name: String
}

"""
A country which comprises a market.
"""
type MarketRegionCountry implements MarketRegion {
  """
  The two-letter code for the country.
  """
  code: CountryCode!

  """
  The country name in the language of the current localization.
  """
  name: String!
}

"""
The item that a customer intends to purchase. Merchandise can be a product variant or a custom
product.

A product variant is a specific version of a product that comes in more than one option, such as size or color.
For example, if a merchant sells t-shirts with options for size and color, then a small, blue t-shirt would be
one product variant and a large, blue t-shirt would be another.

A custom product represents a product that doesn't map to Shopify's
[standard product categories](https://help.shopify.com/manual/products/details/product-type).
For example, you can use a custom product to manage gift cards, shipping requirements, localized product
information, or weight measurements and conversions.
"""
union Merchandise = CustomProduct | ProductVariant

"""
[Custom fields](https://shopify.dev/docs/apps/build/custom-data) that store additional information
about a Shopify resource, such as products, orders, and
[many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
enables you to customize the checkout experience.
"""
type Metafield {
  """
  The data that's stored in the metafield, using JSON format.
  """
  jsonValue: JSON!

  """
  The [type of data](https://shopify.dev/apps/metafields/types) that the metafield stores in
  the `value` field.
  """
  type: String!

  """
  The data that's stored in the metafield. The data is always stored as a string,
  regardless of the [metafield's type](https://shopify.dev/apps/metafields/types).
  """
  value: String!
}

"""
A precise monetary value and its associated currency. Combines a decimal amount
with a three-letter currency code to express prices, costs, and other financial
values throughout the API. For example, 12.99 USD.
"""
type MoneyV2 {
  """
  A monetary value in decimal format, allowing for precise representation of cents or fractional
  currency. For example, 12.99.
  """
  amount: Decimal!

  """
  The three-letter currency code that represents a world currency used in a store. Currency codes
  include standard [standard ISO 4217 codes](https://en.wikipedia.org/wiki/ISO_4217), legacy codes,
  and non-standard codes. For example, USD.
  """
  currencyCode: CurrencyCode!
}

"""
A request to move a payment method to a new position in the checkout display order.

When your Function returns this operation, it changes the display order of payment methods
by placing the specified payment method at the requested index position.

Use this operation when you want to prioritize certain payment methods based on
checkout context, customer preferences, or other business logic implemented in your Function.
"""
input MoveOperation {
  """
  The index to move the payment method to.
  """
  index: Int!

  """
  The identifier of the payment method to move.
  """
  paymentMethodId: ID!
}

"""
The root mutation for the API.
"""
type MutationRoot {
  """
  Handles the Function result for the cart.payment-methods.transform.run target.
  """
  cartPaymentMethodsTransformRun(
    """
    The result of the Function.
    """
    result: CartPaymentMethodsTransformRunResult!
  ): Void!

  """
  Handles the Function result.
  """
  handleResult(
    """
    The result of the Function.
    """
    result: FunctionResult!
  ): Void! @deprecated(reason: "Use the target-specific field instead.")

  """
  Handles the Function result for the purchase.payment-customization.run target.
  """
  run(
    """
    The result of the Function.
    """
    result: FunctionRunResult!
  ): Void!
}

"""
The input to set net payment terms.
"""
input NetPaymentTerms {
  """
  The deposit for payment terms. No deposit by default.
  """
  deposit: Deposit

  """
  The number of days until the payment is due.
  Currently supported values are restricted to 7, 15, 30, 45, 60, and 90.
  These values may change in the future as restrictions are lifted,
  but existing values will continue to be supported.
  """
  dueInDays: Int!

  """
  The issued date of net payment terms. Set to current time if nil.
  """
  issuedAt: DateTime
}

"""
An operation to apply to the list of payment methods.
"""
input Operation @oneOf {
  """
  A request to impose a review requirement on the order.

  When your Function returns this operation, the checkout will be submitted as a draft,
  requiring merchant review and approval to finalize the order.

  Use this operation to implement custom business rules that require manual review
  before order completion, such as high-value orders, or orders with specific products.

  This operation is only available for B2B purchases on stores with the Plus plan.
  """
  orderReviewAdd: OrderReviewAddOperation

  """
  A request to hide a payment method during checkout.

  When your Function returns this operation, it removes the specified payment method
  from the available options shown to customers during checkout.

  Use this operation when you want to conditionally hide payment methods based on
  checkout attributes, customer data, or other business logic implemented in your Function.
  """
  paymentMethodHide: PaymentMethodHideOperation

  """
  A request to move a payment method to a new position in the checkout display order.

  When your Function returns this operation, it changes the display order of payment methods
  by placing the specified payment method at the requested index position.

  Use this operation when you want to prioritize certain payment methods based on
  checkout context, customer preferences, or other business logic implemented in your Function.
  """
  paymentMethodMove: PaymentMethodMoveOperation

  """
  A request to change the displayed name of a payment method during checkout.

  When your Function returns this operation, it replaces the default name of the
  specified payment method with the custom name that's provided in the request.

  Use this operation when you want to provide more context or clarity about
  payment methods based on checkout details, locale, or other business logic
  implemented in your Function.
  """
  paymentMethodRename: PaymentMethodRenameOperation

  """
  A request to set, modify, or remove payment terms for a checkout.

  When your Function returns this operation, it customizes the payment conditions
  presented to the customer at checkout, allowing for net terms, fixed due dates, and
  event-based terms. You can also specify deposit requirements.

  Use this operation to conditionally impose payment terms based on customer attributes,
  order value, or other business logic.

  This operation is only available on stores with the Plus plan.
  """
  paymentTermsSet: PaymentTermsSetOperation
}

"""
A request to impose a review requirement on the order.

When your Function returns this operation, the checkout will be submitted as a draft,
requiring merchant review and approval to finalize the order.

Use this operation to implement custom business rules that require manual review
before order completion, such as high-value orders, or orders with specific products.

This operation is only available for B2B purchases on stores with the Plus plan.
"""
input OrderReviewAddOperation {
  """
  The reason for the review requirement presented to the merchant.
  """
  reason: String!
}

"""
A customization representing how payment methods will be ordered, hidden, or renamed.
"""
type PaymentCustomization implements HasMetafields {
  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield
}

type PaymentCustomizationPaymentMethod {
  """
  Unique identifier for the payment method.
  """
  id: ID!

  """
  Name for the payment method.
  """
  name: String!

  """
  Placements supported by this payment method.
  Only available for API clients installed on a Shopify Plus store.
  """
  placements: [PaymentCustomizationPaymentMethodPlacement!]!
}

"""
Describes how a payment method can be applied at checkout.
Only available for API clients installed on a Shopify Plus store.
"""
enum PaymentCustomizationPaymentMethodPlacement {
  """
  Accelerated checkout button in the Express section of checkout. You can use payment methods to accelerate
  customers through checkout by prefilling delivery and payment information.
  """
  ACCELERATED_CHECKOUT

  """
  Payment method can be selected from a list of available payment methods in the payment section of checkout.
  """
  PAYMENT_METHOD
}

"""
A request to hide a payment method during checkout.

When your Function returns this operation, it removes the specified payment method
from the available options shown to customers during checkout.

Use this operation when you want to conditionally hide payment methods based on
checkout attributes, customer data, or other business logic implemented in your Function.
"""
input PaymentMethodHideOperation {
  """
  The identifier of the payment method to hide out.
  """
  paymentMethodId: ID!

  """
  Placement types to hide. If not provided, all placements will be hidden.
  """
  placements: [PaymentCustomizationPaymentMethodPlacement!]
}

"""
A request to move a payment method to a new position in the checkout display order.

When your Function returns this operation, it changes the display order of payment methods
by placing the specified payment method at the requested index position.

Use this operation when you want to prioritize certain payment methods based on
checkout context, customer preferences, or other business logic implemented in your Function.
"""
input PaymentMethodMoveOperation {
  """
  The index to move the payment method to.
  """
  index: Int!

  """
  The identifier of the payment method to move.
  """
  paymentMethodId: ID!
}

"""
A request to change the displayed name of a payment method during checkout.

When your Function returns this operation, it replaces the default name of the
specified payment method with the custom name that's provided in the request.

Use this operation when you want to provide more context or clarity about
payment methods based on checkout details, locale, or other business logic
implemented in your Function.
"""
input PaymentMethodRenameOperation {
  """
  The new name for the payment method.
  """
  name: String!

  """
  The identifier of the payment method to rename.
  """
  paymentMethodId: ID!
}

"""
The payment terms to set.
"""
input PaymentTerms @oneOf {
  """
  The input to set event-based payment terms.
  """
  event: EventPaymentTerms

  """
  The input to set fixed payment terms.
  """
  fixed: FixedPaymentTerms

  """
  The input to set net payment terms.
  """
  net: NetPaymentTerms
}

"""
A request to set, modify, or remove payment terms for a checkout.

When your Function returns this operation, it customizes the payment conditions
presented to the customer at checkout, allowing for net terms, fixed due dates, and
event-based terms. You can also specify deposit requirements.

Use this operation to conditionally impose payment terms based on customer attributes,
order value, or other business logic.

This operation is only available on stores with the Plus plan.
"""
input PaymentTermsSetOperation {
  """
  The payment terms to set. No payment terms when nil
  """
  paymentTerms: PaymentTerms
}

"""
The event that triggers the payment terms.
"""
enum PaymentTermsTriggerEvent {
  """
  Triggered when a fulfillment is created.
  """
  FULFILLMENT_CREATED

  """
  Triggered when an invoice is sent.
  """
  INVOICE_SENT

  """
  Triggered when an order is fulfilled.
  """
  ORDER_FULFILLED
}

"""
The goods and services that merchants offer to customers. Products can include details such as
title, vendor, and custom data stored in [metafields](https://shopify.dev/docs/apps/build/custom-data).
Products can be organized by grouping them into a collection.

Learn more about [managing products in a merchant's store](https://help.shopify.com/manual/products).
"""
type Product implements HasMetafields {
  """
  A unique, human-readable string of the product's title. A handle can contain letters, hyphens (`-`), and
  numbers, but not spaces. The handle is used in the online store URL for the product. For example, if a product
  is titled "Black Sunglasses", then the handle is `black-sunglasses`.
  """
  handle: Handle!

  """
  Whether the product is associated with any of the specified tags. The product must have at least one tag
  from the list to return `true`.
  """
  hasAnyTag(
    """
    A comma-separated list of searchable keywords that are associated with the product. For example,
    `"sports, summer"` returns products with either the `sports` or `summer` tag.
    """
    tags: [String!]! = []
  ): Boolean!

  """
  Whether the product is associated with the specified tags.
  """
  hasTags(
    """
    A comma-separated list of searchable keywords that are associated with the product. For example,
    `"sports, summer"` returns products with both the `sports` and `summer` tags.
    """
    tags: [String!]! = []
  ): [HasTagResponse!]!

  """
  A [globally-unique ID](https://shopify.dev/docs/api/usage/gids)
  for the product.
  """
  id: ID!

  """
  Whether the product is in any of the specified collections. The product must be in at least one collection
  from the list to return `true`.

  A collection is a group of products that can be displayed in online stores and other sales channels in
  categories, which makes it easy for customers to find them. For example, an athletics store might create
  different collections for running attire and accessories.
  """
  inAnyCollection(
    """
    A comma-separated list of [globally-unique collection IDs](https://shopify.dev/docs/api/usage/gids)
    that are associated with the product. For example, `gid://shopify/Collection/123`, `gid://shopify/Collection/456`.
    """
    ids: [ID!]! = []
  ): Boolean!

  """
  Whether the product is in the specified collections. The product must be in all of the collections in the
  list to return `true`.

  A collection is a group of products that can be displayed in online stores and other sales channels in
  categories, which makes it easy for customers to find them. For example, an athletics store might create
  different collections for running attire and accessories.
  """
  inCollections(
    """
    A comma-separated list of [globally-unique collection IDs](https://shopify.dev/docs/api/usage/gids)
    that are associated with the product. For example, `gid://shopify/Collection/123`, `gid://shopify/Collection/456`.
    """
    ids: [ID!]! = []
  ): [CollectionMembership!]!

  """
  Whether the product is a gift card.
  """
  isGiftCard: Boolean!

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  A custom category for a product. Product types allow merchants to define categories other than the
  ones available in Shopify's
  [standard product categories](https://help.shopify.com/manual/products/details/product-type).
  """
  productType: String

  """
  The localized name for the product that displays to customers. The title is used to construct the product's
  handle, which is a unique, human-readable string of the product's title. For example, if a product is titled
  "Black Sunglasses", then the handle is `black-sunglasses`.
  """
  title: String!

  """
  The name of the product's vendor.
  """
  vendor: String
}

"""
A specific version of a product that comes in more than one option, such as size or color. For example,
if a merchant sells t-shirts with options for size and color, then a small, blue t-shirt would be one
product variant and a large, blue t-shirt would be another.
"""
type ProductVariant implements HasMetafields {
  """
  A [globally-unique ID](https://shopify.dev/docs/api/usage/gids)
  for the product variant.
  """
  id: ID!

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  The product associated with the product variant. For example, if a
  merchant sells t-shirts with options for size and color, then a small,
  blue t-shirt would be one product variant and a large, blue t-shirt would be another.
  The product associated with the product variant would be the t-shirt itself.
  """
  product: Product!

  """
  Whether the item needs to be shipped to the customer. For example, a
  digital gift card doesn't need to be shipped, but a t-shirt does
  need to be shipped.
  """
  requiresShipping: Boolean!

  """
  A case-sensitive identifier for the product variant in the merchant's store. For example, `"BBC-1"`.
  A product variant must have a SKU to be connected to a
  [fulfillment service](https://shopify.dev/docs/apps/build/orders-fulfillment/fulfillment-service-apps/build-for-fulfillment-services).
  """
  sku: String

  """
  The localized name for the product variant that displays to customers.
  """
  title: String

  """
  The product variant's weight, in the system of measurement set in the `weightUnit` field.
  """
  weight: Float

  """
  The unit of measurement for weight.
  """
  weightUnit: WeightUnit!
}

"""
The company of a B2B customer that's interacting with the cart.
Used to manage and track purchases made by businesses rather than individual customers.
"""
type PurchasingCompany {
  """
  The company associated to the order or draft order.
  """
  company: Company!

  """
  The company contact associated to the order or draft order.
  """
  contact: CompanyContact

  """
  The company location associated to the order or draft order.
  """
  location: CompanyLocation!
}

"""
A request to change the displayed name of a payment method during checkout.

When your Function returns this operation, it replaces the default name of the
specified payment method with the custom name that's provided in the request.

Use this operation when you want to provide more context or clarity about
payment methods based on checkout details, locale, or other business logic
implemented in your Function.
"""
input RenameOperation {
  """
  The new name for the payment method.
  """
  name: String!

  """
  The identifier of the payment method to rename.
  """
  paymentMethodId: ID!
}

"""
Represents how products and variants can be sold and purchased.
"""
type SellingPlan implements HasMetafields {
  """
  The description of the selling plan.
  """
  description: String

  """
  A globally-unique identifier.
  """
  id: ID!

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield

  """
  The name of the selling plan. For example, '6 weeks of prepaid granola, delivered weekly'.
  """
  name: String!

  """
  Whether purchasing the selling plan will result in multiple deliveries.
  """
  recurringDeliveries: Boolean!
}

"""
Represents an association between a variant and a selling plan. Selling plan
allocations describe the options offered for each variant, and the price of the
variant when purchased with a selling plan.
"""
type SellingPlanAllocation {
  """
  A list of price adjustments, with a maximum of two. When there are two, the
  first price adjustment goes into effect at the time of purchase, while the
  second one starts after a certain number of orders. A price adjustment
  represents how a selling plan affects pricing when a variant is purchased with
  a selling plan. Prices display in the customer's currency if the shop is
  configured for it.
  """
  priceAdjustments: [SellingPlanAllocationPriceAdjustment!]!

  """
  A representation of how products and variants can be sold and purchased. For
  example, an individual selling plan could be '6 weeks of prepaid granola,
  delivered weekly'.
  """
  sellingPlan: SellingPlan!
}

"""
The resulting prices for variants when they're purchased with a specific selling plan.
"""
type SellingPlanAllocationPriceAdjustment {
  """
  The effective price for a single delivery. For example, for a prepaid
  subscription plan that includes 6 deliveries at the price of $48.00, the per
  delivery price is $8.00.
  """
  perDeliveryPrice: MoneyV2!

  """
  The price of the variant when it's purchased with a selling plan For example,
  for a prepaid subscription plan that includes 6 deliveries of $10.00 granola,
  where the customer gets 20% off, the price is 6 x $10.00 x 0.80 = $48.00.
  """
  price: MoneyV2!
}

"""
Information about the store, including the store's timezone setting
and custom data stored in [metafields](https://shopify.dev/docs/apps/build/custom-data).
"""
type Shop implements HasMetafields {
  """
  The current time based on the
  [store's timezone setting](https://help.shopify.com/manual/intro-to-shopify/initial-setup/setup-business-settings).
  """
  localTime: LocalTime!

  """
  A [custom field](https://shopify.dev/docs/apps/build/custom-data) that stores additional information
  about a Shopify resource, such as products, orders, and
  [many more](https://shopify.dev/docs/api/admin-graphql/latest/enums/MetafieldOwnerType).
  Using [metafields with Shopify Functions](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries)
  enables you to customize the checkout experience.
  """
  metafield(
    """
    The unique identifier for the metafield within its namespace. A metafield is composed of a
    namespace and a key, in the format `namespace.key`.
    """
    key: String!

    """
    A category that organizes a group of metafields. Namespaces are used to prevent naming conflicts
    between different apps or different parts of the same app. If omitted, then the
    [app-reserved namespace](https://shopify.dev/docs/apps/build/custom-data/ownership)
    is used.
    """
    namespace: String
  ): Metafield
}

"""
A subset of the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format that
includes the time but not the date or timezone which is determined from context.
For example, "05:43:21".
"""
scalar TimeWithoutTimezone

"""
A void type that can be used to return a null value from a mutation.
"""
scalar Void

"""
Units of measurement for weight.
"""
enum WeightUnit {
  """
  Metric system unit of mass.
  """
  GRAMS

  """
  1 kilogram equals 1000 grams.
  """
  KILOGRAMS

  """
  Imperial system unit of mass.
  """
  OUNCES

  """
  1 pound equals 16 ounces.
  """
  POUNDS
}
