| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 | # Metafields enable you to attach additional information to a Shopify resource, such as a Product or a Collection.# For more information about where you can attach metafields refer to HasMetafields.# Some examples of the data that metafields enable you to store are specifications, size charts, downloadable documents, release dates, images, or part numbers.# Metafields are identified by an owner resource, namespace, and key. and store a value along with type information for that value.type Metafield implements LegacyInteroperability&Node{    # The date and time when the metafield was created.    createdAt: DateTime!    # The optional, associated metafield definition that maps to this metafield's namespace and key pair.    definition: MetafieldDefinition    # The description of the metafield.    description: String    # A globally-unique identifier.    id: ID!    # The unique identifier for the metafield in its namespace.    key: String!    # The ID of the corresponding resource in the REST Admin API.    legacyResourceId: UnsignedInt64!    # A container for a group of metafields.    # Grouping metafields within a namespace prevents your metafields from conflicting with other metafields that have the same key name.    namespace: String!    # The resource that the metafield is attached to.    owner: HasMetafields!    # The resource that the metafield is attached to.    ownerType: MetafieldOwnerType!    # 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 of data that the metafield stores in the value field.    # See the list of supported types.    type: String!    # The date and time when the metafield was updated.    updatedAt: DateTime!    # The data to store in the metafield. The data is always stored as a string, regardless of the metafield's type.    value: String!}# Metafield definitions enable you to define additional validation constraints for metafields, and enable the# merchant to edit metafield values in context.type MetafieldDefinition implements Node {    # The description of a metafield definition.    description: String    # A globally-unique identifier.    id: ID!    # The key name used to identify a metafield definition within a namespace.    key: String!    # The list of metafields associated with a metafield definition.    metafields(        validationStatus: MetafieldValidationStatus = ANY        first: Int        after: String        last: Int        before: String        reverse: Boolean = false    ): MetafieldConnection!    # The count of metafields under a metafield definition.    metafieldsCount(validationStatus: MetafieldValidationStatus): Int!    # The human-readable name for the metafield definition.    name: String!    # The namespace of the metafield definition. You can use a namespace to group related metafields.    namespace: String!    # The resource type that the metafield definition is attached to. For example, Product or Collection.    ownerType: MetafieldOwnerType!    # The position of the metafield definition in the pinned list.    pinnedPosition: Int    # The standard metafield definition template associated with a metafield definition.    standardTemplate: StandardMetafieldDefinitionTemplate    # The type of data that the metafield will store.    type: MetafieldDefinitionType!    # The validation status for the existing metafields within a metafield definition.    validationStatus: MetafieldDefinitionValidationStatus!    # A list of validation options for    # the metafield. For example, for a metafield with the type date, you can set a minimum date validation, so    # that the metafield will only store dates after the specific minimum date.    validations: [MetafieldDefinitionValidation!]!    # Whether metafields for the metafield definition are visible using the Storefront API.    visibleToStorefrontApi: Boolean!}# Standard metafield definition templates provide preset configurations to create metafield definitions.# Each template has a specific namespace and key that we've reserved to have specific meanings for common use cases.## Refer to the list of standard metafield definitions.type StandardMetafieldDefinitionTemplate implements Node {    # The description of the standard metafield definition.    description: String    # A globally-unique identifier.    id: ID!    # The key owned by the definition after the definition has been activated.    key: String!    # The human-readable name for the standard metafield definition.    name: String!    # The namespace owned by the definition after the definition has been activated.    namespace: String!    # The list of resource types that the standard metafield definition can be applied to.    ownerTypes: [MetafieldOwnerType!]!    # The associated metafield definition type that the metafield stores.    type: MetafieldDefinitionType!    # The configured validations for the standard metafield definition.    validations: [MetafieldDefinitionValidation!]!    # Whether metafields for the definition are by default visible using the Storefront API.    visibleToStorefrontApi: Boolean!}# A metafield definition type provides basic foundation and validation for a metafield.type MetafieldDefinitionType {    # The category associated with the metafield definition type.    category: String!    # The name of the type for the metafield definition.    # See the list of supported types.    name: String!    # The supported validations for a metafield definition type.    supportedValidations: [MetafieldDefinitionSupportedValidation!]!    # Whether metafields without a definition can be migrated to a definition of this type.    supportsDefinitionMigrations: Boolean!}# The type and name for the optional validation configuration of a metafield.## For example, a supported validation might consist of a max name and a number_integer type.# This validation can then be used to enforce a maximum character length for a single_line_text_field metafield.type MetafieldDefinitionSupportedValidation {    # The name of the metafield definition validation.    name: String!    # The type of input for the validation.    type: String!}# A configured metafield definition validation.## For example, for a metafield definition of number_integer type, you can set a validation with the name max# and a value of 15. This validation will ensure that the value of the metafield is a number less than or equal to 15.## Refer to the list of supported validations.type MetafieldDefinitionValidation {    # The validation name.    name: String!    # The name for the metafield type of this validation.    type: String!    # The validation value.    value: String}# Private metafields represent custom metadata that is attached to a resource.# Private metafields are accessible only by the application that created them and only from the GraphQL Admin API.## An application can create a maximum of 10 private metafields per shop resource.type PrivateMetafield implements Node {    # The date and time when the private metafield was created.    createdAt: DateTime!    # The id of the private metafield.    id: ID!    # The key name of the private metafield.    key: String!    # The namespace of the private metafield.    namespace: String!    # The date and time when the private metafield was updated.    updatedAt: DateTime!    # The value of a private metafield.    value: String!    # Represents the private metafield value type.    valueType: PrivateMetafieldValueType!}# The input fields for a private metafield.input PrivateMetafieldInput {    # The resource that owns the metafield. If the field is blank, then the Shop resource owns the metafield.    owner: ID    # The namespace of the private metafield.    namespace: String!    # The key of the private metafield.    key: String!    # The value and valueType of the private metafield, wrapped in a ValueInput object.    valueInput: PrivateMetafieldValueInput!}# The value input contains the value and value type of the private metafield.input PrivateMetafieldValueInput {    # The value of a private metafield.    value: String!    # Represents the private metafield value type.    valueType: PrivateMetafieldValueType!}# The input fields to use to create or update a metafield through a mutation on the owning resource.# An alternative way to create or update a metafield is by using the metafieldsSet mutation.input MetafieldInput {    # The description of the metafield.    description: String    # The unique ID of the metafield. You don't include an ID when you create a metafield because the metafield ID    # is created automatically. The ID is required when you update a metafield.    id: ID    # The namespace for a metafield. The namespace is required when you create a metafield and is optional when you    # update a metafield.    namespace: String    # The key name of the metafield. Required when creating but optional when updating.    key: String    # The value of a metafield.    value: String    # The metafield's type. The metafield type is required    # when you create a metafield and is optional when you update a metafield.    type: String}# An auto-generated type for paginating through multiple Metafields.type MetafieldConnection {    # A list of edges.    edges: [MetafieldEdge!]!    # A list of the nodes contained in MetafieldEdge.    nodes: [Metafield!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one Metafield and a cursor during pagination.type MetafieldEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of MetafieldEdge.    node: Metafield!}# An auto-generated type for paginating through multiple MetafieldDefinitions.type MetafieldDefinitionConnection {    # A list of edges.    edges: [MetafieldDefinitionEdge!]!    # A list of the nodes contained in MetafieldDefinitionEdge.    nodes: [MetafieldDefinition!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one MetafieldDefinition and a cursor during pagination.type MetafieldDefinitionEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of MetafieldDefinitionEdge.    node: MetafieldDefinition!}# An auto-generated type for paginating through multiple PrivateMetafields.type PrivateMetafieldConnection {    # A list of edges.    edges: [PrivateMetafieldEdge!]!    # A list of the nodes contained in PrivateMetafieldEdge.    nodes: [PrivateMetafield!]!    # Information to aid in pagination.    pageInfo: PageInfo!}# An auto-generated type which holds one PrivateMetafield and a cursor during pagination.type PrivateMetafieldEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of PrivateMetafieldEdge.    node: PrivateMetafield!}# 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!}# An auto-generated type which holds one MetafieldReference and a cursor during pagination.type MetafieldReferenceEdge {    # A cursor for use in pagination.    cursor: String!    # The item at the end of MetafieldReferenceEdge.    node: MetafieldReference}
 |