openapi: 3.0.3 info: title: 'CartGenie Public API' description: 'Read and write store data from your own systems: products, variants, inventory, orders and webhooks.' version: 1.0.0 servers: - url: 'https://api.cartgenie.com' tags: - name: Store description: '' - name: Products description: '' - name: Variants description: '' - name: Inventory description: '' - name: Orders description: '' - name: Webhooks description: '' components: securitySchemes: default: type: http scheme: bearer description: "Tokens are created in the CartGenie dashboard under **Settings → Public API** by a team member with the *Manage store settings* permission.\n\nEach token carries a fixed set of scopes and inherits the permissions of the member who created it, so a request succeeds only when the token scope **and** that member's store role both allow it. Revoking the token, or removing the member from the store, immediately ends access.\n\nThe Public API is enabled per store. Until it is switched on for a store, every endpoint answers `404`." security: - default: [] paths: /public/v1/store: get: summary: 'Get store information' operationId: getStoreInformation description: "Returns the store the token belongs to. Useful as a connection check: a\n`200` here means the token is valid, the Public API is enabled for the\nstore, and the token's owner still has access to it.\n\nA `404` with an empty `message` has one cause here: the Public API is not\nenabled for the store. Reach for the store settings before suspecting the\ntoken. An archived store answers `404` as well, carrying\n`This store is archived.` as the `message`." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: name: 'Example Store' domain: 'https://example.webflow.io' currency: usd timezone: UTC created_at: '2025-11-02T08:31:00.000000Z' properties: name: type: string example: 'Example Store' domain: type: string example: 'https://example.webflow.io' currency: type: string example: usd timezone: type: string example: UTC created_at: type: string example: '2025-11-02T08:31:00.000000Z' 404: description: '' content: application/json: schema: oneOf: - description: 'Public API is not enabled for this store' type: object example: message: '' properties: message: type: string example: '' - description: 'Store is archived' type: object example: message: 'This store is archived.' properties: message: type: string example: 'This store is archived.' tags: - Store /public/v1/products: get: summary: 'List products' operationId: listProducts description: "Returns the store's products, oldest update first. Pass `updated_since` to\nreceive an incremental feed: the result then also carries the products the\nstore has removed, so a mirrored catalog can drop them.\n\n`deleted_at` is the removal signal — drop any record that carries one,\nwhatever its `status`. Removal reaches the feed in two shapes. A product\narchived in the admin keeps the full product shape and its own status. A\nproduct removed permanently collapses to `\"status\": \"deleted\"` and carries\nonly `id`, `name`, `slug`, `status`, `deleted_at` and `updated_at` — no\n`price`, `stock`, `variants`, `images`, `url` or `created_at`. Read\n`deleted_at` and `status` before any other field.\n\nArchiving is a removal here by design: it unpublishes the product, so a\nshopper cannot buy it and it belongs out of any catalog you mirror from\nthis feed. Restoring the product in the admin returns it to a later page\nwith `deleted_at` back to `null`, carrying whatever status the restoring\naction set: un-archiving returns it as `draft`, publishing straight out of\nthe archive returns it as `published`. It is buyable again only once it is\npublished.\n\nReconcile against a full listing on a schedule: a permanent removal is not\nguaranteed to reach the feed." parameters: - in: query name: limit description: 'Results per page, 1–250.' example: 50 required: false schema: type: integer description: 'Results per page, 1–250.' example: 50 - in: query name: cursor description: 'Opaque cursor from `meta.next_cursor` of the previous page.' example: eyJpZCI6MzY0fQ required: false schema: type: string description: 'Opaque cursor from `meta.next_cursor` of the previous page.' example: eyJpZCI6MzY0fQ - in: query name: search description: 'Matches against product name and slug.' example: tee required: false schema: type: string description: 'Matches against product name and slug.' example: tee - in: query name: updated_since description: 'ISO-8601 timestamp. Returns products changed or deleted since then.' example: '2026-08-01T00:00:00Z' required: false schema: type: string description: 'ISO-8601 timestamp. Returns products changed or deleted since then.' example: '2026-08-01T00:00:00Z' responses: 200: description: '' content: application/json: schema: oneOf: - description: 'Catalog page' type: object example: data: - id: 364 name: 'Classic Tee' slug: classic-tee status: published published: true price: 4900 formatted_price: $49.00 stock: 120 available_stock: 118 track_inventory: true images: main_image: 'https://cdn.example.com/tee.jpg' main_image_large: 'https://cdn.example.com/tee-large.jpg' url: 'https://store.example.com/product/classic-tee' variants: - id: 2301 product_id: 364 sku: TEE-BLK-M title: black-medium published: true price: 4900 formatted_price: $49.00 stock: 120 reserved_stock: 2 available_stock: 118 track_inventory: true requires_shipping: true dimensions: height: 2 length: 30 width: 20 weight: 180 created_at: '2026-01-14T09:00:00.000000Z' updated_at: '2026-08-01T11:20:31.000000Z' created_at: '2026-01-14T09:00:00.000000Z' deleted_at: null updated_at: '2026-08-01T11:20:31.000000Z' meta: per_page: 50 has_more: true next_cursor: eyJpZCI6MzY0fQ properties: data: type: array example: - id: 364 name: 'Classic Tee' slug: classic-tee status: published published: true price: 4900 formatted_price: $49.00 stock: 120 available_stock: 118 track_inventory: true images: main_image: 'https://cdn.example.com/tee.jpg' main_image_large: 'https://cdn.example.com/tee-large.jpg' url: 'https://store.example.com/product/classic-tee' variants: - id: 2301 product_id: 364 sku: TEE-BLK-M title: black-medium published: true price: 4900 formatted_price: $49.00 stock: 120 reserved_stock: 2 available_stock: 118 track_inventory: true requires_shipping: true dimensions: height: 2 length: 30 width: 20 weight: 180 created_at: '2026-01-14T09:00:00.000000Z' updated_at: '2026-08-01T11:20:31.000000Z' created_at: '2026-01-14T09:00:00.000000Z' deleted_at: null updated_at: '2026-08-01T11:20:31.000000Z' items: type: object properties: id: type: integer example: 364 name: type: string example: 'Classic Tee' slug: type: string example: classic-tee status: type: string example: published published: type: boolean example: true price: type: integer example: 4900 formatted_price: type: string example: $49.00 stock: type: integer example: 120 available_stock: type: integer example: 118 track_inventory: type: boolean example: true images: type: object properties: main_image: type: string example: 'https://cdn.example.com/tee.jpg' main_image_large: type: string example: 'https://cdn.example.com/tee-large.jpg' url: type: string example: 'https://store.example.com/product/classic-tee' variants: type: array example: - id: 2301 product_id: 364 sku: TEE-BLK-M title: black-medium published: true price: 4900 formatted_price: $49.00 stock: 120 reserved_stock: 2 available_stock: 118 track_inventory: true requires_shipping: true dimensions: height: 2 length: 30 width: 20 weight: 180 created_at: '2026-01-14T09:00:00.000000Z' updated_at: '2026-08-01T11:20:31.000000Z' items: type: object properties: id: type: integer example: 2301 product_id: type: integer example: 364 sku: type: string example: TEE-BLK-M title: type: string example: black-medium published: type: boolean example: true price: type: integer example: 4900 formatted_price: type: string example: $49.00 stock: type: integer example: 120 reserved_stock: type: integer example: 2 available_stock: type: integer example: 118 track_inventory: type: boolean example: true requires_shipping: type: boolean example: true dimensions: type: object properties: height: { type: integer, example: 2 } length: { type: integer, example: 30 } width: { type: integer, example: 20 } weight: { type: integer, example: 180 } created_at: type: string example: '2026-01-14T09:00:00.000000Z' updated_at: type: string example: '2026-08-01T11:20:31.000000Z' created_at: type: string example: '2026-01-14T09:00:00.000000Z' deleted_at: type: string example: null nullable: true updated_at: type: string example: '2026-08-01T11:20:31.000000Z' meta: type: object properties: per_page: type: integer example: 50 has_more: type: boolean example: true next_cursor: type: string example: eyJpZCI6MzY0fQ - description: 'Incremental feed carrying both removal shapes' type: object example: data: - id: 351 name: 'Summer Cap' slug: summer-cap status: deleted deleted_at: '2026-08-03T14:22:09.000000Z' updated_at: '2026-08-03T14:22:09.000000Z' - id: 358 name: 'Winter Scarf' slug: winter-scarf status: archived published: false price: 2900 formatted_price: $29.00 stock: 0 available_stock: 0 track_inventory: true images: main_image: 'https://cdn.example.com/scarf.jpg' main_image_large: 'https://cdn.example.com/scarf-large.jpg' url: 'https://store.example.com/product/winter-scarf' variants: - id: 2288 product_id: 358 sku: SCARF-GRY title: grey published: false price: 2900 formatted_price: $29.00 stock: 0 reserved_stock: 0 available_stock: 0 track_inventory: true requires_shipping: true dimensions: height: 1 length: 25 width: 15 weight: 90 created_at: '2026-02-02T08:12:00.000000Z' updated_at: '2026-08-04T09:15:44.000000Z' created_at: '2026-02-02T08:12:00.000000Z' deleted_at: '2026-08-04T09:15:44.000000Z' updated_at: '2026-08-04T09:15:44.000000Z' meta: per_page: 50 has_more: false next_cursor: null properties: data: type: array example: - id: 351 name: 'Summer Cap' slug: summer-cap status: deleted deleted_at: '2026-08-03T14:22:09.000000Z' updated_at: '2026-08-03T14:22:09.000000Z' - id: 358 name: 'Winter Scarf' slug: winter-scarf status: archived published: false price: 2900 formatted_price: $29.00 stock: 0 available_stock: 0 track_inventory: true images: main_image: 'https://cdn.example.com/scarf.jpg' main_image_large: 'https://cdn.example.com/scarf-large.jpg' url: 'https://store.example.com/product/winter-scarf' variants: - id: 2288 product_id: 358 sku: SCARF-GRY title: grey published: false price: 2900 formatted_price: $29.00 stock: 0 reserved_stock: 0 available_stock: 0 track_inventory: true requires_shipping: true dimensions: height: 1 length: 25 width: 15 weight: 90 created_at: '2026-02-02T08:12:00.000000Z' updated_at: '2026-08-04T09:15:44.000000Z' created_at: '2026-02-02T08:12:00.000000Z' deleted_at: '2026-08-04T09:15:44.000000Z' updated_at: '2026-08-04T09:15:44.000000Z' items: type: object properties: id: type: integer example: 351 name: type: string example: 'Summer Cap' slug: type: string example: summer-cap status: type: string example: deleted deleted_at: type: string example: '2026-08-03T14:22:09.000000Z' updated_at: type: string example: '2026-08-03T14:22:09.000000Z' meta: type: object properties: per_page: type: integer example: 50 has_more: type: boolean example: false next_cursor: type: string example: null nullable: true 422: description: 'Malformed cursor' content: application/json: schema: type: object example: message: 'The cursor is invalid.' errors: cursor: - 'The cursor is invalid.' properties: message: type: string example: 'The cursor is invalid.' errors: type: object properties: cursor: type: array example: - 'The cursor is invalid.' items: type: string tags: - Products '/public/v1/products/{id}': get: summary: 'Get a product' operationId: getAProduct description: "Includes the product's variants." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 364 name: 'Classic Tee' slug: classic-tee status: published published: true price: 4900 formatted_price: $49.00 stock: 120 available_stock: 118 track_inventory: true images: main_image: 'https://cdn.example.com/tee.jpg' main_image_large: 'https://cdn.example.com/tee-large.jpg' url: 'https://store.example.com/product/classic-tee' variants: - id: 2301 product_id: 364 sku: TEE-BLK-M title: black-medium published: true price: 4900 formatted_price: $49.00 stock: 120 reserved_stock: 2 available_stock: 118 track_inventory: true requires_shipping: true dimensions: height: 2 length: 30 width: 20 weight: 180 created_at: '2026-01-14T09:00:00.000000Z' updated_at: '2026-08-01T11:20:31.000000Z' created_at: '2026-01-14T09:00:00.000000Z' deleted_at: null updated_at: '2026-08-01T11:20:31.000000Z' properties: id: type: integer example: 364 name: type: string example: 'Classic Tee' slug: type: string example: classic-tee status: type: string example: published published: type: boolean example: true price: type: integer example: 4900 formatted_price: type: string example: $49.00 stock: type: integer example: 120 available_stock: type: integer example: 118 track_inventory: type: boolean example: true images: type: object properties: main_image: type: string example: 'https://cdn.example.com/tee.jpg' main_image_large: type: string example: 'https://cdn.example.com/tee-large.jpg' url: type: string example: 'https://store.example.com/product/classic-tee' variants: type: array example: - id: 2301 product_id: 364 sku: TEE-BLK-M title: black-medium published: true price: 4900 formatted_price: $49.00 stock: 120 reserved_stock: 2 available_stock: 118 track_inventory: true requires_shipping: true dimensions: height: 2 length: 30 width: 20 weight: 180 created_at: '2026-01-14T09:00:00.000000Z' updated_at: '2026-08-01T11:20:31.000000Z' items: type: object properties: id: type: integer example: 2301 product_id: type: integer example: 364 sku: type: string example: TEE-BLK-M title: type: string example: black-medium published: type: boolean example: true price: type: integer example: 4900 formatted_price: type: string example: $49.00 stock: type: integer example: 120 reserved_stock: type: integer example: 2 available_stock: type: integer example: 118 track_inventory: type: boolean example: true requires_shipping: type: boolean example: true dimensions: type: object properties: height: type: integer example: 2 length: type: integer example: 30 width: type: integer example: 20 weight: type: integer example: 180 created_at: type: string example: '2026-01-14T09:00:00.000000Z' updated_at: type: string example: '2026-08-01T11:20:31.000000Z' created_at: type: string example: '2026-01-14T09:00:00.000000Z' deleted_at: type: string example: null nullable: true updated_at: type: string example: '2026-08-01T11:20:31.000000Z' 404: description: 'Product belongs to another store or does not exist' content: application/json: schema: type: object example: message: 'Resource not found.' properties: message: type: string example: 'Resource not found.' tags: - Products parameters: - in: path name: id description: 'The product id.' example: 364 required: true schema: type: integer /public/v1/variants: get: summary: 'List variants' operationId: listVariants description: "Returns every variant in the store, oldest update first. Filter by `sku` to\nresolve your own identifiers into variant ids. SKUs are not unique within a\nstore, so this always returns an array — match on the fields you need rather\nthan assuming a single result.\n\n`stock` is the persisted level, `reserved_stock` is held by checkouts in\nflight, and `available_stock` is what a shopper can still buy.\n\nA bundle variant holds no stock of its own: `stock` carries a placeholder\nand `available_stock` is derived from its components, so read that one." parameters: - in: query name: limit description: 'Results per page, 1–250.' example: 50 required: false schema: type: integer description: 'Results per page, 1–250.' example: 50 - in: query name: cursor description: 'Opaque cursor from `meta.next_cursor` of the previous page.' example: eyJpZCI6MjMwMX0 required: false schema: type: string description: 'Opaque cursor from `meta.next_cursor` of the previous page.' example: eyJpZCI6MjMwMX0 - in: query name: sku description: 'Returns every variant carrying this SKU.' example: TEE-BLK-M required: false schema: type: string description: 'Returns every variant carrying this SKU.' example: TEE-BLK-M - in: query name: updated_since description: 'ISO-8601 timestamp.' example: '2026-08-01T00:00:00Z' required: false schema: type: string description: 'ISO-8601 timestamp.' example: '2026-08-01T00:00:00Z' responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 2301 product_id: 364 sku: TEE-BLK-M title: black-medium published: true price: 4900 formatted_price: $49.00 stock: 120 reserved_stock: 2 available_stock: 118 track_inventory: true requires_shipping: true dimensions: height: 2 length: 30 width: 20 weight: 180 created_at: '2026-01-14T09:00:00.000000Z' updated_at: '2026-08-01T11:20:31.000000Z' meta: per_page: 50 has_more: false next_cursor: null properties: data: type: array example: - id: 2301 product_id: 364 sku: TEE-BLK-M title: black-medium published: true price: 4900 formatted_price: $49.00 stock: 120 reserved_stock: 2 available_stock: 118 track_inventory: true requires_shipping: true dimensions: height: 2 length: 30 width: 20 weight: 180 created_at: '2026-01-14T09:00:00.000000Z' updated_at: '2026-08-01T11:20:31.000000Z' items: type: object properties: id: type: integer example: 2301 product_id: type: integer example: 364 sku: type: string example: TEE-BLK-M title: type: string example: black-medium published: type: boolean example: true price: type: integer example: 4900 formatted_price: type: string example: $49.00 stock: type: integer example: 120 reserved_stock: type: integer example: 2 available_stock: type: integer example: 118 track_inventory: type: boolean example: true requires_shipping: type: boolean example: true dimensions: type: object properties: height: type: integer example: 2 length: type: integer example: 30 width: type: integer example: 20 weight: type: integer example: 180 created_at: type: string example: '2026-01-14T09:00:00.000000Z' updated_at: type: string example: '2026-08-01T11:20:31.000000Z' meta: type: object properties: per_page: type: integer example: 50 has_more: type: boolean example: false next_cursor: type: string example: null nullable: true tags: - Variants '/public/v1/variants/{id}/inventory': put: summary: 'Set variant inventory' operationId: setVariantInventory description: "Sets the stock level to an absolute value — this is not an increment. The\nvariant must have inventory tracking enabled and must be published.\n\nSend `expected_stock` to make the write conditional: the update is applied\nonly while the stored level still matches, and a mismatch answers `409`\nwithout changing anything. The conflict response carries `actual_stock`, so\na retry needs no extra read.\n\nThe comparison is against the persisted stock level, not the available one,\nso checkouts holding reserved stock will not cause spurious conflicts." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 2301 product_id: 364 sku: TEE-BLK-M title: black-medium published: true price: 4900 formatted_price: $49.00 stock: 120 reserved_stock: 2 available_stock: 118 track_inventory: true requires_shipping: true dimensions: height: 2 length: 30 width: 20 weight: 180 created_at: '2026-01-14T09:00:00.000000Z' updated_at: '2026-08-14T10:05:12.000000Z' properties: id: type: integer example: 2301 product_id: type: integer example: 364 sku: type: string example: TEE-BLK-M title: type: string example: black-medium published: type: boolean example: true price: type: integer example: 4900 formatted_price: type: string example: $49.00 stock: type: integer example: 120 reserved_stock: type: integer example: 2 available_stock: type: integer example: 118 track_inventory: type: boolean example: true requires_shipping: type: boolean example: true dimensions: type: object properties: height: type: integer example: 2 length: type: integer example: 30 width: type: integer example: 20 weight: type: integer example: 180 created_at: type: string example: '2026-01-14T09:00:00.000000Z' updated_at: type: string example: '2026-08-14T10:05:12.000000Z' 409: description: '' content: application/json: schema: oneOf: - description: 'expected_stock no longer matches' type: object example: message: 'Inventory changed before the update could be applied.' expected_stock: 118 actual_stock: 120 properties: message: type: string example: 'Inventory changed before the update could be applied.' expected_stock: type: integer example: 118 actual_stock: type: integer example: 120 - description: 'Variant is not published' type: object example: message: 'Variant must be published before inventory can be updated.' properties: message: type: string example: 'Variant must be published before inventory can be updated.' 422: description: 'Inventory tracking is off for this variant' content: application/json: schema: type: object example: message: 'Inventory tracking is not enabled for this variant.' properties: message: type: string example: 'Inventory tracking is not enabled for this variant.' tags: - Inventory requestBody: required: true content: application/json: schema: type: object properties: stock: type: integer description: 'The new absolute stock level.' example: 120 expected_stock: type: integer description: 'The level you last read. When it no longer matches, the request fails with 409.' example: 118 required: - stock parameters: - in: path name: id description: 'The variant id.' example: 2301 required: true schema: type: integer /public/v1/orders: get: summary: 'List orders' operationId: listOrders description: "Returns the store's orders, oldest update first. Pass `updated_since` for an\nincremental feed. Orders are never removed, so a cancelled order appears as\na status change rather than a deletion." parameters: - in: query name: limit description: 'Results per page, 1–250.' example: 50 required: false schema: type: integer description: 'Results per page, 1–250.' example: 50 - in: query name: cursor description: 'Opaque cursor from `meta.next_cursor` of the previous page.' example: eyJpZCI6MTAwMn0 required: false schema: type: string description: 'Opaque cursor from `meta.next_cursor` of the previous page.' example: eyJpZCI6MTAwMn0 - in: query name: updated_since description: 'ISO-8601 timestamp.' example: '2026-08-01T00:00:00Z' required: false schema: type: string description: 'ISO-8601 timestamp.' example: '2026-08-01T00:00:00Z' responses: 200: description: '' content: application/json: schema: type: object example: data: - order_id: '1002' name: '1002' guid: 01KSNP2NFV6DJWW6MXME27Q0KE status: unfulfilled currency_code: usd coupon_code: null customer_email: john@user.com customer_name: 'John Doe' shipment: tracking_url: null tracking_number: null provider: null address: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null fulfillments: [] billing: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null payment: label: 'Visa ending in 4242' status: paid method: credit_card transaction_id: pi_3Q1example details: custom_fields: 'Gift Message': 'Happy birthday' checkout_type: '' items: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled subtotal: 4900 formatted_subtotal: $49.00 total: 5391 formatted_total: $53.91 discount_total: 0 formatted_discount_total: $0.00 shipping_total: 0 formatted_shipping_total: $0.00 shipping_method_label: Standard tax_total: 491 formatted_tax_total: $4.91 created_at: '2026-08-01T10:12:00.000000Z' updated_at: '2026-08-01T10:12:00.000000Z' placed_at: '2026-08-01T10:12:00.000000Z' fulfilled_at: null disputed_at: null discounts: [] meta: per_page: 50 has_more: true next_cursor: eyJpZCI6MTAwMn0 properties: data: type: array example: - order_id: '1002' name: '1002' guid: 01KSNP2NFV6DJWW6MXME27Q0KE status: unfulfilled currency_code: usd coupon_code: null customer_email: john@user.com customer_name: 'John Doe' shipment: tracking_url: null tracking_number: null provider: null address: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null fulfillments: [] billing: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null payment: label: 'Visa ending in 4242' status: paid method: credit_card transaction_id: pi_3Q1example details: custom_fields: 'Gift Message': 'Happy birthday' checkout_type: '' items: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled subtotal: 4900 formatted_subtotal: $49.00 total: 5391 formatted_total: $53.91 discount_total: 0 formatted_discount_total: $0.00 shipping_total: 0 formatted_shipping_total: $0.00 shipping_method_label: Standard tax_total: 491 formatted_tax_total: $4.91 created_at: '2026-08-01T10:12:00.000000Z' updated_at: '2026-08-01T10:12:00.000000Z' placed_at: '2026-08-01T10:12:00.000000Z' fulfilled_at: null disputed_at: null discounts: [] items: type: object properties: order_id: type: string example: '1002' name: type: string example: '1002' guid: type: string example: 01KSNP2NFV6DJWW6MXME27Q0KE status: type: string example: unfulfilled currency_code: type: string example: usd coupon_code: type: string example: null nullable: true customer_email: type: string example: john@user.com customer_name: type: string example: 'John Doe' shipment: type: object properties: tracking_url: type: string example: null nullable: true tracking_number: type: string example: null nullable: true provider: type: string example: null nullable: true address: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true fulfillments: type: array example: [] billing: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true payment: type: object properties: label: type: string example: 'Visa ending in 4242' status: type: string example: paid method: type: string example: credit_card transaction_id: type: string example: pi_3Q1example details: type: object properties: custom_fields: type: object properties: 'Gift Message': type: string example: 'Happy birthday' checkout_type: type: string example: '' items: type: array example: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled items: type: object properties: sku: type: string example: TEE-BLK-M quantity: type: integer example: 1 price: type: integer example: 4900 name: type: string example: 'Classic Tee' slug: type: string example: classic-tee url: type: string example: 'https://store.example.com/product/classic-tee' image_url: type: string example: 'https://cdn.example.com/tee.jpg' subtotal: type: integer example: 4900 options: type: array example: - name: Size slug: size value: M value_slug: m items: type: object properties: name: type: string example: Size slug: type: string example: size value: type: string example: M value_slug: type: string example: m weight: type: integer example: 180 weight_unit: type: string example: g height: type: integer example: 2 width: type: integer example: 20 length: type: integer example: 30 downloads: type: array example: [] has_subscription: type: boolean example: false availability: type: string example: available estimated_shipping_date: type: string example: null nullable: true bundle_components: type: array example: [] fulfilled_quantity: type: integer example: 0 remaining_fulfillment_quantity: type: integer example: 1 fulfillment_state: type: string example: unfulfilled subtotal: type: integer example: 4900 formatted_subtotal: type: string example: $49.00 total: type: integer example: 5391 formatted_total: type: string example: $53.91 discount_total: type: integer example: 0 formatted_discount_total: type: string example: $0.00 shipping_total: type: integer example: 0 formatted_shipping_total: type: string example: $0.00 shipping_method_label: type: string example: Standard tax_total: type: integer example: 491 formatted_tax_total: type: string example: $4.91 created_at: type: string example: '2026-08-01T10:12:00.000000Z' updated_at: type: string example: '2026-08-01T10:12:00.000000Z' placed_at: type: string example: '2026-08-01T10:12:00.000000Z' fulfilled_at: type: string example: null nullable: true disputed_at: type: string example: null nullable: true discounts: type: array example: [] meta: type: object properties: per_page: type: integer example: 50 has_more: type: boolean example: true next_cursor: type: string example: eyJpZCI6MTAwMn0 tags: - Orders '/public/v1/orders/{orderName}': get: summary: 'Get an order' operationId: getAnOrder description: "Orders are addressed by the name the merchant sees, not by a database id.\n\nA `refunds` array is present only when `payment.status` is `refunded` or\n`partially_refunded`; each entry carries `id`, `amount`, `formatted_amount`,\n`quantity`, `status`, `reason` and `created_at`. Treat its absence as\n\"nothing refunded\" rather than as an error.\n\nSome fields are only as complete as the order is. `shipment` is an object\nwhen the order has at least one shippable item and an empty array `[]` when\nit has none, as on a digital-only order.\n\nUnder `payment`, `status` always carries a value and reads `unpaid` before\nthe charge is captured, while `method` and `transaction_id` are `null` until\nthe gateway records them. `billing` and `payment.label` are `null` together,\nand only on an order whose billing record was never written." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: order_id: '1002' name: '1002' guid: 01KSNP2NFV6DJWW6MXME27Q0KE status: unfulfilled currency_code: usd coupon_code: null customer_email: john@user.com customer_name: 'John Doe' shipment: tracking_url: null tracking_number: null provider: null address: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null fulfillments: [] billing: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null payment: label: 'Visa ending in 4242' status: paid method: credit_card transaction_id: pi_3Q1example details: custom_fields: 'Gift Message': 'Happy birthday' checkout_type: '' items: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled subtotal: 4900 formatted_subtotal: $49.00 total: 5391 formatted_total: $53.91 discount_total: 0 formatted_discount_total: $0.00 shipping_total: 0 formatted_shipping_total: $0.00 shipping_method_label: Standard tax_total: 491 formatted_tax_total: $4.91 created_at: '2026-08-01T10:12:00.000000Z' updated_at: '2026-08-01T10:12:00.000000Z' placed_at: '2026-08-01T10:12:00.000000Z' fulfilled_at: null disputed_at: null discounts: [] properties: order_id: type: string example: '1002' name: type: string example: '1002' guid: type: string example: 01KSNP2NFV6DJWW6MXME27Q0KE status: type: string example: unfulfilled currency_code: type: string example: usd coupon_code: type: string example: null nullable: true customer_email: type: string example: john@user.com customer_name: type: string example: 'John Doe' shipment: type: object properties: tracking_url: type: string example: null nullable: true tracking_number: type: string example: null nullable: true provider: type: string example: null nullable: true address: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true fulfillments: type: array example: [] billing: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true payment: type: object properties: label: type: string example: 'Visa ending in 4242' status: type: string example: paid method: type: string example: credit_card transaction_id: type: string example: pi_3Q1example details: type: object properties: custom_fields: type: object properties: 'Gift Message': type: string example: 'Happy birthday' checkout_type: type: string example: '' items: type: array example: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled items: type: object properties: sku: type: string example: TEE-BLK-M quantity: type: integer example: 1 price: type: integer example: 4900 name: type: string example: 'Classic Tee' slug: type: string example: classic-tee url: type: string example: 'https://store.example.com/product/classic-tee' image_url: type: string example: 'https://cdn.example.com/tee.jpg' subtotal: type: integer example: 4900 options: type: array example: - name: Size slug: size value: M value_slug: m items: type: object properties: name: type: string example: Size slug: type: string example: size value: type: string example: M value_slug: type: string example: m weight: type: integer example: 180 weight_unit: type: string example: g height: type: integer example: 2 width: type: integer example: 20 length: type: integer example: 30 downloads: type: array example: [] has_subscription: type: boolean example: false availability: type: string example: available estimated_shipping_date: type: string example: null nullable: true bundle_components: type: array example: [] fulfilled_quantity: type: integer example: 0 remaining_fulfillment_quantity: type: integer example: 1 fulfillment_state: type: string example: unfulfilled subtotal: type: integer example: 4900 formatted_subtotal: type: string example: $49.00 total: type: integer example: 5391 formatted_total: type: string example: $53.91 discount_total: type: integer example: 0 formatted_discount_total: type: string example: $0.00 shipping_total: type: integer example: 0 formatted_shipping_total: type: string example: $0.00 shipping_method_label: type: string example: Standard tax_total: type: integer example: 491 formatted_tax_total: type: string example: $4.91 created_at: type: string example: '2026-08-01T10:12:00.000000Z' updated_at: type: string example: '2026-08-01T10:12:00.000000Z' placed_at: type: string example: '2026-08-01T10:12:00.000000Z' fulfilled_at: type: string example: null nullable: true disputed_at: type: string example: null nullable: true discounts: type: array example: [] 404: description: 'Unknown order' content: application/json: schema: type: object example: message: 'Resource not found.' properties: message: type: string example: 'Resource not found.' tags: - Orders parameters: - in: path name: orderName description: 'The order name.' example: '1002' required: true schema: type: string '/public/v1/orders/{orderName}/tracking': patch: summary: 'Update tracking' operationId: updateTracking description: "Adds or replaces the shipping carrier and tracking details on an order. Send\na field as `null` to clear it. The order must contain at least one shippable\nitem, and at least one of `shipping_carrier`, `tracking_number` or\n`tracking_url` must be present.\n\nWhere the details land depends on how many fulfillments the order has. With\nmore than one, or when the order is partially fulfilled, `fulfillment_id` is\nrequired and targets that fulfillment. With exactly one, omit it and the\ndetails go to that fulfillment. With none, they go to the order's shipment.\n\nRead the tracking back from where it was written: anything stored on a\nfulfillment comes back under the matching entry in `fulfillments[]`, and\n`shipment.tracking_url`, `shipment.tracking_number` and `shipment.provider`\nare always `null` once the order has any fulfillment." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: order_id: '1002' name: '1002' guid: 01KSNP2NFV6DJWW6MXME27Q0KE status: unfulfilled currency_code: usd coupon_code: null customer_email: john@user.com customer_name: 'John Doe' shipment: provider: DHL tracking_number: JD014600006281230542 tracking_url: 'https://www.dhl.com/track?id=JD014600006281230542' address: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null fulfillments: [] billing: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null payment: label: 'Visa ending in 4242' status: paid method: credit_card transaction_id: pi_3Q1example details: custom_fields: 'Gift Message': 'Happy birthday' checkout_type: '' items: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled subtotal: 4900 formatted_subtotal: $49.00 total: 5391 formatted_total: $53.91 discount_total: 0 formatted_discount_total: $0.00 shipping_total: 0 formatted_shipping_total: $0.00 shipping_method_label: Standard tax_total: 491 formatted_tax_total: $4.91 created_at: '2026-08-01T10:12:00.000000Z' updated_at: '2026-08-14T10:05:12.000000Z' placed_at: '2026-08-01T10:12:00.000000Z' fulfilled_at: null disputed_at: null discounts: [] properties: order_id: type: string example: '1002' name: type: string example: '1002' guid: type: string example: 01KSNP2NFV6DJWW6MXME27Q0KE status: type: string example: unfulfilled currency_code: type: string example: usd coupon_code: type: string example: null nullable: true customer_email: type: string example: john@user.com customer_name: type: string example: 'John Doe' shipment: type: object properties: provider: type: string example: DHL tracking_number: type: string example: JD014600006281230542 tracking_url: type: string example: 'https://www.dhl.com/track?id=JD014600006281230542' address: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true fulfillments: type: array example: [] billing: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true payment: type: object properties: label: type: string example: 'Visa ending in 4242' status: type: string example: paid method: type: string example: credit_card transaction_id: type: string example: pi_3Q1example details: type: object properties: custom_fields: type: object properties: 'Gift Message': type: string example: 'Happy birthday' checkout_type: type: string example: '' items: type: array example: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled items: type: object properties: sku: type: string example: TEE-BLK-M quantity: type: integer example: 1 price: type: integer example: 4900 name: type: string example: 'Classic Tee' slug: type: string example: classic-tee url: type: string example: 'https://store.example.com/product/classic-tee' image_url: type: string example: 'https://cdn.example.com/tee.jpg' subtotal: type: integer example: 4900 options: type: array example: - name: Size slug: size value: M value_slug: m items: type: object properties: name: type: string example: Size slug: type: string example: size value: type: string example: M value_slug: type: string example: m weight: type: integer example: 180 weight_unit: type: string example: g height: type: integer example: 2 width: type: integer example: 20 length: type: integer example: 30 downloads: type: array example: [] has_subscription: type: boolean example: false availability: type: string example: available estimated_shipping_date: type: string example: null nullable: true bundle_components: type: array example: [] fulfilled_quantity: type: integer example: 0 remaining_fulfillment_quantity: type: integer example: 1 fulfillment_state: type: string example: unfulfilled subtotal: type: integer example: 4900 formatted_subtotal: type: string example: $49.00 total: type: integer example: 5391 formatted_total: type: string example: $53.91 discount_total: type: integer example: 0 formatted_discount_total: type: string example: $0.00 shipping_total: type: integer example: 0 formatted_shipping_total: type: string example: $0.00 shipping_method_label: type: string example: Standard tax_total: type: integer example: 491 formatted_tax_total: type: string example: $4.91 created_at: type: string example: '2026-08-01T10:12:00.000000Z' updated_at: type: string example: '2026-08-14T10:05:12.000000Z' placed_at: type: string example: '2026-08-01T10:12:00.000000Z' fulfilled_at: type: string example: null nullable: true disputed_at: type: string example: null nullable: true discounts: type: array example: [] 422: description: '' content: application/json: schema: oneOf: - description: 'Nothing to ship' type: object example: message: 'Order has no shippable items.' properties: message: type: string example: 'Order has no shippable items.' - description: 'No tracking field sent' type: object example: message: 'At least one supported field is required.' errors: request: - 'At least one supported field is required.' properties: message: type: string example: 'At least one supported field is required.' errors: type: object properties: request: type: array example: - 'At least one supported field is required.' items: type: string - description: 'fulfillment_id omitted on a multi-fulfillment order' type: object example: message: 'The fulfillment id field is required.' errors: fulfillment_id: - 'The fulfillment id field is required.' properties: message: type: string example: 'The fulfillment id field is required.' errors: type: object properties: fulfillment_id: type: array example: - 'The fulfillment id field is required.' items: type: string - description: 'Fulfillment belongs to another order' type: object example: message: 'The fulfillment_id does not belong to this order.' errors: fulfillment_id: - 'The fulfillment_id does not belong to this order.' properties: message: type: string example: 'The fulfillment_id does not belong to this order.' errors: type: object properties: fulfillment_id: type: array example: - 'The fulfillment_id does not belong to this order.' items: type: string tags: - Orders requestBody: required: false content: application/json: schema: type: object properties: shipping_carrier: type: string description: 'The carrier name shown to the customer.' example: DHL nullable: true tracking_number: type: string description: '' example: JD014600006281230542 nullable: true tracking_url: type: string description: 'Must be a valid URL.' example: 'https://www.dhl.com/track?id=JD014600006281230542' nullable: true fulfillment_id: type: integer description: 'Required when the order has multiple fulfillments or is partially fulfilled.' example: 91 nullable: true parameters: - in: path name: orderName description: 'The order name.' example: '1002' required: true schema: type: string '/public/v1/orders/{orderName}/fulfill': post: summary: 'Fulfill an order' operationId: fulfillAnOrder description: "Marks the whole order fulfilled and, when `send_notification` is true, emails\nthe customer. Tracking details sent here are stored alongside the fulfillment,\nso a shipment can be recorded in one call.\n\nOnly whole-order fulfillment is supported; item-level fulfillment is not part\nof this version.\n\nEach `fulfillments[].items[].order_item_id` is an internal identifier for the\nline it covers; it is not repeated in `items[]`, which carries no id. A line\ncovering a bundle carries a fourth key, `components[]`, whose entries hold\n`live_product_variant_id`, `name` and `quantity` for each bundled variant." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: order_id: '1002' name: '1002' guid: 01KSNP2NFV6DJWW6MXME27Q0KE status: fulfilled currency_code: usd coupon_code: null customer_email: john@user.com customer_name: 'John Doe' shipment: tracking_url: null tracking_number: null provider: null address: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null fulfillments: - id: 91 provider: DHL tracking_number: JD014600006281230542 tracking_url: 'https://www.dhl.com/track?id=JD014600006281230542' fulfilled_at: '2026-08-14T10:05:12.000000Z' items: - order_item_id: 5501 name: 'Classic Tee' quantity: 1 billing: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null payment: label: 'Visa ending in 4242' status: paid method: credit_card transaction_id: pi_3Q1example details: custom_fields: 'Gift Message': 'Happy birthday' checkout_type: '' items: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 1 remaining_fulfillment_quantity: 0 fulfillment_state: fulfilled subtotal: 4900 formatted_subtotal: $49.00 total: 5391 formatted_total: $53.91 discount_total: 0 formatted_discount_total: $0.00 shipping_total: 0 formatted_shipping_total: $0.00 shipping_method_label: Standard tax_total: 491 formatted_tax_total: $4.91 created_at: '2026-08-01T10:12:00.000000Z' updated_at: '2026-08-14T10:05:12.000000Z' placed_at: '2026-08-01T10:12:00.000000Z' fulfilled_at: '2026-08-14T10:05:12.000000Z' disputed_at: null discounts: [] properties: order_id: type: string example: '1002' name: type: string example: '1002' guid: type: string example: 01KSNP2NFV6DJWW6MXME27Q0KE status: type: string example: fulfilled currency_code: type: string example: usd coupon_code: type: string example: null nullable: true customer_email: type: string example: john@user.com customer_name: type: string example: 'John Doe' shipment: type: object properties: tracking_url: type: string example: null nullable: true tracking_number: type: string example: null nullable: true provider: type: string example: null nullable: true address: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true fulfillments: type: array example: - id: 91 provider: DHL tracking_number: JD014600006281230542 tracking_url: 'https://www.dhl.com/track?id=JD014600006281230542' fulfilled_at: '2026-08-14T10:05:12.000000Z' items: - order_item_id: 5501 name: 'Classic Tee' quantity: 1 items: type: object properties: id: type: integer example: 91 provider: type: string example: DHL tracking_number: type: string example: JD014600006281230542 tracking_url: type: string example: 'https://www.dhl.com/track?id=JD014600006281230542' fulfilled_at: type: string example: '2026-08-14T10:05:12.000000Z' items: type: array example: - order_item_id: 5501 name: 'Classic Tee' quantity: 1 items: type: object properties: order_item_id: type: integer example: 5501 name: type: string example: 'Classic Tee' quantity: type: integer example: 1 billing: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true payment: type: object properties: label: type: string example: 'Visa ending in 4242' status: type: string example: paid method: type: string example: credit_card transaction_id: type: string example: pi_3Q1example details: type: object properties: custom_fields: type: object properties: 'Gift Message': type: string example: 'Happy birthday' checkout_type: type: string example: '' items: type: array example: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 1 remaining_fulfillment_quantity: 0 fulfillment_state: fulfilled items: type: object properties: sku: type: string example: TEE-BLK-M quantity: type: integer example: 1 price: type: integer example: 4900 name: type: string example: 'Classic Tee' slug: type: string example: classic-tee url: type: string example: 'https://store.example.com/product/classic-tee' image_url: type: string example: 'https://cdn.example.com/tee.jpg' subtotal: type: integer example: 4900 options: type: array example: - name: Size slug: size value: M value_slug: m items: type: object properties: name: type: string example: Size slug: type: string example: size value: type: string example: M value_slug: type: string example: m weight: type: integer example: 180 weight_unit: type: string example: g height: type: integer example: 2 width: type: integer example: 20 length: type: integer example: 30 downloads: type: array example: [] has_subscription: type: boolean example: false availability: type: string example: available estimated_shipping_date: type: string example: null nullable: true bundle_components: type: array example: [] fulfilled_quantity: type: integer example: 1 remaining_fulfillment_quantity: type: integer example: 0 fulfillment_state: type: string example: fulfilled subtotal: type: integer example: 4900 formatted_subtotal: type: string example: $49.00 total: type: integer example: 5391 formatted_total: type: string example: $53.91 discount_total: type: integer example: 0 formatted_discount_total: type: string example: $0.00 shipping_total: type: integer example: 0 formatted_shipping_total: type: string example: $0.00 shipping_method_label: type: string example: Standard tax_total: type: integer example: 491 formatted_tax_total: type: string example: $4.91 created_at: type: string example: '2026-08-01T10:12:00.000000Z' updated_at: type: string example: '2026-08-14T10:05:12.000000Z' placed_at: type: string example: '2026-08-01T10:12:00.000000Z' fulfilled_at: type: string example: '2026-08-14T10:05:12.000000Z' disputed_at: type: string example: null nullable: true discounts: type: array example: [] 409: description: 'Order is in a status that cannot be fulfilled' content: application/json: schema: type: object example: message: 'Order cannot be fulfilled from status canceled.' properties: message: type: string example: 'Order cannot be fulfilled from status canceled.' tags: - Orders requestBody: required: false content: application/json: schema: type: object properties: shipping_carrier: type: string description: '' example: DHL nullable: true tracking_number: type: string description: '' example: JD014600006281230542 nullable: true tracking_url: type: string description: '' example: 'https://www.dhl.com/track?id=JD014600006281230542' nullable: true send_notification: type: boolean description: 'Emails the customer that the order shipped. Defaults to false.' example: true parameters: - in: path name: orderName description: 'The order name.' example: '1002' required: true schema: type: string '/public/v1/orders/{orderName}/unfulfill': post: summary: 'Unfulfill an order' operationId: unfulfillAnOrder description: "Returns a fulfilled or partially fulfilled order to the unfulfilled state.\nTracking stored on the order's shipment is kept; tracking recorded on a\nfulfillment is removed with the fulfillment." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: order_id: '1002' name: '1002' guid: 01KSNP2NFV6DJWW6MXME27Q0KE status: unfulfilled currency_code: usd coupon_code: null customer_email: john@user.com customer_name: 'John Doe' shipment: provider: DHL tracking_number: JD014600006281230542 tracking_url: 'https://www.dhl.com/track?id=JD014600006281230542' address: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null fulfillments: [] billing: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null payment: label: 'Visa ending in 4242' status: paid method: credit_card transaction_id: pi_3Q1example details: custom_fields: 'Gift Message': 'Happy birthday' checkout_type: '' items: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled subtotal: 4900 formatted_subtotal: $49.00 total: 5391 formatted_total: $53.91 discount_total: 0 formatted_discount_total: $0.00 shipping_total: 0 formatted_shipping_total: $0.00 shipping_method_label: Standard tax_total: 491 formatted_tax_total: $4.91 created_at: '2026-08-01T10:12:00.000000Z' updated_at: '2026-08-14T10:41:03.000000Z' placed_at: '2026-08-01T10:12:00.000000Z' fulfilled_at: null disputed_at: null discounts: [] properties: order_id: type: string example: '1002' name: type: string example: '1002' guid: type: string example: 01KSNP2NFV6DJWW6MXME27Q0KE status: type: string example: unfulfilled currency_code: type: string example: usd coupon_code: type: string example: null nullable: true customer_email: type: string example: john@user.com customer_name: type: string example: 'John Doe' shipment: type: object properties: provider: type: string example: DHL tracking_number: type: string example: JD014600006281230542 tracking_url: type: string example: 'https://www.dhl.com/track?id=JD014600006281230542' address: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true fulfillments: type: array example: [] billing: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true payment: type: object properties: label: type: string example: 'Visa ending in 4242' status: type: string example: paid method: type: string example: credit_card transaction_id: type: string example: pi_3Q1example details: type: object properties: custom_fields: type: object properties: 'Gift Message': type: string example: 'Happy birthday' checkout_type: type: string example: '' items: type: array example: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled items: type: object properties: sku: type: string example: TEE-BLK-M quantity: type: integer example: 1 price: type: integer example: 4900 name: type: string example: 'Classic Tee' slug: type: string example: classic-tee url: type: string example: 'https://store.example.com/product/classic-tee' image_url: type: string example: 'https://cdn.example.com/tee.jpg' subtotal: type: integer example: 4900 options: type: array example: - name: Size slug: size value: M value_slug: m items: type: object properties: name: type: string example: Size slug: type: string example: size value: type: string example: M value_slug: type: string example: m weight: type: integer example: 180 weight_unit: type: string example: g height: type: integer example: 2 width: type: integer example: 20 length: type: integer example: 30 downloads: type: array example: [] has_subscription: type: boolean example: false availability: type: string example: available estimated_shipping_date: type: string example: null nullable: true bundle_components: type: array example: [] fulfilled_quantity: type: integer example: 0 remaining_fulfillment_quantity: type: integer example: 1 fulfillment_state: type: string example: unfulfilled subtotal: type: integer example: 4900 formatted_subtotal: type: string example: $49.00 total: type: integer example: 5391 formatted_total: type: string example: $53.91 discount_total: type: integer example: 0 formatted_discount_total: type: string example: $0.00 shipping_total: type: integer example: 0 formatted_shipping_total: type: string example: $0.00 shipping_method_label: type: string example: Standard tax_total: type: integer example: 491 formatted_tax_total: type: string example: $4.91 created_at: type: string example: '2026-08-01T10:12:00.000000Z' updated_at: type: string example: '2026-08-14T10:41:03.000000Z' placed_at: type: string example: '2026-08-01T10:12:00.000000Z' fulfilled_at: type: string example: null nullable: true disputed_at: type: string example: null nullable: true discounts: type: array example: [] 409: description: 'Order was never fulfilled' content: application/json: schema: type: object example: message: 'Order cannot be unfulfilled from status unfulfilled.' properties: message: type: string example: 'Order cannot be unfulfilled from status unfulfilled.' tags: - Orders parameters: - in: path name: orderName description: 'The order name.' example: '1002' required: true schema: type: string '/public/v1/orders/{orderName}/cancel': post: summary: 'Cancel an order' operationId: cancelAnOrder description: "Moves the order to the canceled status and sends the usual cancellation\nevent and email.\n\nThis is a status change only. It does **not** refund the payment, return\nstock to inventory, remove fulfillments, or cancel subscriptions created by\nthe order — handle those separately if your flow needs them." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: order_id: '1002' name: '1002' guid: 01KSNP2NFV6DJWW6MXME27Q0KE status: canceled currency_code: usd coupon_code: null customer_email: john@user.com customer_name: 'John Doe' shipment: tracking_url: null tracking_number: null provider: null address: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null fulfillments: [] billing: name: 'John Doe' email: john@user.com phone: '+14155550123' country: us state: California region: us-ca region_name: California city: 'San Francisco' address_line_one: '1 Market St' address_line_two: null postal_code: '94105' validation_result: null payment: label: 'Visa ending in 4242' status: paid method: credit_card transaction_id: pi_3Q1example details: custom_fields: 'Gift Message': 'Happy birthday' checkout_type: '' items: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled subtotal: 4900 formatted_subtotal: $49.00 total: 5391 formatted_total: $53.91 discount_total: 0 formatted_discount_total: $0.00 shipping_total: 0 formatted_shipping_total: $0.00 shipping_method_label: Standard tax_total: 491 formatted_tax_total: $4.91 created_at: '2026-08-01T10:12:00.000000Z' updated_at: '2026-08-14T11:02:47.000000Z' placed_at: '2026-08-01T10:12:00.000000Z' fulfilled_at: null disputed_at: null discounts: [] properties: order_id: type: string example: '1002' name: type: string example: '1002' guid: type: string example: 01KSNP2NFV6DJWW6MXME27Q0KE status: type: string example: canceled currency_code: type: string example: usd coupon_code: type: string example: null nullable: true customer_email: type: string example: john@user.com customer_name: type: string example: 'John Doe' shipment: type: object properties: tracking_url: type: string example: null nullable: true tracking_number: type: string example: null nullable: true provider: type: string example: null nullable: true address: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true fulfillments: type: array example: [] billing: type: object properties: name: type: string example: 'John Doe' email: type: string example: john@user.com phone: type: string example: '+14155550123' country: type: string example: us state: type: string example: California region: type: string example: us-ca region_name: type: string example: California city: type: string example: 'San Francisco' address_line_one: type: string example: '1 Market St' address_line_two: type: string example: null nullable: true postal_code: type: string example: '94105' validation_result: type: string example: null nullable: true payment: type: object properties: label: type: string example: 'Visa ending in 4242' status: type: string example: paid method: type: string example: credit_card transaction_id: type: string example: pi_3Q1example details: type: object properties: custom_fields: type: object properties: 'Gift Message': type: string example: 'Happy birthday' checkout_type: type: string example: '' items: type: array example: - sku: TEE-BLK-M quantity: 1 price: 4900 name: 'Classic Tee' slug: classic-tee url: 'https://store.example.com/product/classic-tee' image_url: 'https://cdn.example.com/tee.jpg' subtotal: 4900 options: - name: Size slug: size value: M value_slug: m weight: 180 weight_unit: g height: 2 width: 20 length: 30 downloads: [] has_subscription: false availability: available estimated_shipping_date: null bundle_components: [] fulfilled_quantity: 0 remaining_fulfillment_quantity: 1 fulfillment_state: unfulfilled items: type: object properties: sku: type: string example: TEE-BLK-M quantity: type: integer example: 1 price: type: integer example: 4900 name: type: string example: 'Classic Tee' slug: type: string example: classic-tee url: type: string example: 'https://store.example.com/product/classic-tee' image_url: type: string example: 'https://cdn.example.com/tee.jpg' subtotal: type: integer example: 4900 options: type: array example: - name: Size slug: size value: M value_slug: m items: type: object properties: name: type: string example: Size slug: type: string example: size value: type: string example: M value_slug: type: string example: m weight: type: integer example: 180 weight_unit: type: string example: g height: type: integer example: 2 width: type: integer example: 20 length: type: integer example: 30 downloads: type: array example: [] has_subscription: type: boolean example: false availability: type: string example: available estimated_shipping_date: type: string example: null nullable: true bundle_components: type: array example: [] fulfilled_quantity: type: integer example: 0 remaining_fulfillment_quantity: type: integer example: 1 fulfillment_state: type: string example: unfulfilled subtotal: type: integer example: 4900 formatted_subtotal: type: string example: $49.00 total: type: integer example: 5391 formatted_total: type: string example: $53.91 discount_total: type: integer example: 0 formatted_discount_total: type: string example: $0.00 shipping_total: type: integer example: 0 formatted_shipping_total: type: string example: $0.00 shipping_method_label: type: string example: Standard tax_total: type: integer example: 491 formatted_tax_total: type: string example: $4.91 created_at: type: string example: '2026-08-01T10:12:00.000000Z' updated_at: type: string example: '2026-08-14T11:02:47.000000Z' placed_at: type: string example: '2026-08-01T10:12:00.000000Z' fulfilled_at: type: string example: null nullable: true disputed_at: type: string example: null nullable: true discounts: type: array example: [] 409: description: 'Order already reached a final status' content: application/json: schema: type: object example: message: 'Order cannot be canceled from status canceled.' properties: message: type: string example: 'Order cannot be canceled from status canceled.' tags: - Orders parameters: - in: path name: orderName description: 'The order name.' example: '1002' required: true schema: type: string /public/v1/webhooks: get: summary: 'List webhook subscriptions' operationId: listWebhookSubscriptions description: '' parameters: - in: query name: limit description: 'Results per page, 1–250.' example: 50 required: false schema: type: integer description: 'Results per page, 1–250.' example: 50 - in: query name: cursor description: 'Opaque cursor from `meta.next_cursor` of the previous page.' example: eyJpZCI6N30 required: false schema: type: string description: 'Opaque cursor from `meta.next_cursor` of the previous page.' example: eyJpZCI6N30 responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 7 name: 'Order sync' url: 'https://example.com/hooks/cartgenie' description: null enabled: true events: - new_order - order_updated last_dispatched_at: '2026-08-14T09:12:00.000000Z' created_at: '2026-07-01T12:00:00.000000Z' updated_at: '2026-08-14T09:12:00.000000Z' meta: per_page: 50 has_more: false next_cursor: null properties: data: type: array example: - id: 7 name: 'Order sync' url: 'https://example.com/hooks/cartgenie' description: null enabled: true events: - new_order - order_updated last_dispatched_at: '2026-08-14T09:12:00.000000Z' created_at: '2026-07-01T12:00:00.000000Z' updated_at: '2026-08-14T09:12:00.000000Z' items: type: object properties: id: type: integer example: 7 name: type: string example: 'Order sync' url: type: string example: 'https://example.com/hooks/cartgenie' description: type: string example: null nullable: true enabled: type: boolean example: true events: type: array example: - new_order - order_updated items: type: string last_dispatched_at: type: string example: '2026-08-14T09:12:00.000000Z' created_at: type: string example: '2026-07-01T12:00:00.000000Z' updated_at: type: string example: '2026-08-14T09:12:00.000000Z' meta: type: object properties: per_page: type: integer example: 50 has_more: type: boolean example: false next_cursor: type: string example: null nullable: true tags: - Webhooks post: summary: 'Create a webhook subscription' operationId: createAWebhookSubscription description: "Registers a URL to receive the events you list. The URL must be a publicly\nreachable HTTPS endpoint — private and loopback addresses are rejected.\n\n## Receiving deliveries\n\nThe request body is `{\"type\": \"\", \"payload\": { ... }}`. Every delivery\ncarries a `Signature` header holding an HMAC-SHA256 of the raw JSON body,\nkeyed with your store's webhook secret from **Settings → Webhooks**. Compute\nthe same digest over the body you received and compare before trusting it.\n\nA delivery is attempted up to three times with exponential backoff and a 10\nsecond timeout, so your endpoint should answer quickly and be safe to call\ntwice with the same event.\n\n## Available events\n\n`new_order`, `order_updated`, `order_fulfillment_updated`, `new_customer`,\n`customer_updated`, `new_subscription`, `subscription_updated`,\n`new_subscription_charge`, `new_discount`, `discount_updated`,\n`new_category`, `category_updated`, `new_product`, `product_updated`,\n`new_abandoned_cart`, `refund_issued`, `inventory_updated`." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: id: 7 name: 'Order sync' url: 'https://example.com/hooks/cartgenie' description: null enabled: true events: - new_order - order_updated last_dispatched_at: null created_at: '2026-08-14T09:12:00.000000Z' updated_at: '2026-08-14T09:12:00.000000Z' properties: id: type: integer example: 7 name: type: string example: 'Order sync' url: type: string example: 'https://example.com/hooks/cartgenie' description: type: string example: null nullable: true enabled: type: boolean example: true events: type: array example: - new_order - order_updated items: type: string last_dispatched_at: type: string example: null nullable: true created_at: type: string example: '2026-08-14T09:12:00.000000Z' updated_at: type: string example: '2026-08-14T09:12:00.000000Z' 422: description: 'Endpoint is not publicly reachable over HTTPS' content: application/json: schema: type: object example: message: 'The url must be a publicly reachable HTTPS URL.' errors: url: - 'The url must be a publicly reachable HTTPS URL.' properties: message: type: string example: 'The url must be a publicly reachable HTTPS URL.' errors: type: object properties: url: type: array example: - 'The url must be a publicly reachable HTTPS URL.' items: type: string tags: - Webhooks requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'A label for this subscription.' example: 'Order sync' url: type: string description: 'Publicly reachable HTTPS endpoint.' example: 'https://example.com/hooks/cartgenie' description: type: string description: 'Free-form note, up to 10000 characters.' example: 'Feeds our ERP' nullable: true enabled: type: boolean description: 'Defaults to true.' example: true events: type: array description: 'One or more event names from the list above.' example: - new_order - order_updated items: type: string required: - name - url - events '/public/v1/webhooks/{webhook}': get: summary: 'Get a webhook subscription' operationId: getAWebhookSubscription description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 7 name: 'Order sync' url: 'https://example.com/hooks/cartgenie' description: null enabled: true events: - new_order - order_updated last_dispatched_at: '2026-08-14T09:12:00.000000Z' created_at: '2026-07-01T12:00:00.000000Z' updated_at: '2026-08-14T09:12:00.000000Z' properties: id: type: integer example: 7 name: type: string example: 'Order sync' url: type: string example: 'https://example.com/hooks/cartgenie' description: type: string example: null nullable: true enabled: type: boolean example: true events: type: array example: - new_order - order_updated items: type: string last_dispatched_at: type: string example: '2026-08-14T09:12:00.000000Z' created_at: type: string example: '2026-07-01T12:00:00.000000Z' updated_at: type: string example: '2026-08-14T09:12:00.000000Z' 404: description: 'Subscription belongs to another store or does not exist' content: application/json: schema: type: object example: message: 'Resource not found.' properties: message: type: string example: 'Resource not found.' tags: - Webhooks patch: summary: 'Update a webhook subscription' operationId: updateAWebhookSubscription description: "Only the fields you send are changed. Sending `events` replaces the whole\nlist rather than adding to it." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: 7 name: 'Order sync' url: 'https://example.com/hooks/cartgenie' description: null enabled: false events: - new_order last_dispatched_at: '2026-08-14T09:12:00.000000Z' created_at: '2026-07-01T12:00:00.000000Z' updated_at: '2026-08-15T08:30:00.000000Z' properties: id: type: integer example: 7 name: type: string example: 'Order sync' url: type: string example: 'https://example.com/hooks/cartgenie' description: type: string example: null nullable: true enabled: type: boolean example: false events: type: array example: - new_order items: type: string last_dispatched_at: type: string example: '2026-08-14T09:12:00.000000Z' created_at: type: string example: '2026-07-01T12:00:00.000000Z' updated_at: type: string example: '2026-08-15T08:30:00.000000Z' 422: description: 'Endpoint is not publicly reachable over HTTPS' content: application/json: schema: type: object example: message: 'The url must be a publicly reachable HTTPS URL.' errors: url: - 'The url must be a publicly reachable HTTPS URL.' properties: message: type: string example: 'The url must be a publicly reachable HTTPS URL.' errors: type: object properties: url: type: array example: - 'The url must be a publicly reachable HTTPS URL.' items: type: string tags: - Webhooks requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: 'Order sync' url: type: string description: 'Publicly reachable HTTPS endpoint.' example: 'https://example.com/hooks/cartgenie' description: type: string description: '' example: 'Feeds our ERP' nullable: true enabled: type: boolean description: 'Pause deliveries without deleting the subscription.' example: false events: type: array description: 'Replaces the subscribed events.' example: - new_order items: type: string delete: summary: 'Delete a webhook subscription' operationId: deleteAWebhookSubscription description: '' parameters: [] responses: 204: description: '' content: application/json: schema: type: object example: {} properties: {} tags: - Webhooks parameters: - in: path name: webhook description: 'The subscription id.' example: 7 required: true schema: type: integer '/public/v1/webhooks/{webhook}/test': post: summary: 'Send a test delivery' operationId: sendATestDelivery description: "Queues one delivery of the chosen event to this subscription, carrying\nrepresentative sample data rather than a real record. Use it to verify your\nendpoint and your signature check before going live.\n\nThe event must already be one this subscription listens for. The destination\nis re-validated at this point, so a URL that has since become unreachable is\nrejected here rather than failing silently later." parameters: [] responses: 202: description: '' content: application/json: schema: type: object example: queued: true event: new_order properties: queued: type: boolean example: true event: type: string example: new_order 422: description: '' content: application/json: schema: oneOf: - description: 'Subscription does not listen for that event' type: object example: message: 'Event is not configured for this webhook.' properties: message: type: string example: 'Event is not configured for this webhook.' - description: 'Destination is no longer reachable' type: object example: message: 'Webhook destination must be a publicly reachable HTTPS URL.' properties: message: type: string example: 'Webhook destination must be a publicly reachable HTTPS URL.' tags: - Webhooks requestBody: required: true content: application/json: schema: type: object properties: event: type: string description: 'An event this subscription is subscribed to.' example: new_order required: - event parameters: - in: path name: webhook description: 'The subscription id.' example: 7 required: true schema: type: integer