generated: '2026-08-23' method: derived source: graphql/johnnie-o-storefront.graphql (introspected 2026-08-23) note: >- Entity graph derived mechanically from the introspected Storefront schema by walking each core type's field return types: a field returning T is has_one T, a field returning a *Connection is has_many of that connection's node type. Only relationships present in the schema are recorded. Identifiers are Shopify global IDs (base64 gid://shopify//) exposed as the ID scalar on the Node interface. identifiers: scheme: shopify-global-id shape: 'gid://shopify//, base64-encoded in the ID scalar' interface: Node handle_scheme: >- Product, Collection, Blog, Article and Page also carry a URL-safe `handle` used by the byHandle root fields and by the store's own /products/{handle}.json endpoints. merchant_tenant: '22750137' entities: - name: Product root_fields: [product, productByHandle, products, productRecommendations] relationships: - {to: ProductVariant, kind: has_many, via: variants} - {to: ProductVariant, kind: has_one, via: selectedOrFirstAvailableVariant} - {to: ProductVariant, kind: has_one, via: variantBySelectedOptions} - {to: ProductVariant, kind: has_many, via: adjacentVariants} - {to: Collection, kind: has_many, via: collections} - {to: Image, kind: has_many, via: images} - {to: Image, kind: has_one, via: featuredImage} - {to: Media, kind: has_many, via: media} - {to: ProductOption, kind: has_many, via: options} - {to: SellingPlanGroup, kind: has_many, via: sellingPlanGroups} - {to: Metafield, kind: has_many, via: metafields} - name: ProductVariant relationships: - {to: Product, kind: belongs_to, via: product} - {to: Image, kind: has_one, via: image} - {to: SelectedOption, kind: has_many, via: selectedOptions} - {to: StoreAvailability, kind: has_many, via: storeAvailability} - {to: QuantityPriceBreak, kind: has_many, via: quantityPriceBreaks} - {to: SellingPlanAllocation, kind: has_many, via: sellingPlanAllocations} - {to: ProductVariantComponent, kind: has_many, via: components} - name: Collection root_fields: [collection, collectionByHandle, collections] relationships: - {to: Product, kind: has_many, via: products} - {to: Image, kind: has_one, via: image} - {to: Metafield, kind: has_many, via: metafields} - name: Cart root_fields: [cart] relationships: - {to: BaseCartLine, kind: has_many, via: lines} - {to: CartDeliveryGroup, kind: has_many, via: deliveryGroups} - {to: CartBuyerIdentity, kind: has_one, via: buyerIdentity} - {to: CartCost, kind: has_one, via: cost} - {to: Metafield, kind: has_many, via: metafields} - name: Order root_fields: [] reachable_via: Customer.orders (requires customerAccessToken) relationships: - {to: OrderLineItem, kind: has_many, via: lineItems} - {to: MailingAddress, kind: has_one, via: shippingAddress} - {to: MailingAddress, kind: has_one, via: billingAddress} - {to: DiscountApplication, kind: has_many, via: discountApplications} - {to: Metafield, kind: has_many, via: metafields} - name: Customer root_fields: [customer] relationships: - {to: Order, kind: has_many, via: orders} - {to: MailingAddress, kind: has_many, via: addresses} - {to: MailingAddress, kind: has_one, via: defaultAddress} - {to: Metafield, kind: has_many, via: metafields} - name: Blog root_fields: [blog, blogByHandle, blogs] relationships: - {to: Article, kind: has_many, via: articles} - {to: Article, kind: has_one, via: articleByHandle} - name: Article root_fields: [article, articles] relationships: - {to: Blog, kind: belongs_to, via: blog} - {to: Comment, kind: has_many, via: comments} - {to: Image, kind: has_one, via: image} - name: Page root_fields: [page, pageByHandle, pages] - name: Shop root_fields: [shop] relationships: - {to: Metafield, kind: has_many, via: metafields} - name: Location root_fields: [locations] - name: SellingPlanGroup relationships: - {to: SellingPlan, kind: has_many, via: sellingPlans} - name: Metaobject root_fields: [metaobject, metaobjects] - name: Menu root_fields: [menu] cross_cutting: - entity: Metafield note: Attached to Product, ProductVariant, Collection, Cart, Order, Customer, Shop, Blog, Article, Page, Location and SellingPlan. Namespaced key/value extension point present on almost every entity. counts: total_types: 414 objects: 260 input_objects: 53 enums: 62 interfaces: 10 unions: 16 scalars: 13 entities_modelled: 14