> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Shopify Integration for AI Agents & Workflows

> E-commerce platform for managing products, orders, customers, and content via the Shopify Admin GraphQL API

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/shopify.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=2ca50fb08fd0374065e173ff1babee13" alt="Shopify logo" width="72" height="72" data-path="logos/shopify.svg" />

## Overview

Add **Shopify** to any ModuleX agent or workflow. E-commerce platform integration for managing products, orders, customers, collections, blogs, pages, metafields, metaobjects, fulfillments, and inventory via the Shopify Admin GraphQL API (`{shop_id}.myshopify.com/admin/api/2025-01/graphql.json`).

<Info>
  **Categories**: E-Commerce · Retail · Inventory Management · **Auth**: Shopify OAuth Access Token · **Actions**: 39
</Info>

## Authentication

### Shopify OAuth Access Token

Authenticate using a Shopify OAuth access token and shop ID. Shopify uses shop-specific OAuth URLs which require custom auth handling.

#### Required Credentials

| Field        | Description                                                                | Required | Format                                   |
| ------------ | -------------------------------------------------------------------------- | -------- | ---------------------------------------- |
| Shop ID      | Your Shopify store subdomain (e.g. 'my-store' from my-store.myshopify.com) | Yes      | `my-store`                               |
| Access Token | Shopify Admin API access token (from a custom app or OAuth flow)           | Yes      | `shpat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |

## Available Actions

<AccordionGroup>
  <Accordion title="add_product_to_custom_collection — Add one or more products to a custom collection">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain (e.g. 'my-store' from my-store.myshopify.com)
    </ResponseField>

    <ResponseField name="collection_id" type="string" required>
      The Shopify GID of the custom collection
    </ResponseField>

    <ResponseField name="product_ids" type="array" required>
      Array of product GID strings to add to the collection
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "job_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Job Id"
        },
        "job_done": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Job Done"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddProductToCustomCollectionOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="add_tags — Add tags to a Shopify resource (Product, Customer, Order, DraftOrder, or Article)">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="resource_type" type="string" required>
      The resource type. Allowed values: Product, Customer, Order, DraftOrder, Article
    </ResponseField>

    <ResponseField name="gid" type="string" required>
      The Shopify Admin Resource GID
    </ResponseField>

    <ResponseField name="tags" type="array" required>
      Array of tag strings to add
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "node_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Node Id"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddTagsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_article — Create a new blog article">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="blog_id" type="string" required>
      The GID of the blog to create the article in
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The title of the article
    </ResponseField>

    <ResponseField name="author" type="string" required>
      The name of the author of the article
    </ResponseField>

    <ResponseField name="body" type="string">
      The text content of the article, with HTML markup
    </ResponseField>

    <ResponseField name="summary" type="string">
      A summary of the article, with HTML markup
    </ResponseField>

    <ResponseField name="image_url" type="string">
      The URL of the image associated with the article
    </ResponseField>

    <ResponseField name="tags" type="array">
      Array of tag strings
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "article_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Article Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "handle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Handle"
        },
        "body": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Body"
        },
        "summary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Summary"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "title": "Tags",
          "type": "array"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateArticleOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_blog — Create a new blog">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The title of the blog
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "blog_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Blog Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "handle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Handle"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateBlogOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_custom_collection — Create a new custom collection">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The name of the custom collection
    </ResponseField>

    <ResponseField name="products" type="array">
      Array of product GID strings to include in the collection
    </ResponseField>

    <ResponseField name="metafields" type="array">
      Array of metafield objects, each with key, value, type, and namespace
    </ResponseField>

    <ResponseField name="image_url" type="string">
      The source URL of the collection image
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "collection_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Collection Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateCustomCollectionOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_metafield — Create a metafield definition belonging to a resource">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="owner_resource" type="string" required>
      The resource type. Allowed values: BLOG, COLLECTION, PAGE, PRODUCT, VARIANTS, ARTICLE
    </ResponseField>

    <ResponseField name="name" type="string" required>
      The human-readable name for the metafield definition
    </ResponseField>

    <ResponseField name="namespace" type="string" required>
      A container for a group of metafields (3-255 characters)
    </ResponseField>

    <ResponseField name="key" type="string" required>
      The key of the metafield (up to 64 characters)
    </ResponseField>

    <ResponseField name="type" type="string" required>
      The metafield data type (e.g. single\_line\_text\_field, number\_integer, json, boolean, url, color)
    </ResponseField>

    <ResponseField name="pin" type="boolean">
      Whether to pin the metafield definition (Default: `false`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "definition_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Definition Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateMetafieldOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_metaobject — Create a metaobject">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="type" type="string" required>
      The metaobject type (Shopify GID or type name)
    </ResponseField>

    <ResponseField name="fields" type="array">
      Array of field objects, each with 'key' and 'value' strings
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "metaobject_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Metaobject Id"
        },
        "handle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Handle"
        },
        "type_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type Name"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateMetaobjectOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_page — Create a new page">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The title of the page
    </ResponseField>

    <ResponseField name="body" type="string" required>
      The text content of the page, with HTML markup
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "page_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Page Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "handle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Handle"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreatePageOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_product — Create a new product">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="title" type="string" required>
      Title of the new product
    </ResponseField>

    <ResponseField name="product_description" type="string">
      A description of the product (supports HTML)
    </ResponseField>

    <ResponseField name="vendor" type="string">
      The name of the product's vendor
    </ResponseField>

    <ResponseField name="product_type" type="string">
      A categorization for the product
    </ResponseField>

    <ResponseField name="status" type="string">
      The product status. Allowed values: ACTIVE, ARCHIVED, DRAFT
    </ResponseField>

    <ResponseField name="images" type="array">
      Array of image URL strings
    </ResponseField>

    <ResponseField name="options" type="array">
      Array of option objects, each with 'name' (string) and 'values' (array of objects with 'name')
    </ResponseField>

    <ResponseField name="tags" type="array">
      Array of tag strings
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "product_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Product Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateProductOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_product_variant — Create a new product variant">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="product_id" type="string" required>
      The GID of the product
    </ResponseField>

    <ResponseField name="option_ids" type="array" required>
      Array of product option value GID strings
    </ResponseField>

    <ResponseField name="price" type="string">
      The price of the product variant
    </ResponseField>

    <ResponseField name="image_url" type="string">
      The URL of an image for the variant
    </ResponseField>

    <ResponseField name="sku" type="string">
      A unique SKU for the product variant
    </ResponseField>

    <ResponseField name="barcode" type="string">
      The barcode, UPC, or ISBN number
    </ResponseField>

    <ResponseField name="weight" type="string">
      The weight of the variant (requires weight\_unit)
    </ResponseField>

    <ResponseField name="weight_unit" type="string">
      Weight unit. Allowed values: KILOGRAMS, GRAMS, POUNDS, OUNCES
    </ResponseField>

    <ResponseField name="metafields" type="array">
      Array of metafield objects with key, value, type, namespace
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "variant_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Variant Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateProductVariantOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_smart_collection — Create a smart collection with automated rules">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="title" type="string" required>
      Title of the smart collection
    </ResponseField>

    <ResponseField name="rules" type="array" required>
      Array of rule objects with 'column' (TAG, TITLE, VENDOR, etc.), 'relation' (CONTAINS, EQUALS, etc.), and 'condition'
    </ResponseField>

    <ResponseField name="disjunctive" type="boolean">
      If true, product matches any rule. If false, product must match all rules. (Default: `false`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "collection_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Collection Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateSmartCollectionOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_article — Delete an existing blog article">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="article_id" type="string" required>
      The GID of the article to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "deleted_article_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Deleted Article Id"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteArticleOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_blog — Delete an existing blog">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="blog_id" type="string" required>
      The GID of the blog to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "deleted_blog_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Deleted Blog Id"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteBlogOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_metafield — Delete a metafield belonging to a resource">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="metafield_id" type="string" required>
      The GID of the metafield to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "deleted_metafields": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Deleted Metafields",
          "type": "array"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteMetafieldOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_page — Delete an existing page">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="page_id" type="string" required>
      The GID of the page to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "deleted_page_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Deleted Page Id"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeletePageOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_articles — Retrieve a list of articles from a blog">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="blog_id" type="string" required>
      The GID of the blog
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "articles": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Articles",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetArticlesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_assigned_fulfillment_orders — Retrieve fulfillment orders assigned to a merchant location">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "fulfillment_orders": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Fulfillment Orders",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetAssignedFulfillmentOrdersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_customer — Retrieve a single customer by ID">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="customer_id" type="string" required>
      The GID of the customer
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "customer_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Customer Id"
        },
        "first_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "First Name"
        },
        "last_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Name"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        },
        "state": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "State"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "title": "Tags",
          "type": "array"
        },
        "note": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Note"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetCustomerOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_customers — Retrieve a list of customers">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="query" type="string">
      Filter query string (e.g. email:[customer@example.com](mailto:customer@example.com) or state:ENABLED)
    </ResponseField>

    <ResponseField name="sort_key" type="string">
      Sort key. Options: CREATED\_AT, ID, NAME, ORDERS\_COUNT, STATE, TOTAL\_SPENT, UPDATED\_AT
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "customers": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Customers",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetCustomersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_draft_order — Retrieve a single draft order by ID">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="draft_order_id" type="string" required>
      The GID of the draft order
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "draft_order_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Draft Order Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        },
        "invoice_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Invoice Url"
        },
        "total_price": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Total Price"
        },
        "currency_code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Currency Code"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetDraftOrderOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_draft_orders — Retrieve a list of draft orders">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="query" type="string">
      Filter query (e.g. status:OPEN, tag:fraud)
    </ResponseField>

    <ResponseField name="sort_key" type="string">
      Sort key. Options: CREATED\_AT, ID, NUMBER, STATUS, TOTAL\_PRICE, UPDATED\_AT, CUSTOMER\_NAME
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "draft_orders": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Draft Orders",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetDraftOrdersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_fulfillment — Retrieve a fulfillment by ID including tracking info and status">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="fulfillment_id" type="string" required>
      The globally-unique GID of a fulfillment (e.g. gid://shopify/Fulfillment/1234567890)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "fulfillment_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fulfillment Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "display_status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Display Status"
        },
        "total_quantity": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Total Quantity"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created At"
        },
        "tracking_info": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Tracking Info",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetFulfillmentOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_fulfillment_order — Retrieve a single fulfillment order by ID">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="fulfillment_order_id" type="string" required>
      The GID of the fulfillment order
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "fulfillment_order_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fulfillment Order Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "request_status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Request Status"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created At"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetFulfillmentOrderOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_fulfillment_orders — Retrieve a list of fulfillment orders">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="query" type="string">
      Filter query (e.g. status:open)
    </ResponseField>

    <ResponseField name="include_closed" type="boolean">
      Whether to include closed fulfillment orders (Default: `false`)
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "fulfillment_orders": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Fulfillment Orders",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetFulfillmentOrdersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_metafields — Retrieve metafields belonging to a resource">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="owner_resource" type="string" required>
      The resource type. Allowed values: blog, collection, page, product, variants, article
    </ResponseField>

    <ResponseField name="owner_id" type="string" required>
      The GID of the resource that owns the metafields
    </ResponseField>

    <ResponseField name="namespace" type="array">
      Filter by namespace strings
    </ResponseField>

    <ResponseField name="key" type="array">
      Filter by key strings
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "metafields": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Metafields",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetMetafieldsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_metaobjects — Retrieve a list of metaobjects by type">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="type" type="string" required>
      The metaobject type name
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "metaobjects": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Metaobjects",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetMetaobjectsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_pages — Retrieve a list of all pages">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "pages": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Pages",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetPagesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_custom_collection_by_name — Search for a custom collection by name or title">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="title" type="string">
      The name of the custom collection to search for
    </ResponseField>

    <ResponseField name="exact_match" type="boolean">
      Whether to require an exact title match (Default: `false`)
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return (Default: `100`)
    </ResponseField>

    <ResponseField name="sort_key" type="string">
      Sort key. Options: ID, RELEVANCE, TITLE, UPDATED\_AT
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "collections": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Collections",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchCustomCollectionByNameOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_orders — Search for orders">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="query" type="string">
      Search query using Shopify search syntax
    </ResponseField>

    <ResponseField name="sort_key" type="string">
      Sort key. Options: CREATED\_AT, CUSTOMER\_NAME, FINANCIAL\_STATUS, FULFILLMENT\_STATUS, ID, ORDER\_NUMBER, PROCESSED\_AT, TOTAL\_PRICE, UPDATED\_AT
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "orders": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Orders",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchOrdersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_product_variant — Search for a product variant by ID or title, optionally creating if not found">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="product_id" type="string" required>
      The GID of the product
    </ResponseField>

    <ResponseField name="product_variant_id" type="string">
      The GID of the product variant (takes precedence over title)
    </ResponseField>

    <ResponseField name="title" type="string">
      The name of the product variant to search for
    </ResponseField>

    <ResponseField name="create_if_not_found" type="boolean">
      Create the variant if not found (Default: `false`)
    </ResponseField>

    <ResponseField name="option_ids" type="array">
      Option value GID strings for creation
    </ResponseField>

    <ResponseField name="price" type="string">
      Price of the variant (used only when creating)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "variant_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Variant Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "created": {
          "default": false,
          "title": "Created",
          "type": "boolean"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchProductVariantOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_products — Search for products">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="title" type="string">
      The product title to search for
    </ResponseField>

    <ResponseField name="exact_match" type="boolean">
      Whether the title search should be an exact match (Default: `false`)
    </ResponseField>

    <ResponseField name="product_ids" type="array">
      Array of product GID strings to filter by
    </ResponseField>

    <ResponseField name="collection_id" type="string">
      Filter by collection GID
    </ResponseField>

    <ResponseField name="product_type" type="string">
      Filter by product type
    </ResponseField>

    <ResponseField name="vendor" type="string">
      Filter by vendor name
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of results to return (Default: `100`)
    </ResponseField>

    <ResponseField name="sort_key" type="string">
      Sort key. Options: CREATED\_AT, ID, INVENTORY\_TOTAL, PRODUCT\_TYPE, PUBLISHED\_AT, RELEVANCE, TITLE, UPDATED\_AT, VENDOR
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "products": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Products",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchProductsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_article — Update a blog article">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="article_id" type="string" required>
      The GID of the article to update
    </ResponseField>

    <ResponseField name="title" type="string">
      The new title of the article
    </ResponseField>

    <ResponseField name="body_html" type="string">
      The text content with HTML markup
    </ResponseField>

    <ResponseField name="author" type="string">
      The name of the author
    </ResponseField>

    <ResponseField name="summary" type="string">
      A summary of the article
    </ResponseField>

    <ResponseField name="image_url" type="string">
      The URL of the article image
    </ResponseField>

    <ResponseField name="tags" type="array">
      Array of tag strings
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "article_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Article Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "handle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Handle"
        },
        "body": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Body"
        },
        "summary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Summary"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "title": "Tags",
          "type": "array"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateArticleOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_inventory_level — Set the inventory level for an inventory item at a location">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="location_id" type="string" required>
      The GID of the location
    </ResponseField>

    <ResponseField name="inventory_item_id" type="string" required>
      The GID of the inventory item
    </ResponseField>

    <ResponseField name="available" type="integer" required>
      The available inventory quantity to set
    </ResponseField>

    <ResponseField name="reason" type="string" required>
      The reason for the change. Values: correction, cycle\_count\_available, damaged, other, promotion, quality\_control, received, restock, safety\_stock, shrinkage
    </ResponseField>

    <ResponseField name="reference_document_uri" type="string">
      A freeform URI representing why the change happened
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created At"
        },
        "reason": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Reason"
        },
        "changes": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Changes",
          "type": "array"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateInventoryLevelOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_metafield — Update a metafield belonging to a resource">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="owner_id" type="string" required>
      The GID of the resource that owns the metafield
    </ResponseField>

    <ResponseField name="metafield_id" type="string" required>
      The GID of the metafield to update
    </ResponseField>

    <ResponseField name="value" type="string" required>
      The new value for the metafield
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "metafields": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Metafields",
          "type": "array"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateMetafieldOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_metaobject — Update a metaobject">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="metaobject_id" type="string" required>
      The GID of the metaobject to update
    </ResponseField>

    <ResponseField name="fields" type="array">
      Array of field objects, each with 'key' and 'value' strings
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "metaobject_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Metaobject Id"
        },
        "type_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type Name"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateMetaobjectOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_order — Update an existing order">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="order_id" type="string" required>
      The GID of the order to update
    </ResponseField>

    <ResponseField name="email" type="string">
      The email address associated with the order
    </ResponseField>

    <ResponseField name="note" type="string">
      An optional note to attach to the order
    </ResponseField>

    <ResponseField name="tags" type="array">
      Array of tag strings
    </ResponseField>

    <ResponseField name="metafields" type="array">
      Array of metafield objects with key, value, type, namespace
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "order_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Order Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "title": "Tags",
          "type": "array"
        },
        "note": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Note"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateOrderOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_page — Update an existing page">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="page_id" type="string" required>
      The GID of the page to update
    </ResponseField>

    <ResponseField name="title" type="string">
      The new title of the page
    </ResponseField>

    <ResponseField name="body" type="string">
      The text content with HTML markup
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "page_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Page Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "handle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Handle"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdatePageOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_product — Update an existing product">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="product_id" type="string" required>
      The GID of the product to update
    </ResponseField>

    <ResponseField name="title" type="string">
      The new title of the product
    </ResponseField>

    <ResponseField name="product_description" type="string">
      A description of the product (supports HTML)
    </ResponseField>

    <ResponseField name="vendor" type="string">
      The name of the product's vendor
    </ResponseField>

    <ResponseField name="product_type" type="string">
      A categorization for the product
    </ResponseField>

    <ResponseField name="status" type="string">
      Product status. Allowed values: ACTIVE, ARCHIVED, DRAFT
    </ResponseField>

    <ResponseField name="images" type="array">
      Array of image URL strings
    </ResponseField>

    <ResponseField name="tags" type="array">
      Array of tag strings
    </ResponseField>

    <ResponseField name="metafields" type="array">
      Array of metafield objects with key, value, type, namespace
    </ResponseField>

    <ResponseField name="handle" type="string">
      A unique human-friendly URL handle
    </ResponseField>

    <ResponseField name="seo_title" type="string">
      The product title for SEO
    </ResponseField>

    <ResponseField name="seo_description" type="string">
      The product description for SEO
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "product_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Product Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateProductOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_product_variant — Update an existing product variant">
    ### Parameters

    <ResponseField name="shop_id" type="string" required>
      The Shopify store subdomain
    </ResponseField>

    <ResponseField name="product_id" type="string" required>
      The GID of the product
    </ResponseField>

    <ResponseField name="product_variant_id" type="string" required>
      The GID of the product variant to update
    </ResponseField>

    <ResponseField name="option_ids" type="array">
      Array of product option value GID strings
    </ResponseField>

    <ResponseField name="price" type="string">
      The price of the variant
    </ResponseField>

    <ResponseField name="sku" type="string">
      A unique SKU for the variant
    </ResponseField>

    <ResponseField name="barcode" type="string">
      The barcode, UPC, or ISBN number
    </ResponseField>

    <ResponseField name="weight" type="string">
      The weight of the variant (requires weight\_unit)
    </ResponseField>

    <ResponseField name="weight_unit" type="string">
      Weight unit. Allowed values: KILOGRAMS, GRAMS, POUNDS, OUNCES
    </ResponseField>

    <ResponseField name="metafields" type="array">
      Array of metafield objects with key, value, type, namespace
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ShopifyUserError": {
          "additionalProperties": false,
          "description": "Error returned by a Shopify GraphQL mutation.",
          "properties": {
            "field": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Field"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            }
          },
          "title": "ShopifyUserError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "variant_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Variant Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "user_errors": {
          "items": {
            "$ref": "#/$defs/ShopifyUserError"
          },
          "title": "User Errors",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateProductVariantOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Standard Shopify API rate limit**: 50 points per second for the GraphQL Admin API (each query/mutation costs 1+ points depending on complexity).
* **Throttling**: Shopify returns `THROTTLED` errors in the GraphQL response extensions when the limit is exceeded. Retry after a short delay.
* **Pagination**: List actions are capped at 250 items per request via the GraphQL `first` argument. For larger datasets, implement cursor-based pagination.
* **Error model**: GraphQL `userErrors` arrays are returned inline as `success=False` + `error` with the first error message. HTTP-level errors (network, auth) are caught and returned as `success=False` + `error`.

## Related integrations

<CardGroup cols={3}>
  <Card title="WooCommerce" href="/integrations/tools/woocommerce" />

  <Card title="Amazon Selling Partner" href="/integrations/tools/amazon-selling-partner" />

  <Card title="Etsy" href="/integrations/tools/etsy" />
</CardGroup>

## Links

* [Shopify](https://www.shopify.com)
