| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901 | directive @goTag(    key: String!    value: String) on INPUT_FIELD_DEFINITION | FIELD_DEFINITIONdirective @goField(    forceResolver: Boolean,    name: String) on INPUT_FIELD_DEFINITION | FIELD_DEFINITIONscalar DateTimescalar UnsignedInt64scalar HTML# A JSON object.scalar JSON# A signed decimal number, which supports arbitrary precision and is serialized as a string.scalar Decimal# Represents an RFC 3986 and# RFC 3987-compliant URI string.## For example, 'https://johns-apparel.myshopify.com' is a valid URL. It includes a scheme (https) and a host# (johns-apparel.myshopify.com).scalar URLunion MetafieldParentResource = Collection | Product | ProductVariantunion MetafieldReference = Collection | Product | ProductVariantunion SellingPlanCheckoutChargeValue = MoneyV2 | SellingPlanCheckoutChargePercentageValue# Represents by how much the price of a variant associated with a selling plan is adjusted. Each variant can have up to two price adjustments.union SellingPlanPriceAdjustmentValue = SellingPlanFixedAmountPriceAdjustment | SellingPlanFixedPriceAdjustment | SellingPlanPercentagePriceAdjustmenttype Query {    collections(        after: String,        before: String,        first: Int,        last: Int,        query: String,        reverse: Boolean = false,        sortKey: CollectionSortKeys = ID    ): CollectionConnection!    product(handle: String id: ID): Product}# An auto-generated type for paginating through multiple Collections.type CollectionConnection {    # A list of edges.    edges: [CollectionEdge!]!    # A list of the nodes contained in CollectionEdge.    nodes: [Collection!]!    # Information to aid in pagination.    pageInfo: PageInfo!}type CollectionEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of CollectionEdge.    node: Collection!}# A collection represents a grouping of products that a shop owner can create to organize them or make their shops easier to browse.type Collection implements HasMetafields&Node&OnlineStorePublishable {    # Stripped description of the collection, single line with HTML tags removed.    description(truncateAt: Int): String! @goField(forceResolver: true)    # The description of the collection, complete with HTML formatting.    descriptionHtml: HTML!    # A human-friendly unique string for the collection automatically generated from its title. Limit of 255 characters.    handle: String!    # A globally-unique identifier.    id: ID!    # Image associated with the collection.    image: Image    # Returns a metafield found by namespace and key.    metafield(key: String! namespace: String!): Metafield    # The metafields associated with the resource matching the supplied list of namespaces and keys.    metafields(identifiers: [HasMetafieldsIdentifier!]!): [Metafield]!    # The URL used for viewing the resource on the shop's Online Store. Returns null if the resource is currently not published to the Online Store sales channel.    onlineStoreUrl: URL    # List of products in the collection.    products(        after: String        before: String        filters: [ProductFilter!]        first: Int        last: Int        reverse: Boolean = false        sortKey: ProductCollectionSortKeys = COLLECTION_DEFAULT    ): ProductConnection! @goField(forceResolver: true)    # The collection's SEO information.    seo: SEO!    # The collection’s name. Limit of 255 characters.    title: String!    # The date and time when the collection was last modified.    updatedAt: DateTime!}# An object with an ID field to support global identification, in accordance with the# Relay specification.# This interface is used by the node# and nodes queries.interface Node {    # A globally-unique identifier.    id: ID!}# Represents information about the metafields associated to the specified resource.interface HasMetafields {    # Returns a metafield found by namespace and key.    metafield(namespace: String!key: String!): Metafield    # The metafields associated with the resource matching the supplied list of namespaces and keys.    metafields(identifiers: [HasMetafieldsIdentifier!]!): [Metafield]!}# Represents a resource that can be published to the Online Store sales channel.interface OnlineStorePublishable {    # The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.    onlineStoreUrl: URL}# Represents a media interface.interface Media {    # A word or phrase to share the nature or contents of a media.    alt: String    # The media content type.    mediaContentType: MediaContentType!    # The preview image for the media.    previewImage: Image}type ProductConnection {    # A list of edges.    edges: [ProductEdge!]!    # A list of available filters.    filters: [Filter!]!    # A list of the nodes contained in ProductEdge.    nodes: [Product!]!    # Information to aid in pagination.    pageInfo: PageInfo!}type ProductEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of ProductEdge.    node: Product!}# A product represents an individual item for sale in a Shopify store. Products are often physical, but they don't have to be.# For example, a digital download (such as a movie, music or ebook file) also qualifies as a product, as do services (such as equipment rental, work for hire, customization of another product or an extended warranty).type Product implements HasMetafields&Node&OnlineStorePublishable {    # Indicates if at least one product variant is available for sale.    availableForSale: Boolean!    # List of collections a product belongs to.    collections(        after: String        before: String        first: Int        last: Int        reverse: Boolean = false    ): CollectionConnection! @goField(forceResolver: true)    # The compare at price of the product across all variants.    compareAtPriceRange: ProductPriceRange!    # The date and time when the product was created.    createdAt: DateTime!    # Stripped description of the product, single line with HTML tags removed.    description(truncateAt: Int): String! @goField(forceResolver: true)    # The description of the product, complete with HTML formatting.    descriptionHtml: HTML!    # The featured image for the product. This field is functionally equivalent to images(first: 1).    featuredImage: Image    # A human-friendly unique string for the Product automatically generated from its title. They are used by the Liquid templating language to refer to objects.    handle: String!    # A globally-unique identifier.    id: ID!    # List of images associated with the product.    images(        after: String        before: String        first: Int        last: Int        reverse: Boolean = false        sortKey: ProductImageSortKeys = POSITION    ): ImageConnection!    # Whether the product is a gift card.    isGiftCard: Boolean!    # The media associated with the product.    media(        after: String        before: String        first: Int        last: Int        reverse: Boolean = false        sortKey: ProductMediaSortKeys = POSITION    ): MediaConnection!    # Returns a metafield found by namespace and key.    metafield(key: String!namespace: String!): Metafield    # The metafields associated with the resource matching the supplied list of namespaces and keys.    metafields(identifiers: [HasMetafieldsIdentifier!]!): [Metafield]!    # The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.    onlineStoreUrl: URL    # List of product options.    options(first: Int): [ProductOption!]! @goField(forceResolver: true)    # The price range.    priceRange: ProductPriceRange!    # A categorization that a product can be tagged with, commonly used for filtering and searching.    productType: String!    # The date and time when the product was published to the channel.    publishedAt: DateTime!    # Whether the product can only be purchased with a selling plan.    requiresSellingPlan: Boolean!    # A list of a product's available selling plan groups. A selling plan group represents a selling method. For example, 'Subscribe and save' is a selling method where customers pay for goods or services per delivery. A selling plan group contains individual selling plans.    sellingPlanGroups(        first: Int        after: String        last: Int        before: String        reverse: Boolean = false    ): SellingPlanGroupConnection!    # The product's SEO information.    seo: SEO!    # A comma separated list of tags that have been added to the product. Additional access scope required for private apps: unauthenticated_read_product_tags.    tags: [String!]!    # The product’s title.    title: String!    # The total quantity of inventory in stock for this Product.    totalInventory: Int    # The date and time when the product was last modified.    # A product's `updatedAt` value can change for different reasons. For example, if an order    # is placed for a product that has inventory tracking set up, then the inventory adjustment    # is counted as an update.    updatedAt: DateTime!    # Find a product’s variant based on its selected options.    # This is useful for converting a user’s selection of product options into a single matching variant.    # If there is not a variant for the selected options, `null` will be returned.    variantBySelectedOptions(selectedOptions: [SelectedOptionInput!]!): ProductVariant    # List of the product’s variants.    variants(        first: Int        after: String        last: Int        before: String        reverse: Boolean = false        sortKey: ProductVariantSortKeys = POSITION    ): ProductVariantConnection! @goField(forceResolver: true)    # The product’s vendor name.    vendor: String!}# The price range of the product.type ProductPriceRange {    # The highest variant's price.    maxVariantPrice: MoneyV2!    # The lowest variant's price.    minVariantPrice: MoneyV2!}# Product property names like 'Size', 'Color', and 'Material' that the customers can select.# Variants are selected based on permutations of these options.# 255 characters limit each.type ProductOption implements Node {    # A globally-unique identifier.    id: ID!    # The product option’s name.    name: String!    # The corresponding value to the product option name.    values: [String!]!}# A monetary value with currency.type MoneyV2 {    # Decimal money amount.    amount: Decimal!    # Currency of the money.    currencyCode: CurrencyCode!}# A filter that is supported on the parent field.type Filter {    # A unique identifier.    id: String!    # A human-friendly string for this filter.    label: String!    # An enumeration that denotes the type of data this filter represents.    type: FilterType!}# SEO information.type SEO {    # The meta description.    description: String    # The SEO title.    title: String}# An auto-generated type for paginating through multiple Media.type MediaConnection {    # A list of edges.    edges: [MediaEdge!]!    # A list of the nodes contained in MediaEdge.    nodes: [Media!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one Media and a cursor during pagination.type MediaEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of MediaEdge.    node: Media!}# Represents an image resource.type Image {    # A word or phrase to share the nature or contents of an image.    altText: String    # The original height of the image in pixels. Returns `null` if the image is not hosted by Shopify.    height: Int    # A unique identifier for the image.    id: ID    # The location of the image as a URL.    # If no transform options are specified, then the original image will be preserved including any pre-applied transforms.    # All transformation options are considered 'best-effort'. Any transformation that the original image type doesn't support will be ignored.    # If you need multiple variations of the same image, then you can use GraphQL aliases.    url(transform: ImageTransformInput): URL!    # The original width of the image in pixels. Returns null if the image is not hosted by Shopify.    width: Int    # The location of the original image as a URL.    #    # If there are any existing transformations in the original source URL, they will remain and not be stripped. Use url instead.    originalSrc: URL! @deprecated    # The location of the image as a URL. Use url instead.    src: URL! @deprecated    # The location of the transformed image as a URL.    # All transformation arguments are considered 'best-effort'. If they can be applied to an image, they will be. Otherwise any transformations which an image type does not support will be ignored. Use `url(transform:)` instead    transformedSrc: URL! @deprecated}# An auto-generated type for paginating through multiple Images.type ImageConnection {    # A list of edges.    edges: [ImageEdge!]!    # A list of the nodes contained in ImageEdge.    nodes: [Image!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one Image and a cursor during pagination.type ImageEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of ImageEdge.    node: Image!}# An auto-generated type for paginating through multiple SellingPlanGroups.type SellingPlanGroupConnection {    # A list of edges.    edges: [SellingPlanGroupEdge!]!    # A list of the nodes contained in SellingPlanGroupEdge.    nodes: [SellingPlanGroup!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one SellingPlanGroup and a cursor during pagination.type SellingPlanGroupEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of SellingPlanGroupEdge.    node: SellingPlanGroup!}# Represents a selling method. For example, 'Subscribe and save' is a selling method where customers pay for goods or services per delivery. A selling plan group contains individual selling plans.type SellingPlanGroup {    # A display friendly name for the app that created the selling plan group.    appName: String    # The name of the selling plan group.    name: String!    # Represents the selling plan options available in the drop-down list in the storefront. For example, 'Delivery every week' or 'Delivery every 2 weeks' specifies the delivery frequency options for the product.    options: [SellingPlanGroupOption!]!    # A list of selling plans in a selling plan group. A selling plan is 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'.    sellingPlans(        first: Int        after: String        last: Int        before: String        reverse: Boolean = false    ): SellingPlanConnection!}# Represents an option on a selling plan group that's available in the drop-down list in the storefront.## Individual selling plans contribute their options to the associated selling plan group. For example, a selling plan group might have an option called option1: Delivery every. One selling plan in that group could contribute option1: 2 weeks with the pricing for that option, and another selling plan could contribute option1: 4 weeks, with different pricing.type SellingPlanGroupOption {    # The name of the option. For example, 'Delivery every'.    name: String!    # The values for the options specified by the selling plans in the selling plan group. For example, '1 week', '2 weeks', '3 weeks'.    values: [String!]!}# An auto-generated type for paginating through multiple SellingPlans.type SellingPlanConnection {    # A list of edges.    edges: [SellingPlanEdge!]!    # A list of the nodes contained in SellingPlanEdge.    nodes: [SellingPlan!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one SellingPlan and a cursor during pagination.type SellingPlanEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of SellingPlanEdge.    node: SellingPlan!}# Represents how products and variants can be sold and purchased.type SellingPlan implements Node {    # The initial payment due for the purchase.    checkoutCharge: SellingPlanCheckoutCharge!    # The description of the selling plan.    description: String    # A globally-unique identifier.    id: ID!    # The name of the selling plan. For example, '6 weeks of prepaid granola, delivered weekly'.    name: String!    # The selling plan options available in the drop-down list in the storefront. For example, 'Delivery every week' or 'Delivery every 2 weeks' specifies the delivery frequency options for the product. Individual selling plans contribute their options to the associated selling plan group. For example, a selling plan group might have an option called option1: Delivery every. One selling plan in that group could contribute option1: 2 weeks with the pricing for that option, and another selling plan could contribute option1: 4 weeks, with different pricing.    options: [SellingPlanOption!]!    # The price adjustments that a selling plan makes when a variant is purchased with a selling plan.    priceAdjustments: [SellingPlanPriceAdjustment!]!    # Whether purchasing the selling plan will result in multiple deliveries.    recurringDeliveries: Boolean!}# The initial payment due for the purchase.type SellingPlanCheckoutCharge {    # The charge type for the checkout charge.    type: SellingPlanCheckoutChargeType!    # The charge value for the checkout charge.    value: SellingPlanCheckoutChargeValue!}# The percentage value of the price used for checkout charge.type SellingPlanCheckoutChargePercentageValue {    # The percentage value of the price used for checkout charge.    percentage: Float!}# An option provided by a Selling Plan.type SellingPlanOption {    # The name of the option (ie 'Delivery every').    name: String    # The value of the option (ie 'Month').    value: String}# Represents by how much the price of a variant associated with a selling plan is adjusted. Each variant can have up to two price adjustments. If a variant has multiple price adjustments, then the first price adjustment applies when the variant is initially purchased. The second price adjustment applies after a certain number of orders (specified by the `orderCount` field) are made. If a selling plan doesn't have any price adjustments, then the unadjusted price of the variant is the effective price.type SellingPlanPriceAdjustment {    # The type of price adjustment. An adjustment value can have one of three types: percentage, amount off, or a new price.    adjustmentValue: SellingPlanPriceAdjustmentValue!    # The number of orders that the price adjustment applies to. If the price adjustment always applies, then this field is `null`.    orderCount: Int}# A fixed amount that's deducted from the original variant price. For example, $10.00 off.type SellingPlanFixedAmountPriceAdjustment {    # The money value of the price adjustment.    adjustmentAmount: MoneyV2!}# A fixed price adjustment for a variant that's purchased with a selling plan.type SellingPlanFixedPriceAdjustment {    # A new price of the variant when it's purchased with the selling plan.    price: MoneyV2!}# A percentage amount that's deducted from the original variant price. For example, 10% off.type SellingPlanPercentagePriceAdjustment {    # The percentage value of the price adjustment.    adjustmentPercentage: Int!}# A product variant represents a different version of a product, such as differing sizes or differing colors.type ProductVariant implements Node&HasMetafields {    # Indicates if the product variant is available for sale.    availableForSale: Boolean!    # The barcode (for example, ISBN, UPC, or GTIN) associated with the variant.    barcode: String    # The compare at price of the variant. This can be used to mark a variant as on sale, when `compareAtPrice` is higher than `price`.    compareAtPrice: MoneyV2    # Whether a product is out of stock but still available for purchase (used for backorders).    currentlyNotInStock: Boolean!    # A globally-unique identifier.    id: ID!    # Image associated with the product variant. This field falls back to the product image if no image is available.    image: Image    # Returns a metafield found by namespace and key.    metafield(namespace: String!key: String!): Metafield    # The metafields associated with the resource matching the supplied list of namespaces and keys.    metafields(identifiers: [HasMetafieldsIdentifier!]!): [Metafield]!    # The product variant’s price.    price: MoneyV2!    # The product object that the product variant belongs to.    product: Product!    # The total sellable quantity of the variant for online sales channels.    quantityAvailable: Int    # Whether a customer needs to provide a shipping address when placing an order for the product variant.    requiresShipping: Boolean!    # List of product options applied to the variant.    selectedOptions: [SelectedOption!]!    # Represents an association between a variant and a selling plan. Selling plan allocations describe which selling plans are available for each variant, and what their impact is on pricing.    sellingPlanAllocations(        first: Int        after: String        last: Int        before: String        reverse: Boolean = false    ): SellingPlanAllocationConnection!    # The SKU (stock keeping unit) associated with the variant.    sku: String    # The in-store pickup availability of this variant by location.    storeAvailability(        first: Int        after: String        last: Int        before: String        reverse: Boolean = false    ): StoreAvailabilityConnection!    # The product variant’s title.    title: String!    # The unit price value for the variant based on the variant's measurement.    unitPrice: MoneyV2    # The unit price measurement for the variant.    unitPriceMeasurement: UnitPriceMeasurement    # The weight of the product variant in the unit system specified with `weight_unit`.    weight: Float    # Unit of measurement for weight.    weightUnit: WeightUnit!}# Properties used by customers to select a product variant.# Products can have multiple options, like different sizes or colors.type SelectedOption {    # The product option’s name.    name: String!    # The product option’s value.    value: String!}# An auto-generated type for paginating through multiple SellingPlanAllocations.type SellingPlanAllocationConnection {    # A list of edges.    edges: [SellingPlanAllocationEdge!]!    # A list of the nodes contained in SellingPlanAllocationEdge.    nodes: [SellingPlanAllocation!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one SellingPlanAllocation and a cursor during pagination.type SellingPlanAllocationEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of SellingPlanAllocationEdge.    node: SellingPlanAllocation!}# 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 {    # The checkout charge amount due for the purchase.    checkoutChargeAmount: MoneyV2!    # 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!]!    # The remaining balance charge amount due for the purchase.    remainingBalanceChargeAmount: MoneyV2!    # 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 price of the variant when it's purchased without a selling plan for the same number of deliveries. For example, if a customer purchases 6 deliveries of $10.00 granola separately, then the price is 6 x $10.00 = $60.00.    compareAtPrice: MoneyV2!    # 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!    # The resulting price per unit for the variant associated with the selling plan. If the variant isn't sold by quantity or measurement, then this field returns `null`.    unitPrice: MoneyV2}# An auto-generated type for paginating through multiple StoreAvailabilities.type StoreAvailabilityConnection {    # A list of edges.    edges: [StoreAvailabilityEdge!]!    # A list of the nodes contained in StoreAvailabilityEdge.    nodes: [StoreAvailability!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one StoreAvailability and a cursor during pagination.type StoreAvailabilityEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of StoreAvailabilityEdge.    node: StoreAvailability!}# The availability of a product variant at a particular location.# Local pick-up must be enabled in the store's shipping settings, otherwise this will return an empty result.type StoreAvailability {    # Whether the product variant is in-stock at this location.    available: Boolean!    # The location where this product variant is stocked at.    location: Location!    # Returns the estimated amount of time it takes for pickup to be ready (Example: Usually ready in 24 hours).    pickUpTime: String!}# Represents a location where product inventory is held.type Location implements Node {    # The address of the location.    address: LocationAddress!    # A globally-unique identifier.    id: ID!    # 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 latitude coordinates of the location.    latitude: Float    # The 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}# The measurement used to calculate a unit price for a product variant (e.g. $9.99 / 100ml).type UnitPriceMeasurement {    # The type of unit of measurement for the unit price measurement.    measuredType: UnitPriceMeasurementMeasuredType    # The quantity unit for the unit price measurement.    quantityUnit: UnitPriceMeasurementMeasuredUnit    # The quantity value for the unit price measurement.    quantityValue: Float!    # The reference unit for the unit price measurement.    referenceUnit: UnitPriceMeasurementMeasuredUnit    # The reference value for the unit price measurement.    referenceValue: Int!}# The available options for transforming an image.# All transformation options are considered best effort. Any transformation that the original image type doesn't support will be ignored.input ImageTransformInput {    # The region of the image to remain after cropping.    # Must be used in conjunction with the maxWidth and/or maxHeight fields, where the maxWidth and maxHeight aren't equal.    # The crop argument should coincide with the smaller value. A smaller maxWidth indicates a LEFT or RIGHT crop, while    # a smaller maxHeight indicates a TOP or BOTTOM crop. For example, { maxWidth: 5, maxHeight: 10, crop: LEFT } will result    # in an image with a width of 5 and height of 10, where the right side of the image is removed.    crop: CropRegion    # Image width in pixels between 1 and 5760.    maxWidth: Int    # Image height in pixels between 1 and 5760.    maxHeight: Int    # Image size multiplier for high-resolution retina displays. Must be within 1..3.    scale: Int = 1    # Convert the source image into the preferred content type.    # Supported conversions: .svg to .png, any file type to .jpg, and any file type to .webp.    preferredContentType: ImageContentType}# Identifies a metafield on an owner resource by namespace and key.input HasMetafieldsIdentifier {    # A container for a set of metafields.    namespace: String!    # The identifier for the metafield.    key: String!}input ProductFilter {    # Filter on if the product is available for sale.    available: Boolean    # A variant option to filter on.    variantOption: VariantOptionFilter    # The product type to filter on.    productType: String    # The product vendor to filter on.    productVendor: String    # A range of prices to filter with-in.    price: PriceRangeFilter    # A product metafield to filter on.    productMetafield: MetafieldFilter    # A variant metafield to filter on.    variantMetafield: MetafieldFilter}# A filter used to view a subset of products in a collection matching a specific price range.input PriceRangeFilter {    # The minimum price in the range. Defaults to zero.    min: Float = 0    # The maximum price in the range. Empty indicates no max price.    max: Float}input VariantOptionFilter {    # The name of the variant option to filter on.    name: String!    # The value of the variant option to filter on.    value: String!}# Specifies the input fields required for a selected option.input SelectedOptionInput {    # The product option’s name.    name: String!    # The product option’s value.    value: String!}# Metafields represent custom metadata attached to a resource.# Metafields can be sorted into namespaces and are comprised of keys, values, and value types.type Metafield implements Node {    # The date and time when the storefront metafield was created.    createdAt: DateTime!    # The description of a metafield.    description: String    # A globally-unique identifier.    id: ID!    # The key name for a metafield.    key: String!    # The namespace for a metafield.    namespace: String!    # The parent object that the metafield belongs to.    parentResource: MetafieldParentResource!    # Returns a reference object if the metafield definition's type is a resource reference.    reference: MetafieldReference    # A list of reference objects if the metafield's type is a resource reference list.    references(        first: Int        after: String        last: Int        before: String    ): MetafieldReferenceConnection    # The type name of the metafield. See the list of supported types.    type: String!    # The date and time when the storefront metafield was updated.    updatedAt: DateTime!    # The value of a metafield.    value: String!}# An auto-generated type for paginating through multiple MetafieldReferences.type MetafieldReferenceConnection {    # A list of edges.    edges: [MetafieldReferenceEdge!]!    # A list of the nodes contained in MetafieldReferenceEdge.    nodes: [MetafieldReference!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# Returns information about pagination in a connection, in accordance with the Relay specification.type PageInfo {    # The cursor corresponding to the last node in edges.    endCursor: String    # Whether there are more pages to fetch following the current page.    hasNextPage: Boolean!    # Whether there are any pages prior to the current page.    hasPreviousPage: Boolean!    # The cursor corresponding to the first node in edges.    startCursor: String}type MetafieldReferenceEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of MetafieldReferenceEdge.    node: MetafieldReference!}# A filter used to view a subset of products in a collection matching a specific metafield value.## Only the following metafield types are currently supported:## number_integer# number_decimal# single_line_text_field# boolean as of 2022-04.input MetafieldFilter {    # The namespace of the metafield to filter on.    namespace: String!    # The key of the metafield to filter on.    key: String!    # The value of the metafield.    value: String!}enum CollectionSortKeys {    # Sort by the `id` value.    ID,    # Sort by relevance to the search terms when the `query` parameter is specified on the connection. Don't use this sort key when no search query is specified.    RELEVANCE,    # Sort by the `title` value.    TITLE,    # Sort by the `updated_at` value.    UPDATED_AT}enum CollectionSortOrder {    # Alphabetically, in ascending order (A - Z).    ALPHA_ASC,    # Alphabetically, in descending order (Z - A).    ALPHA_DESC,    # By best-selling products.    BEST_SELLING,    # By date created, in ascending order (oldest - newest).    CREATED,    # By date created, in descending order (newest - oldest).    CREATED_DESC,    # In the order set manually by the merchant.    MANUAL,    # By price, in ascending order (lowest - highest).    PRICE_ASC,    # By price, in descending order (highest - lowest).    PRICE_DESC}enum ProductCollectionSortKeys {    # Sort by the `best-selling` value.    BEST_SELLING,    # Sort by the `collection-default` value.    COLLECTION_DEFAULT,    # Sort by the `created` value.    CREATED,    # Sort by the `id` value.    ID,    # Sort by the `manual` value.    MANUAL,    # Sort by the `price` value.    PRICE,    # Sort by relevance to the search terms when the `query` parameter is specified on the connection. Don't use this sort key when no search query is specified.    RELEVANCE,    # Sort by the `title` value.    TITLE}# List of supported image content types.enum ImageContentType {    # A PNG image.    PNG    # A JPG image.    JPG    # A WEBP image.    WEBP}# The part of the image that should remain after cropping.enum CropRegion {    # Keep the center of the image.    CENTER    # Keep the top of the image.    TOP    # Keep the bottom of the image.    BOTTOM    # Keep the left of the image.    LEFT    # Keep the right of the image.    RIGHT}# The type of data that the filter group represents.## For more information, refer to [Filter products in a collection with the Storefront API]# (https://shopify.dev/custom-storefronts/products-collections/filter-products).enum FilterType {    # A list of selectable values.    LIST    # A range of prices.    PRICE_RANGE    # A boolean value.    BOOLEAN}# The three-letter currency codes that represent the world currencies used in stores. These include standard ISO 4217 codes, legacy codes, and non-standard 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    # 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 (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    # Uruguayan Pesos (UYU).    UYU    # Uzbekistan som (UZS).    UZS    # Venezuelan Bolivares (VED).    VED    # Venezuelan Bolivares (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    # Belarusian Ruble (BYR).    BYR @deprecated}type ProductVariantConnection {    # A list of edges.    edges: [ProductVariantEdge!]!    # A list of the nodes contained in ProductVariantEdge.    nodes: [ProductVariant!]!    # Information to aid in pagination.    pageInfo: PageInfo!}type ProductVariantEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of ProductVariantEdge.    node: ProductVariant!}# The set of valid sort keys for the ProductVariant query.enum ProductVariantSortKeys {    # Sort by the `title` value.    TITLE    # Sort by the `sku` value.    SKU    # Sort by the `position` value.    POSITION    # Sort by the `id` value.    ID    # Sort by relevance to the search terms when the `query` parameter is specified on the connection.    # Don't use this sort key when no search query is specified.    RELEVANCE}# The set of valid sort keys for the ProductImage query.enum ProductImageSortKeys {    # Sort by the `created_at` value.    CREATED_AT    # Sort by the `id` value.    ID    # Sort by the `position` value.    POSITION    # Sort by relevance to the search terms when the `query` parameter is specified on the connection. Don't use this sort key when no search query is specified.    RELEVANCE}# The set of valid sort keys for the ProductMedia query.enum ProductMediaSortKeys {    # Sort by the `id` value.    ID    # Sort by the `position` value.    POSITION    # Sort by relevance to the search terms when the `query` parameter is specified on the connection. Don't use this sort key when no search query is specified.    RELEVANCE}# The possible content types for a media object.enum MediaContentType {    # An externally hosted video.    EXTERNAL_VIDEO    # A Shopify hosted image.    IMAGE    # A 3d model.    MODEL_3D    # A Shopify hosted video.    VIDEO}# The checkout charge when the full amount isn't charged at checkout.enum SellingPlanCheckoutChargeType {    # The checkout charge is a percentage of the product or variant price.    PERCENTAGE    # The checkout charge is a fixed price amount.    PRICE}# Units of measurement for weight.enum WeightUnit {    # 1 kilogram equals 1000 grams.    KILOGRAMS    # Metric system unit of mass.    GRAMS    # 1 pound equals 16 ounces.    POUNDS    # Imperial system unit of mass.    OUNCES}# The accepted types of unit of measurement.enum UnitPriceMeasurementMeasuredType {    # Unit of measurements representing areas.    AREA    # Unit of measurements representing lengths.    LENGTH    # Unit of measurements representing volumes.    VOLUME    # Unit of measurements representing weights.    WEIGHT}# The valid units of measurement for a unit price measurement.enum UnitPriceMeasurementMeasuredUnit {    # 100 centiliters equals 1 liter.    CL    # 100 centimeters equals 1 meter.    CM    # Metric system unit of weight.    G    # 1 kilogram equals 1000 grams.    KG    # Metric system unit of volume.    L    # Metric system unit of length.    M    # Metric system unit of area.    M2    # 1 cubic meter equals 1000 liters.    M3    # 1000 milligrams equals 1 gram.    MG    # 1000 milliliters equals 1 liter.    ML    # 1000 millimeters equals 1 meter.    MM}# ISO 639-1 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    # 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    # 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 (Brazil).    PT_BR    # Portuguese (Portugal).    PT_PT    QU    # Quechua.    # Romansh.    RM    # Rundi.    RN    # Romanian.    RO    # Russian.    RU    # Kinyarwanda.    RW    # 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    # Wolof.    WO    # Xhosa.    XH    # Yiddish.    YI    # Yoruba.    YO    # Chinese (Simplified).    ZH_CN    # Chinese (Traditional).    ZH_TW    # Zulu.    ZU    # Chinese.    ZH    # Portuguese.    PT    # Volapük.    VO}# 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 {    # Afghanistan.    AF    # Åland Islands.    AX    # Albania.    AL    # Algeria.    DZ    # Andorra.    AD    # Angola.    AO    # Anguilla.    AI    # Antigua & Barbuda.    AG    # Argentina.    AR    # Armenia.    AM    # Aruba.    AW    # Ascension Island.    AC    # Australia.    AU    # Austria.    AT    # Azerbaijan.    AZ    # Bahamas.    BS    # Bahrain.    BH    # Bangladesh.    BD    # Barbados.    BB    # Belarus.    BY    # Belgium.    BE    # Belize.    BZ    # Benin.    BJ    # Bermuda.    BM    # Bhutan.    BT    # Bolivia.    BO    # Bosnia & Herzegovina.    BA    # Botswana.    BW    # Bouvet Island.    BV    # Brazil.    BR    # British Indian Ocean Territory.    IO    # Brunei.    BN    # Bulgaria.    BG    # Burkina Faso.    BF    # Burundi.    BI    # Cambodia.    KH    # Canada.    CA    # Cape Verde.    CV    # Caribbean Netherlands.    BQ    # Cayman Islands.    KY    # Central African Republic.    CF    # Chad.    TD    # Chile.    CL    # China.    CN    # Christmas Island.    CX    # Cocos (Keeling) Islands.    CC    # Colombia.    CO    # Comoros.    KM    # Congo - Brazzaville.    CG    # Congo - Kinshasa.    CD    # Cook Islands.    CK    # Costa Rica.    CR    # Croatia.    HR    # Cuba.    CU    # Curaçao.    CW    # Cyprus.    CY    # Czechia.    CZ    # Côte d’Ivoire.    CI    # Denmark.    DK    # Djibouti.    DJ    # Dominica.    DM    # Dominican Republic.    DO    # Ecuador.    EC    # Egypt.    EG    # El Salvador.    SV    # Equatorial Guinea.    GQ    # Eritrea.    ER    # Estonia.    EE    # Eswatini.    SZ    # Ethiopia.    ET    # Falkland Islands.    FK    # Faroe Islands.    FO    # Fiji.    FJ    # Finland.    FI    # France.    FR    # French Guiana.    GF    # French Polynesia.    PF    # French Southern Territories.    TF    # Gabon.    GA    # Gambia.    GM    # Georgia.    GE    # Germany.    DE    # Ghana.    GH    # Gibraltar.    GI    # Greece.    GR    # Greenland.    GL    # Grenada.    GD    # Guadeloupe.    GP    # Guatemala.    GT    # Guernsey.    GG    # Guinea.    GN    # Guinea-Bissau.    GW    # Guyana.    GY    # Haiti.    HT    # Heard & McDonald Islands.    HM    # Vatican City.    VA    # Honduras.    HN    # Hong Kong SAR.    HK    # Hungary.    HU    # Iceland.    IS    # India.    IN    # Indonesia.    ID    # Iran.    IR    # Iraq.    IQ    # Ireland.    IE    # Isle of Man.    IM    # Israel.    IL    # Italy.    IT    # Jamaica.    JM    # Japan.    JP    # Jersey.    JE    # Jordan.    JO    # Kazakhstan.    KZ    # Kenya.    KE    # Kiribati.    KI    # North Korea.    KP    # Kosovo.    XK    # Kuwait.    KW    # Kyrgyzstan.    KG    # Laos.    LA    # Latvia.    LV    # Lebanon.    LB    # Lesotho.    LS    # Liberia.    LR    # Libya.    LY    # Liechtenstein.    LI    # Lithuania.    LT    # Luxembourg.    LU    # Macao SAR.    MO    # Madagascar.    MG    # Malawi.    MW    # Malaysia.    MY    # Maldives.    MV    # Mali.    ML    # Malta.    MT    # Martinique.    MQ    # Mauritania.    MR    # Mauritius.    MU    # Mayotte.    YT    # Mexico.    MX    # Moldova.    MD    # Monaco.    MC    # Mongolia.    MN    # Montenegro.    ME    # Montserrat.    MS    # Morocco.    MA    # Mozambique.    MZ    # Myanmar (Burma).    MM    # Namibia.    NA    # Nauru.    NR    # Nepal.    NP    # Netherlands.    NL    # Netherlands Antilles.    AN    # New Caledonia.    NC    # New Zealand.    NZ    # Nicaragua.    NI    # Niger.    NE    # Nigeria.    NG    # Niue.    NU    # Norfolk Island.    NF    # North Macedonia.    MK    # Norway.    NO    # Oman.    OM    # Pakistan.    PK    # Palestinian Territories.    PS    # Panama.    PA    # Papua New Guinea.    PG    # Paraguay.    PY    # Peru.    PE    # Philippines.    PH    # Pitcairn Islands.    PN    # Poland.    PL    # Portugal.    PT    # Qatar.    QA    # Cameroon.    CM    # Réunion.    RE    # Romania.    RO    # Russia.    RU    # Rwanda.    RW    # St. Barthélemy.    BL    # St. Helena.    SH    # St. Kitts & Nevis.    KN    # St. Lucia.    LC    # St. Martin.    MF    # St. Pierre & Miquelon.    PM    # Samoa.    WS    # San Marino.    SM    # São Tomé & Príncipe.    ST    # Saudi Arabia.    SA    # Senegal.    SN    # Serbia.    RS    # Seychelles.    SC    # Sierra Leone.    SL    # Singapore.    SG    # Sint Maarten.    SX    # Slovakia.    SK    # Slovenia.    SI    # Solomon Islands.    SB    # Somalia.    SO    # South Africa.    ZA    # South Georgia & South Sandwich Islands.    GS    # South Korea.    KR    # South Sudan.    SS    # Spain.    ES    # Sri Lanka.    LK    # St. Vincent & Grenadines.    VC    # Sudan.    SD    # Suriname.    SR    # Svalbard & Jan Mayen.    SJ    # Sweden.    SE    # Switzerland.    CH    # Syria.    SY    # Taiwan.    TW    # Tajikistan.    TJ    # Tanzania.    TZ    # Thailand.    TH    # Timor-Leste.    TL    # Togo.    TG    # Tokelau.    TK    # Tonga.    TO    # Trinidad & Tobago.    TT    # Tristan da Cunha.    TA    # Tunisia.    TN    # Turkey.    TR    # Turkmenistan.    TM    # Turks & Caicos Islands.    TC    # Tuvalu.    TV    # Uganda.    UG    # Ukraine.    UA    # United Arab Emirates.    AE    # United Kingdom.    GB    # United States.    US    # U.S. Outlying Islands.    UM    # Uruguay.    UY    # Uzbekistan.    UZ    # Vanuatu.    VU    # Venezuela.    VE    # Vietnam.    VN    # British Virgin Islands.    VG    # Wallis & Futuna.    WF    # Western Sahara.    EH    # Yemen.    YE    # Zambia.    ZM    # Zimbabwe.    ZW    # Unknown Region.    ZZ}
 |