query (
  $shopIds: [ID]!,
  $tagIds: [ID],
  $first: ConnectionLimitInt,
  $sortBy: CatalogItemSortByField,
  $sortOrder: SortOrder,
  $sortByPriceCurrencyCode: String
) {
  catalogItems(
    first: $first,
    shopIds: $shopIds,
    tagIds: $tagIds,
    sortBy: $sortBy,
    sortOrder: $sortOrder,
    sortByPriceCurrencyCode: $sortByPriceCurrencyCode
  ) {
    nodes {
      _id
      shop {
        _id
      }
      createdAt
      updatedAt
      ... on CatalogItemProduct {
        product {
          _id
          barcode
          createdAt
          description
          height
          isBackorder
          isLowQuantity
          isSoldOut
          length
          metafields {
            value
            namespace
            description
            valueType
            scope
            key
          }
          metaDescription
          minOrderQuantity
          originCountry
          pageTitle
          parcel {
            containers
            length
            width
            height
            weight
          }
          pricing {
            currency {
              _id
              code
            }
            compareAtPrice {
              amount
            }
            price
            maxPrice
            minPrice
            displayPrice
          }
          media {
            priority
            productId
            variantId
            URLs {
              thumbnail
              small
              medium
              large
              original
            }
          }
          primaryImage {
            priority
            productId
            variantId
            URLs {
              thumbnail
              small
              medium
              large
              original
            }
          }
          productId
          productType
          shop {
            _id
          }
          sku
          slug
          socialMetadata {
            service
            message
          }
          supportedFulfillmentTypes
          tagIds
          tags(first: 2) {
            nodes {
              _id
            }
          }
          title
          updatedAt
          variants {
            _id
            barcode
            createdAt
            height
            index
            isLowQuantity
            isSoldOut
            isTaxable
            length
            metafields {
              value
              namespace
              description
              valueType
              scope
              key
            }
            minOrderQuantity
            options {
              _id
              barcode
              createdAt
              height
              index
              isLowQuantity
              isSoldOut
              isTaxable
              length
              metafields {
                value
                namespace
                description
                valueType
                scope
                key
              }
              minOrderQuantity
              optionTitle
              originCountry
              pricing {
                currency {
                  _id
                  code
                }
                compareAtPrice {
                  amount
                }
                price
                maxPrice
                minPrice
                displayPrice
              }
              shop {
                _id
              }
              sku
              taxCode
              taxDescription
              title
              updatedAt
              variantId
              weight
              width
            }
            originCountry
            pricing {
              currency {
                _id
                code
              }
              compareAtPrice {
                amount
              }
              price
              maxPrice
              minPrice
              displayPrice
            }
            shop {
              _id
            }
            sku
            taxCode
            taxDescription
            title
            updatedAt
            variantId
            weight
            width
          }
          vendor
          weight
          width
        }
      }
    }
  }
}
