directive @goTag( key: String! value: String ) on INPUT_FIELD_DEFINITION | FIELD_DEFINITION directive @goField( forceResolver: Boolean, name: String ) on INPUT_FIELD_DEFINITION | FIELD_DEFINITION scalar DateTime scalar UnsignedInt64 scalar 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 URL union MetafieldParentResource = Collection | Product | ProductVariant union MetafieldReference = Collection | Product | ProductVariant union 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 | SellingPlanPercentagePriceAdjustment type Query { collection(handle: String id: ID): Collection collections( after: String, before: String, first: Int, last: Int, query: String, reverse: Boolean = false, sortKey: CollectionSortKeys = ID ): CollectionConnection! product(handle: String id: ID): Product products( after: String before: String first: Int last: Int query: String reverse: Boolean = false sortKey: ProductSortKeys = ID ): ProductConnection! # Tags added to products. # Additional access scope required: unauthenticated_read_product_tags. productTags(first: Int!): StringConnection! # List of product types for the shop's products that are published to your app. productTypes(first: Int!): StringConnection! # Find recommended products related to a given `product_id`. productRecommendations(productId: ID!): [Product!] } type StringConnection { # A list of edges. edges: [StringEdge!]! # Information to aid in pagination. pageInfo: PageInfo! } type StringEdge { # A cursor for use in pagination. cursor: String! # The item at the end of StringEdge. node: String! } # 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 @goField(forceResolver: true) # 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! @goField(forceResolver: true) # 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!]! @goField(forceResolver: true) # 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! @goField(forceResolver: true) # The product variant’s title. title: String! @goField(forceResolver: true) # 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! @provides(fields: "id") # 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. extend type Location implements Node { # The address of the location. address: LocationAddress! @external # A globally-unique identifier. id: ID! @external # The name of the location. name: String! @external } # Represents the address of a location. extend 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 } enum ProductSortKeys { # Sort by the `title` value. TITLE # Sort by the `product_type` value. PRODUCT_TYPE # Sort by the `vendor` value. VENDOR # Sort by the `updated_at` value. UPDATED_AT # Sort by the `created_at` value. CREATED_AT # Sort by the `best_selling` value. BEST_SELLING # Sort by the price value. PRICE # 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 } # 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 }