Shopify
Canonical tools, triggers, auth, schemas, and mock behavior for Shopify.
Run a valid shopify.create_fulfillment call through the same SDK surface used by every toolkit.
Minimal tool call
import { Eyeball } from "@eyeball/sdk";
const eyeball = new Eyeball({
apiKey: process.env.EYEBALL_API_KEY!,
baseUrl: process.env.EYEBALL_EXECUTOR_URL!,
});
const output = await eyeball.tools.run(
"shopify.create_fulfillment",
{
"orderId": "example_orderId",
"notifyCustomer": false
},
{ userId: "demo_user",
idempotencyKey: "docs:shopify.create_fulfillment:demo-1" },
);
console.log(output);The model receives canonical output. Your application retains the execution envelope through tools.execute or the execution APIs when it needs IDs, status, versions, and latency.
Supported canonical tools
| Tool | Purpose | Execution | Effect | Version |
|---|---|---|---|---|
shopify.create_fulfillment | Create a fulfillment or shipment for an order. This can notify customers and change fulfillment state; verify items and tracking first. | sync or async | mutation | 1.0.0 |
shopify.create_product | Create a product and its initial variants. This changes the store catalog; verify publication status, pricing, and inventory before execution. | sync or async | mutation | 1.0.0 |
shopify.get_order | Retrieve one order with normalized line items, customer, totals, and fulfillment state. | sync or async | read | 1.0.0 |
shopify.get_product | Retrieve one product with normalized variants, pricing, and inventory metadata. | sync or async | read | 1.0.0 |
shopify.list_customers | List store customers using identity, time, and pagination filters with normalized order and spend summaries. | sync or async | read | 1.0.0 |
shopify.list_orders | List orders using customer, payment, fulfillment, time, and pagination filters. | sync or async | read | 1.0.0 |
shopify.list_products | List products using publication status and pagination filters, including normalized variants and inventory metadata. | sync or async | read | 1.0.0 |
shopify.update_inventory | Set inventory for a product variant at a location. This overwrites the available quantity, so verify the target item, location, and count. | sync or async | mutation | 1.0.0 |
shopify.update_order | Update provider-supported order fields, payment or fulfillment state, note, and tags. Verify state transitions before execution. | sync or async | mutation | 1.0.0 |
shopify.update_product | Update product content, pricing metadata, tags, or publication state. Repeating the same values has no additional effect. | sync or async | mutation | 1.0.0 |
Only the rows above are implemented. A capability tool omitted by this manifest returns not_supported; eyeball never synthesizes provider parity.
Supported canonical triggers
This manifest does not implement a canonical trigger.
Input and output schemas
shopify.create_fulfillment
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:create_fulfillment:1.0.0:shopify",
"type": "object",
"description": "Order, fulfilled items, and tracking details.",
"additionalProperties": false,
"required": [
"orderId"
],
"properties": {
"orderId": {
"type": "string",
"description": "Provider identifier of the order.",
"minLength": 1
},
"lineItems": {
"type": "array",
"description": "Specific order lines to fulfill; omit to fulfill all remaining items.",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"lineItemId",
"quantity"
],
"properties": {
"lineItemId": {
"type": "string",
"description": "Provider identifier of the order line.",
"minLength": 1
},
"quantity": {
"type": "integer",
"description": "Quantity to fulfill.",
"minimum": 1
}
}
}
},
"trackingCompany": {
"type": "string",
"description": "Carrier name."
},
"trackingNumber": {
"type": "string",
"description": "Carrier tracking number."
},
"trackingUrl": {
"type": "string",
"format": "uri",
"description": "Carrier tracking URL when supported."
},
"notifyCustomer": {
"type": "boolean",
"description": "Whether the provider should notify the customer.",
"default": false
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:create_fulfillment:output:1.0.0:shopify",
"type": "object",
"description": "The newly created fulfillment.",
"additionalProperties": false,
"required": [
"fulfillmentId",
"orderId",
"status",
"lineItems",
"createdAt"
],
"properties": {
"fulfillmentId": {
"type": "string",
"description": "Provider identifier of the fulfillment.",
"minLength": 1
},
"orderId": {
"type": "string",
"description": "Provider identifier of the fulfilled order.",
"minLength": 1
},
"status": {
"type": "string",
"description": "Fulfillment state."
},
"trackingCompany": {
"type": "string",
"description": "Carrier name."
},
"trackingNumber": {
"type": "string",
"description": "Carrier tracking number."
},
"lineItems": {
"type": "array",
"description": "Provider fulfillment line records.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Fulfillment creation timestamp."
}
}
}shopify.create_product
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:create_product:1.0.0:shopify",
"type": "object",
"description": "Product content and initial variants.",
"additionalProperties": false,
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"description": "Product title.",
"minLength": 1
},
"descriptionHtml": {
"type": "string",
"description": "Product description serialized as HTML."
},
"vendor": {
"type": "string",
"description": "Product vendor or brand."
},
"productType": {
"type": "string",
"description": "Merchant product classification."
},
"handle": {
"type": "string",
"description": "Storefront handle or slug.",
"minLength": 1
},
"status": {
"type": "string",
"description": "Initial publication state.",
"enum": [
"active",
"draft",
"archived"
],
"default": "draft"
},
"tags": {
"type": "array",
"description": "Initial product tags.",
"items": {
"type": "string",
"minLength": 1
}
},
"variants": {
"type": "array",
"description": "Initial product variants; the provider creates a default variant when omitted.",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"title": {
"type": "string",
"description": "Variant title."
},
"price": {
"type": "number",
"description": "Variant price in major currency units.",
"minimum": 0
},
"sku": {
"type": "string",
"description": "Merchant stock-keeping unit."
},
"inventoryQuantity": {
"type": "integer",
"description": "Initial inventory quantity.",
"default": 0
}
}
}
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:create_product:output:1.0.0:shopify",
"type": "object",
"description": "The newly created product.",
"additionalProperties": false,
"required": [
"product"
],
"properties": {
"product": {
"type": "object",
"description": "A normalized e-commerce product.",
"additionalProperties": false,
"required": [
"productId",
"title",
"status",
"tags",
"variants",
"createdAt",
"updatedAt"
],
"properties": {
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Product title."
},
"descriptionHtml": {
"type": "string",
"description": "Product description serialized as HTML."
},
"vendor": {
"type": "string",
"description": "Product vendor or brand."
},
"productType": {
"type": "string",
"description": "Merchant product classification."
},
"handle": {
"type": "string",
"description": "Storefront handle or slug."
},
"status": {
"type": "string",
"description": "Product publication state."
},
"tags": {
"type": "array",
"description": "Product tags.",
"items": {
"type": "string",
"minLength": 1
}
},
"variants": {
"type": "array",
"description": "Product variants.",
"items": {
"type": "object",
"description": "A normalized product variant.",
"additionalProperties": false,
"required": [
"variantId",
"title",
"price",
"inventoryItemId",
"inventoryQuantity"
],
"properties": {
"variantId": {
"type": "string",
"description": "Provider identifier of the variant.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Variant title."
},
"price": {
"type": "number",
"description": "Variant price in major currency units.",
"minimum": 0
},
"sku": {
"type": "string",
"description": "Merchant stock-keeping unit."
},
"inventoryItemId": {
"type": "string",
"description": "Provider inventory-item identifier.",
"minLength": 1
},
"inventoryQuantity": {
"type": "integer",
"description": "Current inventory quantity reported by the product API."
}
}
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Product creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent product update timestamp."
}
}
}
}
}shopify.get_order
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:get_order:1.0.0:shopify",
"type": "object",
"description": "Identifier of the order to retrieve.",
"additionalProperties": false,
"required": [
"orderId"
],
"properties": {
"orderId": {
"type": "string",
"description": "Provider identifier of the order.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:get_order:output:1.0.0:shopify",
"type": "object",
"description": "The requested normalized order.",
"additionalProperties": false,
"required": [
"order"
],
"properties": {
"order": {
"type": "object",
"description": "A normalized e-commerce order.",
"additionalProperties": false,
"required": [
"orderId",
"name",
"financialStatus",
"fulfillmentStatus",
"lineItems",
"total",
"currency",
"createdAt",
"updatedAt"
],
"properties": {
"orderId": {
"type": "string",
"description": "Provider identifier of the order.",
"minLength": 1
},
"name": {
"type": "string",
"description": "Human-readable order number or name."
},
"email": {
"type": "string",
"format": "email",
"description": "Customer email address."
},
"customerId": {
"type": "string",
"description": "Provider identifier of the store customer.",
"minLength": 1
},
"financialStatus": {
"type": "string",
"description": "Order payment state."
},
"fulfillmentStatus": {
"type": [
"string",
"null"
],
"description": "Order fulfillment state, or null when unfulfilled."
},
"lineItems": {
"type": "array",
"description": "Purchased order lines.",
"items": {
"type": "object",
"description": "One normalized order line.",
"additionalProperties": false,
"required": [
"lineItemId",
"title",
"quantity",
"unitPrice"
],
"properties": {
"lineItemId": {
"type": "string",
"description": "Provider identifier of the order line.",
"minLength": 1
},
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
},
"variantId": {
"type": "string",
"description": "Provider identifier of the product variant.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Purchased item title."
},
"quantity": {
"type": "integer",
"description": "Purchased quantity.",
"minimum": 0
},
"unitPrice": {
"type": "number",
"description": "Price per item in major currency units.",
"minimum": 0
}
}
}
},
"total": {
"type": "number",
"description": "Order total in major currency units.",
"minimum": 0
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code.",
"pattern": "^[A-Z]{3}$"
},
"note": {
"type": [
"string",
"null"
],
"description": "Merchant or customer order note."
},
"tags": {
"type": "array",
"description": "Order tags.",
"items": {
"type": "string",
"minLength": 1
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Order creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent order update timestamp."
}
}
}
}
}shopify.get_product
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:get_product:1.0.0:shopify",
"type": "object",
"description": "Identifier of the product to retrieve.",
"additionalProperties": false,
"required": [
"productId"
],
"properties": {
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:get_product:output:1.0.0:shopify",
"type": "object",
"description": "The requested normalized product.",
"additionalProperties": false,
"required": [
"product"
],
"properties": {
"product": {
"type": "object",
"description": "A normalized e-commerce product.",
"additionalProperties": false,
"required": [
"productId",
"title",
"status",
"tags",
"variants",
"createdAt",
"updatedAt"
],
"properties": {
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Product title."
},
"descriptionHtml": {
"type": "string",
"description": "Product description serialized as HTML."
},
"vendor": {
"type": "string",
"description": "Product vendor or brand."
},
"productType": {
"type": "string",
"description": "Merchant product classification."
},
"handle": {
"type": "string",
"description": "Storefront handle or slug."
},
"status": {
"type": "string",
"description": "Product publication state."
},
"tags": {
"type": "array",
"description": "Product tags.",
"items": {
"type": "string",
"minLength": 1
}
},
"variants": {
"type": "array",
"description": "Product variants.",
"items": {
"type": "object",
"description": "A normalized product variant.",
"additionalProperties": false,
"required": [
"variantId",
"title",
"price",
"inventoryItemId",
"inventoryQuantity"
],
"properties": {
"variantId": {
"type": "string",
"description": "Provider identifier of the variant.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Variant title."
},
"price": {
"type": "number",
"description": "Variant price in major currency units.",
"minimum": 0
},
"sku": {
"type": "string",
"description": "Merchant stock-keeping unit."
},
"inventoryItemId": {
"type": "string",
"description": "Provider inventory-item identifier.",
"minLength": 1
},
"inventoryQuantity": {
"type": "integer",
"description": "Current inventory quantity reported by the product API."
}
}
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Product creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent product update timestamp."
}
}
}
}
}shopify.list_customers
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:list_customers:1.0.0:shopify",
"type": "object",
"description": "Customer identity filters and pagination.",
"additionalProperties": false,
"properties": {
"query": {
"type": "string",
"description": "Case-insensitive customer name or email query.",
"minLength": 1
},
"createdAfter": {
"type": "string",
"format": "date-time",
"description": "Return customers created at or after this timestamp."
},
"createdBefore": {
"type": "string",
"format": "date-time",
"description": "Return customers created before this timestamp."
},
"pageSize": {
"type": "integer",
"description": "Maximum number of customers to return in one page.",
"minimum": 1,
"maximum": 100,
"default": 50
},
"pageToken": {
"type": "string",
"description": "Opaque continuation token from a previous customer page.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:list_customers:output:1.0.0:shopify",
"type": "object",
"description": "One page of normalized store customers.",
"additionalProperties": false,
"required": [
"customers"
],
"properties": {
"customers": {
"type": "array",
"description": "Customers in provider order.",
"items": {
"type": "object",
"description": "A normalized e-commerce customer.",
"additionalProperties": false,
"required": [
"customerId",
"firstName",
"lastName",
"email",
"ordersCount",
"totalSpent",
"createdAt",
"updatedAt"
],
"properties": {
"customerId": {
"type": "string",
"description": "Provider identifier of the store customer.",
"minLength": 1
},
"firstName": {
"type": "string",
"description": "Customer given name."
},
"lastName": {
"type": "string",
"description": "Customer family name."
},
"email": {
"type": "string",
"format": "email",
"description": "Customer email address."
},
"phone": {
"type": "string",
"description": "Customer phone number."
},
"ordersCount": {
"type": "integer",
"description": "Number of orders attributed to the customer.",
"minimum": 0
},
"totalSpent": {
"type": "number",
"description": "Lifetime spend in major currency units.",
"minimum": 0
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Customer creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent customer update timestamp."
}
}
}
},
"nextPageToken": {
"type": "string",
"description": "Opaque token to request the next page of customers; absent when the result is complete.",
"minLength": 1
}
}
}shopify.list_orders
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:list_orders:1.0.0:shopify",
"type": "object",
"description": "Order filters and pagination.",
"additionalProperties": false,
"properties": {
"customerId": {
"type": "string",
"description": "Provider identifier of the store customer.",
"minLength": 1
},
"financialStatus": {
"type": "string",
"description": "Order payment state to match.",
"minLength": 1
},
"fulfillmentStatus": {
"type": "string",
"description": "Fulfillment state to match.",
"minLength": 1
},
"createdAfter": {
"type": "string",
"format": "date-time",
"description": "Return orders created at or after this timestamp."
},
"createdBefore": {
"type": "string",
"format": "date-time",
"description": "Return orders created before this timestamp."
},
"pageSize": {
"type": "integer",
"description": "Maximum number of orders to return in one page.",
"minimum": 1,
"maximum": 100,
"default": 50
},
"pageToken": {
"type": "string",
"description": "Opaque continuation token from a previous order page.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:list_orders:output:1.0.0:shopify",
"type": "object",
"description": "One page of normalized orders.",
"additionalProperties": false,
"required": [
"orders"
],
"properties": {
"orders": {
"type": "array",
"description": "Orders in provider order.",
"items": {
"type": "object",
"description": "A normalized e-commerce order.",
"additionalProperties": false,
"required": [
"orderId",
"name",
"financialStatus",
"fulfillmentStatus",
"lineItems",
"total",
"currency",
"createdAt",
"updatedAt"
],
"properties": {
"orderId": {
"type": "string",
"description": "Provider identifier of the order.",
"minLength": 1
},
"name": {
"type": "string",
"description": "Human-readable order number or name."
},
"email": {
"type": "string",
"format": "email",
"description": "Customer email address."
},
"customerId": {
"type": "string",
"description": "Provider identifier of the store customer.",
"minLength": 1
},
"financialStatus": {
"type": "string",
"description": "Order payment state."
},
"fulfillmentStatus": {
"type": [
"string",
"null"
],
"description": "Order fulfillment state, or null when unfulfilled."
},
"lineItems": {
"type": "array",
"description": "Purchased order lines.",
"items": {
"type": "object",
"description": "One normalized order line.",
"additionalProperties": false,
"required": [
"lineItemId",
"title",
"quantity",
"unitPrice"
],
"properties": {
"lineItemId": {
"type": "string",
"description": "Provider identifier of the order line.",
"minLength": 1
},
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
},
"variantId": {
"type": "string",
"description": "Provider identifier of the product variant.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Purchased item title."
},
"quantity": {
"type": "integer",
"description": "Purchased quantity.",
"minimum": 0
},
"unitPrice": {
"type": "number",
"description": "Price per item in major currency units.",
"minimum": 0
}
}
}
},
"total": {
"type": "number",
"description": "Order total in major currency units.",
"minimum": 0
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code.",
"pattern": "^[A-Z]{3}$"
},
"note": {
"type": [
"string",
"null"
],
"description": "Merchant or customer order note."
},
"tags": {
"type": "array",
"description": "Order tags.",
"items": {
"type": "string",
"minLength": 1
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Order creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent order update timestamp."
}
}
}
},
"nextPageToken": {
"type": "string",
"description": "Opaque token to request the next page of orders; absent when the result is complete.",
"minLength": 1
}
}
}shopify.list_products
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:list_products:1.0.0:shopify",
"type": "object",
"description": "Product filters and pagination.",
"additionalProperties": false,
"properties": {
"status": {
"type": "string",
"description": "Product publication state to match.",
"minLength": 1
},
"collectionId": {
"type": "string",
"description": "Provider collection identifier when supported.",
"minLength": 1
},
"pageSize": {
"type": "integer",
"description": "Maximum number of products to return in one page.",
"minimum": 1,
"maximum": 100,
"default": 50
},
"pageToken": {
"type": "string",
"description": "Opaque continuation token from a previous product page.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:list_products:output:1.0.0:shopify",
"type": "object",
"description": "One page of normalized products.",
"additionalProperties": false,
"required": [
"products"
],
"properties": {
"products": {
"type": "array",
"description": "Products in provider order.",
"items": {
"type": "object",
"description": "A normalized e-commerce product.",
"additionalProperties": false,
"required": [
"productId",
"title",
"status",
"tags",
"variants",
"createdAt",
"updatedAt"
],
"properties": {
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Product title."
},
"descriptionHtml": {
"type": "string",
"description": "Product description serialized as HTML."
},
"vendor": {
"type": "string",
"description": "Product vendor or brand."
},
"productType": {
"type": "string",
"description": "Merchant product classification."
},
"handle": {
"type": "string",
"description": "Storefront handle or slug."
},
"status": {
"type": "string",
"description": "Product publication state."
},
"tags": {
"type": "array",
"description": "Product tags.",
"items": {
"type": "string",
"minLength": 1
}
},
"variants": {
"type": "array",
"description": "Product variants.",
"items": {
"type": "object",
"description": "A normalized product variant.",
"additionalProperties": false,
"required": [
"variantId",
"title",
"price",
"inventoryItemId",
"inventoryQuantity"
],
"properties": {
"variantId": {
"type": "string",
"description": "Provider identifier of the variant.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Variant title."
},
"price": {
"type": "number",
"description": "Variant price in major currency units.",
"minimum": 0
},
"sku": {
"type": "string",
"description": "Merchant stock-keeping unit."
},
"inventoryItemId": {
"type": "string",
"description": "Provider inventory-item identifier.",
"minLength": 1
},
"inventoryQuantity": {
"type": "integer",
"description": "Current inventory quantity reported by the product API."
}
}
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Product creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent product update timestamp."
}
}
}
},
"nextPageToken": {
"type": "string",
"description": "Opaque token to request the next page of products; absent when the result is complete.",
"minLength": 1
}
}
}shopify.update_inventory
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:update_inventory:1.0.0:shopify",
"type": "object",
"description": "Inventory item, location, and absolute available quantity.",
"additionalProperties": false,
"required": [
"inventoryItemId",
"locationId",
"quantity"
],
"properties": {
"inventoryItemId": {
"type": "string",
"description": "Provider inventory-item identifier.",
"minLength": 1
},
"locationId": {
"type": "string",
"description": "Provider inventory-location identifier.",
"minLength": 1
},
"quantity": {
"type": "integer",
"description": "Absolute available quantity to set."
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:update_inventory:output:1.0.0:shopify",
"type": "object",
"description": "The resulting inventory level.",
"additionalProperties": false,
"required": [
"inventoryItemId",
"locationId",
"quantity",
"updatedAt"
],
"properties": {
"inventoryItemId": {
"type": "string",
"description": "Provider inventory-item identifier.",
"minLength": 1
},
"locationId": {
"type": "string",
"description": "Provider inventory-location identifier.",
"minLength": 1
},
"quantity": {
"type": "integer",
"description": "Available quantity after the update."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Inventory update timestamp."
}
}
}shopify.update_order
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:update_order:1.0.0:shopify",
"type": "object",
"description": "Order identifier and fields to update.",
"additionalProperties": false,
"required": [
"orderId"
],
"properties": {
"orderId": {
"type": "string",
"description": "Provider identifier of the order.",
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"description": "Updated customer email address."
},
"financialStatus": {
"type": "string",
"description": "Updated payment state."
},
"fulfillmentStatus": {
"type": [
"string",
"null"
],
"description": "Updated fulfillment state, or null when unfulfilled."
},
"note": {
"type": [
"string",
"null"
],
"description": "Updated merchant or customer order note."
},
"tags": {
"type": "array",
"description": "Replacement order tags.",
"items": {
"type": "string",
"minLength": 1
}
}
},
"minProperties": 2
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:update_order:output:1.0.0:shopify",
"type": "object",
"description": "The updated order.",
"additionalProperties": false,
"required": [
"order"
],
"properties": {
"order": {
"type": "object",
"description": "A normalized e-commerce order.",
"additionalProperties": false,
"required": [
"orderId",
"name",
"financialStatus",
"fulfillmentStatus",
"lineItems",
"total",
"currency",
"createdAt",
"updatedAt"
],
"properties": {
"orderId": {
"type": "string",
"description": "Provider identifier of the order.",
"minLength": 1
},
"name": {
"type": "string",
"description": "Human-readable order number or name."
},
"email": {
"type": "string",
"format": "email",
"description": "Customer email address."
},
"customerId": {
"type": "string",
"description": "Provider identifier of the store customer.",
"minLength": 1
},
"financialStatus": {
"type": "string",
"description": "Order payment state."
},
"fulfillmentStatus": {
"type": [
"string",
"null"
],
"description": "Order fulfillment state, or null when unfulfilled."
},
"lineItems": {
"type": "array",
"description": "Purchased order lines.",
"items": {
"type": "object",
"description": "One normalized order line.",
"additionalProperties": false,
"required": [
"lineItemId",
"title",
"quantity",
"unitPrice"
],
"properties": {
"lineItemId": {
"type": "string",
"description": "Provider identifier of the order line.",
"minLength": 1
},
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
},
"variantId": {
"type": "string",
"description": "Provider identifier of the product variant.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Purchased item title."
},
"quantity": {
"type": "integer",
"description": "Purchased quantity.",
"minimum": 0
},
"unitPrice": {
"type": "number",
"description": "Price per item in major currency units.",
"minimum": 0
}
}
}
},
"total": {
"type": "number",
"description": "Order total in major currency units.",
"minimum": 0
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code.",
"pattern": "^[A-Z]{3}$"
},
"note": {
"type": [
"string",
"null"
],
"description": "Merchant or customer order note."
},
"tags": {
"type": "array",
"description": "Order tags.",
"items": {
"type": "string",
"minLength": 1
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Order creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent order update timestamp."
}
}
}
}
}shopify.update_product
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:update_product:1.0.0:shopify",
"type": "object",
"description": "Product identifier and fields to update.",
"additionalProperties": false,
"required": [
"productId"
],
"properties": {
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Updated product title."
},
"descriptionHtml": {
"type": "string",
"description": "Updated product description serialized as HTML."
},
"vendor": {
"type": "string",
"description": "Updated vendor or brand."
},
"productType": {
"type": "string",
"description": "Updated merchant product classification."
},
"status": {
"type": "string",
"description": "Updated publication state.",
"enum": [
"active",
"draft",
"archived"
]
},
"tags": {
"type": "array",
"description": "Replacement product tags.",
"items": {
"type": "string",
"minLength": 1
}
}
},
"minProperties": 2
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:ecommerce:update_product:output:1.0.0:shopify",
"type": "object",
"description": "The updated product.",
"additionalProperties": false,
"required": [
"product"
],
"properties": {
"product": {
"type": "object",
"description": "A normalized e-commerce product.",
"additionalProperties": false,
"required": [
"productId",
"title",
"status",
"tags",
"variants",
"createdAt",
"updatedAt"
],
"properties": {
"productId": {
"type": "string",
"description": "Provider identifier of the product.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Product title."
},
"descriptionHtml": {
"type": "string",
"description": "Product description serialized as HTML."
},
"vendor": {
"type": "string",
"description": "Product vendor or brand."
},
"productType": {
"type": "string",
"description": "Merchant product classification."
},
"handle": {
"type": "string",
"description": "Storefront handle or slug."
},
"status": {
"type": "string",
"description": "Product publication state."
},
"tags": {
"type": "array",
"description": "Product tags.",
"items": {
"type": "string",
"minLength": 1
}
},
"variants": {
"type": "array",
"description": "Product variants.",
"items": {
"type": "object",
"description": "A normalized product variant.",
"additionalProperties": false,
"required": [
"variantId",
"title",
"price",
"inventoryItemId",
"inventoryQuantity"
],
"properties": {
"variantId": {
"type": "string",
"description": "Provider identifier of the variant.",
"minLength": 1
},
"title": {
"type": "string",
"description": "Variant title."
},
"price": {
"type": "number",
"description": "Variant price in major currency units.",
"minimum": 0
},
"sku": {
"type": "string",
"description": "Merchant stock-keeping unit."
},
"inventoryItemId": {
"type": "string",
"description": "Provider inventory-item identifier.",
"minLength": 1
},
"inventoryQuantity": {
"type": "integer",
"description": "Current inventory quantity reported by the product API."
}
}
}
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Product creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent product update timestamp."
}
}
}
}
}Authentication
| Property | Value |
|---|---|
| Auth class | oauth2 |
| Required scopes | None |
| Optional scopes | read_productswrite_productsread_orderswrite_fulfillmentswrite_inventory |
| Credential fields | None |
Credentials are resolved inside the executor by CredentialProvider. They never belong in tool input, x_provider, model context, logs, or execution output.
Provider-specific extensions
This manifest declares no provider-specific schema extensions. Use only canonical fields.
Provider differences may appear only under x_provider.shopify and only when the schema above declares them.
Sync and async behavior
All tools are synchronous by nature, but callers may choose mode: "async" to queue them.
Mutations require a stable Idempotency-Key. The TypeScript SDK accepts it as idempotencyKey; it is never part of the JSON request body.
REST example
curl "$EYEBALL_EXECUTOR_URL/v1/execute" \
-H "Authorization: Bearer $EYEBALL_API_KEY" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: docs:shopify.create_fulfillment:demo-1' \
--data '{"tool":"shopify.create_fulfillment","userId":"demo_user","input":{"orderId":"example_orderId","notifyCustomer":false},"mode":"sync"}'Mock support
Point EYEBALL_EXECUTOR_URL at a mock-configured executor to run through the real catalog, validation, credential seam, adapter, normalized errors, and execution records with no Shopify account. Mock selection changes the executor endpoint and trusted provider base-URL configuration, never the execute request.
Limitations
- This page describes the manifest's explicit P0 subset, not every operation offered by the provider.
- Provider account policy, consent UI, quota details, and current wire compatibility still require a real-provider certification pass.
- Fields outside the canonical schemas and declared
x_providerextensions are rejected.
Versions
| Contract | Version |
|---|---|
| Runtime catalog | 1.1 |
| Manifest catalog | 1.0 |
| Manifest schema | 1.0 |
| Source | activepieces-bridge |
| Tier | P0 |
| Capabilities | ecommerce |
Next
Use Testing with mocks to exercise this toolkit before connecting a live provider account.