{
  "openapi": "3.1.0",
  "info": {
    "title": "DKShop Admin API",
    "version": "1.0.0",
    "description": "Read and write a DKShop store from another system.\n\n## Authenticating\n\nEvery request carries an API key as a bearer token:\n\n    Authorization: Bearer dk_sk_...\n\nCreate one in the dashboard under **Settings → API keys**. The key is shown once, at\ncreation; only its hash is stored, so a lost key is replaced rather than recovered.\n\nA key belongs to ONE store. There is no header that selects a store, and none is\nneeded — the key names its own.\n\n## Scopes and roles\n\nTwo independent gates apply to every request, and a call has to pass both.\n\n* **Scope** — each operation declares `x-dkshop-scope`, e.g. `products:write`. A key\n  granted no scopes at all has every scope its role allows; a key granted some has\n  exactly those. A write scope implies its read scope.\n* **Role** — the key carries a store role, capped at mint time by the role of the\n  member who created it. Operations that require more than staff declare\n  `x-dkshop-role`.\n\nSome endpoints are refused to **every** key regardless of scope or role: inviting or\nremoving staff, closing the store, changing payment gateways or the billing card, and\nmanaging API keys. Those manage who and what can act on the store, and two of them\nwould outlive revoking the key that used them.\n\n## Responses\n\nEvery response is the same envelope. Success is `{\"status\": true, ...}` with at\nmost one named payload; a page of rows also carries `total`. Failure is\n`{\"status\": false, \"message\": \"...\"}` at the status code.\n\n## Rate limits\n\nRequests are limited per key, per minute. Every response carries\n`X-RateLimit-Limit` and `X-RateLimit-Remaining`; a 429 also carries\n`Retry-After`. The limit is configurable per deployment."
  },
  "servers": [
    {
      "url": "/api/v1",
      "description": "Relative to this host"
    }
  ],
  "tags": [
    {
      "name": "API keys",
      "description": "Managing API keys. Deliberately unreachable with an API key."
    },
    {
      "name": "Abandoned carts and checkouts",
      "description": "Baskets and checkouts that did not become an order."
    },
    {
      "name": "Analytics",
      "description": "Sales, conversion and post-purchase reporting."
    },
    {
      "name": "Audit log",
      "description": "Who changed what, including which API key did it."
    },
    {
      "name": "Blog",
      "description": "Blog articles."
    },
    {
      "name": "Checkout and post-purchase",
      "description": "Checkout zones and pages, post-purchase upsell funnels, and tipping."
    },
    {
      "name": "Collections",
      "description": "Manual and smart groupings of products, and their membership."
    },
    {
      "name": "Custom domains",
      "description": "Domains connected to this storefront."
    },
    {
      "name": "Discounts",
      "description": "Discount codes and automatic discounts."
    },
    {
      "name": "Draft orders",
      "description": "Orders a seller builds by hand, before they are paid."
    },
    {
      "name": "Email settings",
      "description": "Per-store SMTP."
    },
    {
      "name": "Form submissions",
      "description": "Contact-form, newsletter and popup submissions."
    },
    {
      "name": "Fulfillments",
      "description": "Shipments against an order, with tracking."
    },
    {
      "name": "Marketing and tracking",
      "description": "Marketing pixels, conversion APIs, Klaviyo and abandonment recovery."
    },
    {
      "name": "Media uploads",
      "description": "Presigned uploads for product and theme imagery."
    },
    {
      "name": "Navigation menus",
      "description": "Storefront navigation."
    },
    {
      "name": "Orders",
      "description": "Placed orders, their line items, refunds, cancellation and export."
    },
    {
      "name": "Pages",
      "description": "Standalone content pages."
    },
    {
      "name": "Payment gateways",
      "description": "Connected gateways. Reading is open to API keys; changing them is not."
    },
    {
      "name": "Plan and billing",
      "description": "What this store pays the platform. Reading is open to API keys; changing it is not."
    },
    {
      "name": "Product customizer",
      "description": "Personalisation: designs, option sets, product bases and the renders they produce."
    },
    {
      "name": "Product reviews",
      "description": "Reviews, moderation, replies and CSV import/export."
    },
    {
      "name": "Products",
      "description": "The catalogue: products, their variants, options and images."
    },
    {
      "name": "Shipping",
      "description": "Shipping zones and the rates inside them."
    },
    {
      "name": "Shopify import",
      "description": "Importing a Shopify store's catalogue and content."
    },
    {
      "name": "Staff",
      "description": "Members of this store. Readable by an API key; not changeable by one."
    },
    {
      "name": "Store profile",
      "description": "The store itself: name, contact details, currency, units, and switching the storefront on or off."
    },
    {
      "name": "Store settings",
      "description": "The generic settings namespace."
    },
    {
      "name": "Tax",
      "description": "Tax rates by region."
    },
    {
      "name": "Themes",
      "description": "Installed themes, their drafts, versions and the marketplace."
    },
    {
      "name": "Volume bundles",
      "description": "Buy-more-save-more offers and their tiers."
    },
    {
      "name": "Webhooks",
      "description": "Outbound webhook subscriptions and their delivery history."
    }
  ],
  "paths": {
    "/api/v1/store": {
      "get": {
        "operationId": "getStore",
        "summary": "Get this store",
        "tags": [
          "Store profile"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "role": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "store": {
                      "description": "Shape not yet published."
                    },
                    "store_id": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "status",
                    "store_id"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "store:read"
      },
      "put": {
        "operationId": "putStore",
        "summary": "Update a store",
        "tags": [
          "Store profile"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "store": {
                      "$ref": "#/components/schemas/StoreProfileView"
                    }
                  },
                  "required": [
                    "status",
                    "store"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "store:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/abandoned-carts": {
      "get": {
        "operationId": "getAbandonedCarts",
        "summary": "List abandoned carts",
        "tags": [
          "Abandoned carts and checkouts"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "abandoned": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/AbandonedCartRowView"
                      }
                    },
                    "stats": {
                      "$ref": "#/components/schemas/AbandonmentStatsView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "abandoned",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "abandoned:read"
      }
    },
    "/api/v1/store/abandoned-checkouts": {
      "get": {
        "operationId": "getAbandonedCheckouts",
        "summary": "List abandoned checkouts",
        "tags": [
          "Abandoned carts and checkouts"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "abandoned": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/AbandonedCheckoutRowView"
                      }
                    },
                    "stats": {
                      "$ref": "#/components/schemas/AbandonmentStatsView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "abandoned",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "abandoned:read"
      }
    },
    "/api/v1/store/abandoned-checkouts/{token}": {
      "get": {
        "operationId": "getAbandonedCheckoutsToken",
        "summary": "Get an abandoned checkout",
        "tags": [
          "Abandoned carts and checkouts"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "checkout": {
                      "$ref": "#/components/schemas/AbandonedcartDetail"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "checkout"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "abandoned:read"
      }
    },
    "/api/v1/store/analytics": {
      "get": {
        "operationId": "getAnalytics",
        "summary": "Get the analytics overview",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "analytics": {
                      "$ref": "#/components/schemas/AnalyticsOverview"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "analytics"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "analytics:read"
      }
    },
    "/api/v1/store/analytics/upsell": {
      "get": {
        "operationId": "getAnalyticsUpsell",
        "summary": "Get post-purchase upsell totals",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "upsell": {
                      "$ref": "#/components/schemas/AnalyticsUpsellReport"
                    }
                  },
                  "required": [
                    "status",
                    "upsell"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "analytics:read"
      }
    },
    "/api/v1/store/analytics/upsell/report": {
      "get": {
        "operationId": "getAnalyticsUpsellReport",
        "summary": "Get the detailed post-purchase upsell report",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "report": {
                      "$ref": "#/components/schemas/AnalyticsUpsellDeepReport"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "report"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "analytics:read"
      }
    },
    "/api/v1/store/api-keys": {
      "get": {
        "operationId": "getApiKeys",
        "summary": "List API keys",
        "tags": [
          "API keys"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_keys": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/APIKeyView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "api_keys"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "api-keys:read",
        "x-dkshop-role": "admin"
      },
      "post": {
        "operationId": "postApiKeys",
        "summary": "Create an API key",
        "tags": [
          "API keys"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_key": {
                      "$ref": "#/components/schemas/APIKeyView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "api_key"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "api-keys:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/api-keys/scopes": {
      "get": {
        "operationId": "getApiKeysScopes",
        "summary": "List the grantable API scopes",
        "tags": [
          "API keys"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "actions": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "string"
                      }
                    },
                    "resources": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ScopeResourceView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "resources"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "api-keys:read",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/api-keys/{id}": {
      "delete": {
        "operationId": "deleteApiKeysId",
        "summary": "Revoke an API key",
        "tags": [
          "API keys"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_key": {
                      "$ref": "#/components/schemas/APIKeyView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "api_key"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "api-keys:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/articles": {
      "get": {
        "operationId": "getArticles",
        "summary": "List blog articles",
        "tags": [
          "Blog"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "articles": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ArticleView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "articles",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "blog:read"
      },
      "post": {
        "operationId": "postArticles",
        "summary": "Create a blog article",
        "tags": [
          "Blog"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "article": {
                      "$ref": "#/components/schemas/ArticleView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "article"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "blog:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/articles/{id}": {
      "get": {
        "operationId": "getArticlesId",
        "summary": "Get a blog article",
        "tags": [
          "Blog"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "article": {
                      "$ref": "#/components/schemas/ArticleView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "article"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "blog:read"
      },
      "put": {
        "operationId": "putArticlesId",
        "summary": "Update a blog article",
        "tags": [
          "Blog"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "article": {
                      "$ref": "#/components/schemas/ArticleView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "article"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "blog:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteArticlesId",
        "summary": "Delete a blog article",
        "tags": [
          "Blog"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "blog:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/audit-logs": {
      "get": {
        "operationId": "getAuditLogs",
        "summary": "List audit log",
        "tags": [
          "Audit log"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "logs": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/AuditLog"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "logs"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "audit-logs:read",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/billing": {
      "get": {
        "operationId": "getBilling",
        "summary": "Get this store's plan and accrued fees",
        "tags": [
          "Plan and billing"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "accrued": {
                      "description": "Shape not yet published."
                    },
                    "cards": {
                      "description": "Shape not yet published."
                    },
                    "collection_enabled": {
                      "description": "Shape not yet published."
                    },
                    "invoices": {
                      "description": "Shape not yet published."
                    },
                    "plan": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "subscription": {
                      "$ref": "#/components/schemas/BillingSubscriptionDTO"
                    }
                  },
                  "required": [
                    "status",
                    "subscription"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:read"
      }
    },
    "/api/v1/store/billing/cancel": {
      "put": {
        "operationId": "putBillingCancel",
        "summary": "Set cancels",
        "tags": [
          "Plan and billing"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "subscription": {
                      "$ref": "#/components/schemas/BillingSubscriptionDTO"
                    }
                  },
                  "required": [
                    "status",
                    "subscription"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/billing/card": {
      "post": {
        "operationId": "postBillingCard",
        "summary": "Save a billing card",
        "tags": [
          "Plan and billing"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "card": {
                      "$ref": "#/components/schemas/BillingCardDTO"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "card"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/billing/card/setup": {
      "post": {
        "operationId": "postBillingCardSetup",
        "summary": "Start saving a billing card",
        "tags": [
          "Plan and billing"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "client_secret": {
                      "type": "string"
                    },
                    "publishable_key": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "client_secret"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/billing/card/{id}": {
      "delete": {
        "operationId": "deleteBillingCardId",
        "summary": "Delete a billing card",
        "tags": [
          "Plan and billing"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/billing/invoices": {
      "get": {
        "operationId": "getBillingInvoices",
        "summary": "List billing invoices",
        "tags": [
          "Plan and billing"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "invoices": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/BillingInvoiceDTO"
                      }
                    },
                    "page": {
                      "description": "Shape not yet published."
                    },
                    "page_size": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "invoices",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:read"
      }
    },
    "/api/v1/store/billing/invoices/{id}": {
      "get": {
        "operationId": "getBillingInvoicesId",
        "summary": "Get a billing invoice",
        "tags": [
          "Plan and billing"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "charges": {
                      "description": "Shape not yet published."
                    },
                    "invoice": {
                      "$ref": "#/components/schemas/BillingInvoiceDTO"
                    },
                    "lines": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "invoice"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:read"
      }
    },
    "/api/v1/store/billing/plan": {
      "put": {
        "operationId": "putBillingPlan",
        "summary": "Change this store's billing plan",
        "tags": [
          "Plan and billing"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "subscription": {
                      "$ref": "#/components/schemas/BillingSubscriptionDTO"
                    }
                  },
                  "required": [
                    "status",
                    "subscription"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/billing/plans": {
      "get": {
        "operationId": "getBillingPlans",
        "summary": "List the available billing plans",
        "tags": [
          "Plan and billing"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "plans": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/BillingPlanDTO"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "plans"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "billing:read"
      }
    },
    "/api/v1/store/bundles": {
      "get": {
        "operationId": "getBundles",
        "summary": "List volume bundles",
        "tags": [
          "Volume bundles"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "bundles": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/BundleSummaryView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "bundles"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "bundles:read"
      },
      "post": {
        "operationId": "postBundles",
        "summary": "Create a volume bundle",
        "tags": [
          "Volume bundles"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "bundle": {
                      "$ref": "#/components/schemas/BundleOfferView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "bundle"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "bundles:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/bundles/{id}": {
      "get": {
        "operationId": "getBundlesId",
        "summary": "Get a volume bundle",
        "tags": [
          "Volume bundles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "bundle": {
                      "$ref": "#/components/schemas/BundleOfferView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "bundle"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "bundles:read"
      },
      "put": {
        "operationId": "putBundlesId",
        "summary": "Update a volume bundle",
        "tags": [
          "Volume bundles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "bundle": {
                      "$ref": "#/components/schemas/BundleOfferView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "bundle"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "bundles:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteBundlesId",
        "summary": "Delete a volume bundle",
        "tags": [
          "Volume bundles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "bundles:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/checkout-pages": {
      "get": {
        "operationId": "getCheckoutPages",
        "summary": "List checkout pages",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "pages": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CheckoutPageListView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "pages"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:read"
      },
      "post": {
        "operationId": "postCheckoutPages",
        "summary": "Create a checkout page",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/CheckoutPageView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/checkout-pages/{id}": {
      "get": {
        "operationId": "getCheckoutPagesId",
        "summary": "Get a checkout page",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/CheckoutPageView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:read"
      },
      "put": {
        "operationId": "putCheckoutPagesId",
        "summary": "Update a checkout page",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/CheckoutPageView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCheckoutPagesId",
        "summary": "Delete a checkout page",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/checkout-pages/{id}/default": {
      "put": {
        "operationId": "putCheckoutPagesIdDefault",
        "summary": "Set defaults",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/CheckoutPageView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/checkout-pages/{id}/sections": {
      "put": {
        "operationId": "putCheckoutPagesIdSections",
        "summary": "Set sections",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/CheckoutPageView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/checkout-zones": {
      "get": {
        "operationId": "getCheckoutZones",
        "summary": "List checkout zones",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "zones": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CheckoutZoneView"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "zones"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:read"
      },
      "post": {
        "operationId": "postCheckoutZones",
        "summary": "Create a checkout zone",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "zone": {
                      "$ref": "#/components/schemas/CheckoutZoneView"
                    }
                  },
                  "required": [
                    "status",
                    "zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/checkout-zones/{id}": {
      "get": {
        "operationId": "getCheckoutZonesId",
        "summary": "Get a checkout zone",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "zone": {
                      "$ref": "#/components/schemas/CheckoutZoneView"
                    }
                  },
                  "required": [
                    "status",
                    "zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:read"
      },
      "put": {
        "operationId": "putCheckoutZonesId",
        "summary": "Update a checkout zone",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "zone": {
                      "$ref": "#/components/schemas/CheckoutZoneView"
                    }
                  },
                  "required": [
                    "status",
                    "zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCheckoutZonesId",
        "summary": "Delete a checkout zone",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/close": {
      "post": {
        "operationId": "postClose",
        "summary": "Close this store",
        "tags": [
          "Store profile"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "store": {
                      "$ref": "#/components/schemas/StoreProfileView"
                    }
                  },
                  "required": [
                    "status",
                    "store"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "store:write"
      }
    },
    "/api/v1/store/collections": {
      "get": {
        "operationId": "getCollections",
        "summary": "List collections",
        "tags": [
          "Collections"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collections": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CollectionListView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "collections",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:read"
      },
      "post": {
        "operationId": "postCollections",
        "summary": "Create a collection",
        "tags": [
          "Collections"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collection": {
                      "$ref": "#/components/schemas/CollectionView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "collection"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/collections/bulk-delete": {
      "post": {
        "operationId": "postCollectionsBulkDelete",
        "summary": "Delete several collections",
        "tags": [
          "Collections"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deleted": {
                      "type": "integer"
                    },
                    "ids": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "deleted"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/collections/handle-available": {
      "get": {
        "operationId": "getCollectionsHandleAvailable",
        "summary": "Check whether a collection handle is free",
        "tags": [
          "Collections"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "available": {
                      "type": "boolean"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "available"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:read"
      }
    },
    "/api/v1/store/collections/options": {
      "get": {
        "operationId": "getCollectionsOptions",
        "summary": "List collections as id and title, for pickers",
        "tags": [
          "Collections"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collections": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CatalogCollectionOption"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "collections"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:read"
      }
    },
    "/api/v1/store/collections/preview": {
      "post": {
        "operationId": "postCollectionsPreview",
        "summary": "Preview which products a smart-collection rule matches",
        "tags": [
          "Collections"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collection_type": {
                      "description": "Shape not yet published."
                    },
                    "created_at": {
                      "description": "Shape not yet published."
                    },
                    "description": {
                      "description": "Shape not yet published."
                    },
                    "disjunctive": {
                      "description": "Shape not yet published."
                    },
                    "handle": {
                      "description": "Shape not yet published."
                    },
                    "id": {
                      "description": "Shape not yet published."
                    },
                    "image_src": {
                      "description": "Shape not yet published."
                    },
                    "position": {
                      "description": "Shape not yet published."
                    },
                    "price_cents": {
                      "description": "Shape not yet published."
                    },
                    "products": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CollectionMemberView"
                      }
                    },
                    "published": {
                      "description": "Shape not yet published."
                    },
                    "rules": {
                      "description": "Shape not yet published."
                    },
                    "seo": {
                      "description": "Shape not yet published."
                    },
                    "sort_order": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "title": {
                      "description": "Shape not yet published."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    },
                    "updated_at": {
                      "description": "Shape not yet published."
                    }
                  },
                  "required": [
                    "status",
                    "products",
                    "total"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/collections/{id}": {
      "get": {
        "operationId": "getCollectionsId",
        "summary": "Get a collection",
        "tags": [
          "Collections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collection": {
                      "$ref": "#/components/schemas/CollectionView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "collection"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:read"
      },
      "put": {
        "operationId": "putCollectionsId",
        "summary": "Update a collection",
        "tags": [
          "Collections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collection": {
                      "$ref": "#/components/schemas/CollectionView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "collection"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCollectionsId",
        "summary": "Delete a collection",
        "tags": [
          "Collections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/collections/{id}/products": {
      "get": {
        "operationId": "getCollectionsIdProducts",
        "summary": "List the products in a collection",
        "tags": [
          "Collections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "products": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CollectionMemberView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "products"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:read"
      },
      "post": {
        "operationId": "postCollectionsIdProducts",
        "summary": "Add a product to a collection",
        "tags": [
          "Collections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/collections/{id}/products/reorder": {
      "put": {
        "operationId": "putCollectionsIdProductsReorder",
        "summary": "Reorder the products in a collection",
        "tags": [
          "Collections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/collections/{id}/products/{pid}": {
      "delete": {
        "operationId": "deleteCollectionsIdProductsPid",
        "summary": "Remove a product from a collection",
        "tags": [
          "Collections"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "collections:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/bindings/{productId}": {
      "get": {
        "operationId": "getCustomizerBindingsProductId",
        "summary": "List a product's customizer bindings",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "bindings": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzProductBindingView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "bindings"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "put": {
        "operationId": "putCustomizerBindingsProductId",
        "summary": "Bind a customizer template to a product, optionally scoped to one option value",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "binding": {
                      "$ref": "#/components/schemas/CzProductBindingView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "binding"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerBindingsProductId",
        "summary": "Delete every binding on a product",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/bindings/{productId}/{bindingId}": {
      "delete": {
        "operationId": "deleteCustomizerBindingsProductIdBindingId",
        "summary": "Delete one of a product's bindings",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "bindingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/designs": {
      "get": {
        "operationId": "getCustomizerDesigns",
        "summary": "List designs",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "designs": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzDesignView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "designs",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerDesigns",
        "summary": "Create a design",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "design": {
                      "$ref": "#/components/schemas/CzDesignView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "design"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/designs/{id}": {
      "get": {
        "operationId": "getCustomizerDesignsId",
        "summary": "Get a design",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "design": {
                      "$ref": "#/components/schemas/CzDesignView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "design"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "put": {
        "operationId": "putCustomizerDesignsId",
        "summary": "Update a design",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "design": {
                      "$ref": "#/components/schemas/CzDesignView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "design"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerDesignsId",
        "summary": "Delete a design",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/designs/{id}/element-order": {
      "put": {
        "operationId": "putCustomizerDesignsIdElementOrder",
        "summary": "Re-stack a design's elements in one request — ids in paint order, position assigns z_index",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/designs/{id}/elements": {
      "get": {
        "operationId": "getCustomizerDesignsIdElements",
        "summary": "List design elements",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "elements": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzElementView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "elements"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerDesignsIdElements",
        "summary": "Create a design element",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "element": {
                      "$ref": "#/components/schemas/CzElementView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "element"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/designs/{id}/studio": {
      "get": {
        "operationId": "getCustomizerDesignsIdStudio",
        "summary": "One read for the design studio: a design, its elements with reference counts, and every product base it is placed on",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "studio": {
                      "$ref": "#/components/schemas/CzStudioView"
                    }
                  },
                  "required": [
                    "status",
                    "studio"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      }
    },
    "/api/v1/store/customizer/elements/{id}": {
      "put": {
        "operationId": "putCustomizerElementsId",
        "summary": "Update a design element",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "element": {
                      "$ref": "#/components/schemas/CzElementView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "element"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerElementsId",
        "summary": "Delete a design element",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/libraries": {
      "get": {
        "operationId": "getCustomizerLibraries",
        "summary": "List libraries",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "libraries": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzLibraryView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "libraries"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerLibraries",
        "summary": "Create a library",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "library": {
                      "$ref": "#/components/schemas/CzLibraryView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "library"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/libraries/{id}": {
      "put": {
        "operationId": "putCustomizerLibrariesId",
        "summary": "Rename a library",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "library": {
                      "$ref": "#/components/schemas/CzLibraryView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "library"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerLibrariesId",
        "summary": "Delete a library",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/libraries/{id}/items": {
      "get": {
        "operationId": "getCustomizerLibrariesIdItems",
        "summary": "List items",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzLibraryItemView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "items"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerLibrariesIdItems",
        "summary": "Create an item",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "item": {
                      "$ref": "#/components/schemas/CzLibraryItemView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "item"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "put": {
        "operationId": "putCustomizerLibrariesIdItems",
        "summary": "Put an artwork at a position",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "item": {
                      "$ref": "#/components/schemas/CzLibraryItemView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "item"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/library-catalogues": {
      "get": {
        "operationId": "getCustomizerLibraryCatalogues",
        "summary": "List artwork catalogues, with hole counts",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "catalogues": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzLibraryCatalogueView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "catalogues"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      }
    },
    "/api/v1/store/customizer/library-items/{id}": {
      "delete": {
        "operationId": "deleteCustomizerLibraryItemsId",
        "summary": "Delete a library item",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/mockups/{id}": {
      "put": {
        "operationId": "putCustomizerMockupsId",
        "summary": "Rename a mockup, move it, or replace its photo (a differently sized photo rescales its print areas)",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "mockup": {
                      "$ref": "#/components/schemas/CzMockupView"
                    },
                    "print_areas": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzPrintAreaView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "mockup"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerMockupsId",
        "summary": "Delete a mockup",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/mockups/{id}/print-areas": {
      "get": {
        "operationId": "getCustomizerMockupsIdPrintAreas",
        "summary": "List print areas",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "print_areas": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzPrintAreaView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "print_areas"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerMockupsIdPrintAreas",
        "summary": "Create a print area",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "print_area": {
                      "$ref": "#/components/schemas/CzPrintAreaView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "print_area"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/option-sets": {
      "get": {
        "operationId": "getCustomizerOptionSets",
        "summary": "List option sets",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "option_sets": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzOptionSetView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "option_sets",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerOptionSets",
        "summary": "Create an option set",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "option_set": {
                      "$ref": "#/components/schemas/CzOptionSetView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "option_set"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/option-sets/{id}": {
      "get": {
        "operationId": "getCustomizerOptionSetsId",
        "summary": "Get an option set",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "option_set": {
                      "$ref": "#/components/schemas/CzOptionSetView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "option_set"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "put": {
        "operationId": "putCustomizerOptionSetsId",
        "summary": "Update an option set",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "option_set": {
                      "$ref": "#/components/schemas/CzOptionSetView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "option_set"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerOptionSetsId",
        "summary": "Delete an option set",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/option-sets/{id}/option-order": {
      "put": {
        "operationId": "putCustomizerOptionSetsIdOptionOrder",
        "summary": "Re-order an option set's options (whole list, position assigns the order)",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/option-sets/{id}/options": {
      "get": {
        "operationId": "getCustomizerOptionSetsIdOptions",
        "summary": "List options",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "options": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzOptionView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "options"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerOptionSetsIdOptions",
        "summary": "Create an option",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "option": {
                      "$ref": "#/components/schemas/CzOptionView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "option"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/option-values/{id}": {
      "put": {
        "operationId": "putCustomizerOptionValuesId",
        "summary": "Update an option value",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "value": {
                      "$ref": "#/components/schemas/CzOptionValueView"
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerOptionValuesId",
        "summary": "Delete an option value",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/options/{id}": {
      "put": {
        "operationId": "putCustomizerOptionsId",
        "summary": "Update an option",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "option": {
                      "$ref": "#/components/schemas/CzOptionView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "option"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerOptionsId",
        "summary": "Delete an option",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/options/{id}/value-order": {
      "put": {
        "operationId": "putCustomizerOptionsIdValueOrder",
        "summary": "Re-order an option's values (whole list, position assigns the order)",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/options/{id}/values": {
      "get": {
        "operationId": "getCustomizerOptionsIdValues",
        "summary": "List values",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "values": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzOptionValueView"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "values"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerOptionsIdValues",
        "summary": "Create a value",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "value": {
                      "$ref": "#/components/schemas/CzOptionValueView"
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "put": {
        "operationId": "putCustomizerOptionsIdValues",
        "summary": "Replace an option's values in bulk (upsert by value slug; deletes what it does not name only when prune is set)",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/CzReplaceOptionValuesView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "result"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/print-areas/{id}": {
      "put": {
        "operationId": "putCustomizerPrintAreasId",
        "summary": "Update a print area",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "print_area": {
                      "$ref": "#/components/schemas/CzPrintAreaView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "print_area"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerPrintAreasId",
        "summary": "Delete a print area",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/product-bases": {
      "get": {
        "operationId": "getCustomizerProductBases",
        "summary": "List product bases",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product_bases": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzProductBaseView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "product_bases",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerProductBases",
        "summary": "Create a product base",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product_base": {
                      "$ref": "#/components/schemas/CzProductBaseView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "product_base"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/product-bases/{id}": {
      "get": {
        "operationId": "getCustomizerProductBasesId",
        "summary": "Get a product base",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product_base": {
                      "$ref": "#/components/schemas/CzProductBaseView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "product_base"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "put": {
        "operationId": "putCustomizerProductBasesId",
        "summary": "Update a product base",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product_base": {
                      "$ref": "#/components/schemas/CzProductBaseView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "product_base"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerProductBasesId",
        "summary": "Delete a product base",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/product-bases/{id}/mockups": {
      "get": {
        "operationId": "getCustomizerProductBasesIdMockups",
        "summary": "List mockups",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "mockups": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzMockupView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "mockups"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerProductBasesIdMockups",
        "summary": "Create a mockup",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "mockup": {
                      "$ref": "#/components/schemas/CzMockupView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "mockup"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/quantity-tiers/{id}": {
      "put": {
        "operationId": "putCustomizerQuantityTiersId",
        "summary": "Update a quantity tier",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "quantity_tier": {
                      "$ref": "#/components/schemas/CzQuantityTierView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "quantity_tier"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerQuantityTiersId",
        "summary": "Delete a quantity tier",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/status": {
      "get": {
        "operationId": "getCustomizerStatus",
        "summary": "Get the product customizer's status for this store",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "platform_enabled": {
                      "type": "boolean"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "platform_enabled"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      }
    },
    "/api/v1/store/customizer/templates": {
      "get": {
        "operationId": "getCustomizerTemplates",
        "summary": "List customizer templates",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "templates": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzTemplateView"
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "templates",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerTemplates",
        "summary": "Create a customizer template",
        "tags": [
          "Product customizer"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "template": {
                      "$ref": "#/components/schemas/CzTemplateView"
                    }
                  },
                  "required": [
                    "status",
                    "template"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/templates/{id}": {
      "get": {
        "operationId": "getCustomizerTemplatesId",
        "summary": "Get a customizer template",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "template": {
                      "$ref": "#/components/schemas/CzTemplateView"
                    }
                  },
                  "required": [
                    "status",
                    "template"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "put": {
        "operationId": "putCustomizerTemplatesId",
        "summary": "Update a customizer template",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "template": {
                      "$ref": "#/components/schemas/CzTemplateView"
                    }
                  },
                  "required": [
                    "status",
                    "template"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteCustomizerTemplatesId",
        "summary": "Delete a customizer template",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/customizer/templates/{id}/preview": {
      "get": {
        "operationId": "getCustomizerTemplatesIdPreview",
        "summary": "One read for the personalization preview: the design, the product photo it prints onto, and one binding's controls with artwork resolved to that binding's finish",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "preview": {
                      "$ref": "#/components/schemas/CzTemplatePreviewView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "preview"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      }
    },
    "/api/v1/store/customizer/templates/{id}/quantity-tiers": {
      "get": {
        "operationId": "getCustomizerTemplatesIdQuantityTiers",
        "summary": "List quantity tiers",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "quantity_tiers": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CzQuantityTierView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "quantity_tiers"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:read"
      },
      "post": {
        "operationId": "postCustomizerTemplatesIdQuantityTiers",
        "summary": "Create a quantity tier",
        "tags": [
          "Product customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "quantity_tier": {
                      "$ref": "#/components/schemas/CzQuantityTierView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "quantity_tier"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "customizer:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/discounts": {
      "get": {
        "operationId": "getDiscounts",
        "summary": "List discounts",
        "tags": [
          "Discounts"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "discounts": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/DiscountView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "discounts",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "discounts:read"
      },
      "post": {
        "operationId": "postDiscounts",
        "summary": "Create a discount",
        "tags": [
          "Discounts"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "discount": {
                      "$ref": "#/components/schemas/DiscountView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "discount"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "discounts:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/discounts/{id}": {
      "get": {
        "operationId": "getDiscountsId",
        "summary": "Get a discount",
        "tags": [
          "Discounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "discount": {
                      "$ref": "#/components/schemas/DiscountDetailView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "discount"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "discounts:read"
      },
      "put": {
        "operationId": "putDiscountsId",
        "summary": "Update a discount",
        "tags": [
          "Discounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "discount": {
                      "$ref": "#/components/schemas/DiscountView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "discount"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "discounts:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteDiscountsId",
        "summary": "Delete a discount",
        "tags": [
          "Discounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "discounts:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/domains": {
      "get": {
        "operationId": "getDomains",
        "summary": "List custom domains",
        "tags": [
          "Custom domains"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "domains": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/DomainView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "domains"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "domains:read"
      },
      "post": {
        "operationId": "postDomains",
        "summary": "Connect a custom domain",
        "tags": [
          "Custom domains"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "domain": {
                      "$ref": "#/components/schemas/DomainView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "domain"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "501": {
            "$ref": "#/components/responses/E501"
          },
          "502": {
            "$ref": "#/components/responses/E502"
          }
        },
        "x-dkshop-scope": "domains:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/domains/{id}": {
      "delete": {
        "operationId": "deleteDomainsId",
        "summary": "Delete a custom domain",
        "tags": [
          "Custom domains"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "domains:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/domains/{id}/primary": {
      "post": {
        "operationId": "postDomainsIdPrimary",
        "summary": "Set primarys",
        "tags": [
          "Custom domains"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "domains:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/domains/{id}/verify": {
      "post": {
        "operationId": "postDomainsIdVerify",
        "summary": "Re-check a custom domain now",
        "tags": [
          "Custom domains"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "domain": {
                      "$ref": "#/components/schemas/DomainView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "domain"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "domains:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/draft-orders": {
      "get": {
        "operationId": "getDraftOrders",
        "summary": "List draft orders",
        "tags": [
          "Draft orders"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "draft_orders": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/DraftOrderView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "draft_orders",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "draft-orders:read"
      },
      "post": {
        "operationId": "postDraftOrders",
        "summary": "Create a draft order",
        "tags": [
          "Draft orders"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "draft_order": {
                      "$ref": "#/components/schemas/DraftOrderView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "draft_order"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "draft-orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/draft-orders/{id}": {
      "get": {
        "operationId": "getDraftOrdersId",
        "summary": "Get a draft order",
        "tags": [
          "Draft orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "draft_order": {
                      "$ref": "#/components/schemas/DraftOrderView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "draft_order"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "draft-orders:read"
      }
    },
    "/api/v1/store/draft-orders/{id}/contact": {
      "put": {
        "operationId": "putDraftOrdersIdContact",
        "summary": "Set contacts",
        "tags": [
          "Draft orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "draft_order": {
                      "$ref": "#/components/schemas/DraftOrderView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "draft_order"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "draft-orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/draft-orders/{id}/line-items": {
      "post": {
        "operationId": "postDraftOrdersIdLineItems",
        "summary": "Add a line item to a draft order",
        "tags": [
          "Draft orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "draft_order": {
                      "$ref": "#/components/schemas/DraftOrderView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "draft_order"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "draft-orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/draft-orders/{id}/line-items/{lineId}": {
      "delete": {
        "operationId": "deleteDraftOrdersIdLineItemsLineId",
        "summary": "Remove a line item from a draft order",
        "tags": [
          "Draft orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "draft_order": {
                      "$ref": "#/components/schemas/DraftOrderView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "draft_order"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "draft-orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/draft-orders/{id}/mark-as-paid": {
      "post": {
        "operationId": "postDraftOrdersIdMarkAsPaid",
        "summary": "Mark a draft order as paid",
        "tags": [
          "Draft orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "custom": {
                      "description": "Shape not yet published."
                    },
                    "id": {
                      "description": "Shape not yet published."
                    },
                    "line_total_cents": {
                      "description": "Shape not yet published."
                    },
                    "order_id": {
                      "type": "integer"
                    },
                    "order_number": {
                      "description": "Shape not yet published."
                    },
                    "order_number_display": {
                      "description": "Shape not yet published."
                    },
                    "price_cents": {
                      "description": "Shape not yet published."
                    },
                    "quantity": {
                      "description": "Shape not yet published."
                    },
                    "sku": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "title": {
                      "description": "Shape not yet published."
                    },
                    "variant_id": {
                      "description": "Shape not yet published."
                    },
                    "variant_title": {
                      "description": "Shape not yet published."
                    }
                  },
                  "required": [
                    "status",
                    "order_id"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "draft-orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/email": {
      "get": {
        "operationId": "getEmail",
        "summary": "Get an email",
        "tags": [
          "Email settings"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "$ref": "#/components/schemas/StoremailConfig"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "email"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "email:read"
      },
      "put": {
        "operationId": "putEmail",
        "summary": "Set emails",
        "tags": [
          "Email settings"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "$ref": "#/components/schemas/StoremailConfig"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "email"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "email:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/email/test": {
      "post": {
        "operationId": "postEmailTest",
        "summary": "Send a test email",
        "tags": [
          "Email settings"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "502": {
            "$ref": "#/components/responses/E502"
          }
        },
        "x-dkshop-scope": "email:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/form-submissions": {
      "get": {
        "operationId": "getFormSubmissions",
        "summary": "List form submissions",
        "tags": [
          "Form submissions"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "counts": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "submissions": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/FormSubmissionView"
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "submissions",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "forms:read"
      }
    },
    "/api/v1/store/form-submissions/export": {
      "get": {
        "operationId": "getFormSubmissionsExport",
        "summary": "Export form submissions as CSV",
        "tags": [
          "Form submissions"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "forms:read"
      }
    },
    "/api/v1/store/form-submissions/{id}": {
      "delete": {
        "operationId": "deleteFormSubmissionsId",
        "summary": "Delete a form submission",
        "tags": [
          "Form submissions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "forms:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/form-submissions/{id}/read": {
      "put": {
        "operationId": "putFormSubmissionsIdRead",
        "summary": "Mark a form submission as read",
        "tags": [
          "Form submissions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "submission": {
                      "$ref": "#/components/schemas/FormSubmissionView"
                    }
                  },
                  "required": [
                    "status",
                    "submission"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "forms:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/fulfillments/{id}/cancel": {
      "post": {
        "operationId": "postFulfillmentsIdCancel",
        "summary": "Cancel a fulfillment",
        "tags": [
          "Fulfillments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "fulfillment_status": {
                      "type": "string"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "fulfillment_status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "fulfillments:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/klaviyo": {
      "get": {
        "operationId": "getKlaviyo",
        "summary": "Get a klaviyo",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "klaviyo": {
                      "$ref": "#/components/schemas/KlaviyoView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "klaviyo"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:read"
      },
      "put": {
        "operationId": "putKlaviyo",
        "summary": "Set klaviyos",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "klaviyo": {
                      "$ref": "#/components/schemas/KlaviyoView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "klaviyo"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/klaviyo/lists": {
      "get": {
        "operationId": "getKlaviyoLists",
        "summary": "Get a list",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "lists": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/KlaviyoListDTO"
                      }
                    },
                    "next_cursor": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "lists"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:read"
      }
    },
    "/api/v1/store/klaviyo/test": {
      "post": {
        "operationId": "postKlaviyoTest",
        "summary": "Test the Klaviyo connection",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "account": {
                      "$ref": "#/components/schemas/KlaviyoAccountView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "account"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "502": {
            "$ref": "#/components/responses/E502"
          }
        },
        "x-dkshop-scope": "marketing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/members": {
      "get": {
        "operationId": "getMembers",
        "summary": "List staff",
        "tags": [
          "Staff"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "members": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/StoreMemberView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "members"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "staff:read"
      }
    },
    "/api/v1/store/members/invite": {
      "post": {
        "operationId": "postMembersInvite",
        "summary": "Invite a staff member",
        "tags": [
          "Staff"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "added": {
                      "type": "boolean"
                    },
                    "invited": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "added"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "staff:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/members/{userId}": {
      "put": {
        "operationId": "putMembersUserId",
        "summary": "Set staff",
        "tags": [
          "Staff"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "staff:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteMembersUserId",
        "summary": "Remove a staff member",
        "tags": [
          "Staff"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "staff:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/menus": {
      "get": {
        "operationId": "getMenus",
        "summary": "List menus",
        "tags": [
          "Navigation menus"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "menus": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/MenuView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "menus"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "menus:read"
      }
    },
    "/api/v1/store/menus/{handle}": {
      "put": {
        "operationId": "putMenusHandle",
        "summary": "Create or replace a menu",
        "tags": [
          "Navigation menus"
        ],
        "parameters": [
          {
            "name": "handle",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "menu": {
                      "$ref": "#/components/schemas/MenuRefView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "menu"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "menus:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteMenusHandle",
        "summary": "Delete a menu",
        "tags": [
          "Navigation menus"
        ],
        "parameters": [
          {
            "name": "handle",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "menus:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/orders": {
      "get": {
        "operationId": "getOrders",
        "summary": "List orders",
        "tags": [
          "Orders"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "orders": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/OrderSummaryView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "orders",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:read"
      }
    },
    "/api/v1/store/orders/awaiting-capture": {
      "get": {
        "operationId": "getOrdersAwaitingCapture",
        "summary": "List payments authorized but not yet captured",
        "tags": [
          "Orders"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "awaiting": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/AwaitingCaptureView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "awaiting",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:read"
      }
    },
    "/api/v1/store/orders/export": {
      "get": {
        "operationId": "getOrdersExport",
        "summary": "Export orders as CSV",
        "tags": [
          "Orders"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:read",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/orders/{id}": {
      "get": {
        "operationId": "getOrdersId",
        "summary": "Get an order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order": {
                      "$ref": "#/components/schemas/OrderDetailView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "order"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:read"
      },
      "put": {
        "operationId": "putOrdersId",
        "summary": "Update an order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "note": {
                      "type": "string"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "tags": {
                      "description": "Shape not yet published."
                    }
                  },
                  "required": [
                    "status",
                    "note"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/orders/{id}/archive": {
      "post": {
        "operationId": "postOrdersIdArchive",
        "summary": "Archive an order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order_status": {
                      "type": "string"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "order_status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/orders/{id}/cancel": {
      "post": {
        "operationId": "postOrdersIdCancel",
        "summary": "Cancel an order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order_status": {
                      "type": "string"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "order_status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/orders/{id}/fulfillments": {
      "get": {
        "operationId": "getOrdersIdFulfillments",
        "summary": "List fulfillments",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "fulfilled": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/FulfilledQuantityView"
                      }
                    },
                    "fulfillments": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/FulfillmentView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "fulfillments"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:read"
      },
      "post": {
        "operationId": "postOrdersIdFulfillments",
        "summary": "Create a fulfillment",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "fulfillment": {
                      "$ref": "#/components/schemas/FulfillmentView"
                    },
                    "fulfillment_status": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "fulfillment"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/orders/{id}/refund": {
      "post": {
        "operationId": "postOrdersIdRefund",
        "summary": "Refund an order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "refund": {
                      "$ref": "#/components/schemas/RefundView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "refund"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/orders/{id}/renders": {
      "get": {
        "operationId": "getOrdersIdRenders",
        "summary": "List renders",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "renders": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/RenderView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "renders"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "orders:read"
      }
    },
    "/api/v1/store/pages": {
      "get": {
        "operationId": "getPages",
        "summary": "List pages",
        "tags": [
          "Pages"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "pages": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/PageView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "pages",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "pages:read"
      },
      "post": {
        "operationId": "postPages",
        "summary": "Create a page",
        "tags": [
          "Pages"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/PageView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "pages:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/pages/{id}": {
      "get": {
        "operationId": "getPagesId",
        "summary": "Get a page",
        "tags": [
          "Pages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/PageView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "pages:read"
      },
      "put": {
        "operationId": "putPagesId",
        "summary": "Update a page",
        "tags": [
          "Pages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/PageView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "pages:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deletePagesId",
        "summary": "Delete a page",
        "tags": [
          "Pages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "pages:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/payment-providers": {
      "get": {
        "operationId": "getPaymentProviders",
        "summary": "List payment gateways",
        "tags": [
          "Payment gateways"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "providers": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/PaymentProviderView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "providers"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "payments:read"
      },
      "post": {
        "operationId": "postPaymentProviders",
        "summary": "Connect a payment gateway",
        "tags": [
          "Payment gateways"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "provider": {
                      "$ref": "#/components/schemas/PaymentProviderView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "provider"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "payments:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/payment-providers/test": {
      "post": {
        "operationId": "postPaymentProvidersTest",
        "summary": "Test payment gateway credentials",
        "tags": [
          "Payment gateways"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "valid": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "status",
                    "valid"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "payments:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/payment-providers/{id}": {
      "put": {
        "operationId": "putPaymentProvidersId",
        "summary": "Update a payment gateway",
        "tags": [
          "Payment gateways"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "provider": {
                      "$ref": "#/components/schemas/PaymentProviderView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "provider"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "payments:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deletePaymentProvidersId",
        "summary": "Delete a payment gateway",
        "tags": [
          "Payment gateways"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "payments:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/payment-providers/{id}/card-fields": {
      "put": {
        "operationId": "putPaymentProvidersIdCardFields",
        "summary": "Set card fields",
        "tags": [
          "Payment gateways"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "provider": {
                      "$ref": "#/components/schemas/PaymentProviderView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "provider"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "payments:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/payment-providers/{id}/enabled": {
      "put": {
        "operationId": "putPaymentProvidersIdEnabled",
        "summary": "Set enableds",
        "tags": [
          "Payment gateways"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "payments:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/payment-providers/{id}/wallet-domains": {
      "post": {
        "operationId": "postPaymentProvidersIdWalletDomains",
        "summary": "Register this store's domains for wallet payments",
        "tags": [
          "Payment gateways"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "provider": {
                      "$ref": "#/components/schemas/PaymentProviderView"
                    },
                    "results": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/WalletRegistrationView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "results"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "422": {
            "$ref": "#/components/responses/E422"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "payments:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/pp15": {
      "get": {
        "operationId": "getPp15",
        "summary": "Get a pp15",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "config": {
                      "$ref": "#/components/schemas/FeatureflagsPP15Config"
                    },
                    "platform": {
                      "$ref": "#/components/schemas/PP15PlatformView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "platform"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:read"
      },
      "put": {
        "operationId": "putPp15",
        "summary": "Set pp15s",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/products": {
      "get": {
        "operationId": "getProducts",
        "summary": "List products",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "products": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ProductListView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "products",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:read"
      },
      "post": {
        "operationId": "postProducts",
        "summary": "Create a product",
        "tags": [
          "Products"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product": {
                      "$ref": "#/components/schemas/ProductView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "product"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/products/bulk-axon-category": {
      "post": {
        "operationId": "postProductsBulkAxonCategory",
        "summary": "Set the Axon category on several products",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ids": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "updated": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "status",
                    "updated"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/products/bulk-delete": {
      "post": {
        "operationId": "postProductsBulkDelete",
        "summary": "Delete several products",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deleted": {
                      "type": "integer"
                    },
                    "ids": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "deleted"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/products/export": {
      "get": {
        "operationId": "getProductsExport",
        "summary": "Export products as Shopify-format CSV",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:read",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/products/handle-available": {
      "get": {
        "operationId": "getProductsHandleAvailable",
        "summary": "Check whether a product handle is free",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "available": {
                      "type": "boolean"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "available"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:read"
      }
    },
    "/api/v1/store/products/import": {
      "post": {
        "operationId": "postProductsImport",
        "summary": "Import products from a Shopify-format CSV",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cleaned_cells": {
                      "description": "Shape not yet published."
                    },
                    "created": {
                      "type": "integer"
                    },
                    "errors": {
                      "description": "Shape not yet published."
                    },
                    "renamed_skus": {
                      "description": "Shape not yet published."
                    },
                    "skipped": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "updated": {
                      "description": "Shape not yet published."
                    }
                  },
                  "required": [
                    "status",
                    "created"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "413": {
            "$ref": "#/components/responses/E413"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/products/import/template": {
      "get": {
        "operationId": "getProductsImportTemplate",
        "summary": "Download the product import CSV template",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:read",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/products/options": {
      "get": {
        "operationId": "getProductsOptions",
        "summary": "List products as id and title, for pickers",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "products": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/CatalogProductOption"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "products"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:read"
      }
    },
    "/api/v1/store/products/{id}": {
      "get": {
        "operationId": "getProductsId",
        "summary": "Get a product",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product": {
                      "$ref": "#/components/schemas/ProductView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "product"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:read"
      },
      "put": {
        "operationId": "putProductsId",
        "summary": "Update a product",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product": {
                      "$ref": "#/components/schemas/ProductView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "product"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteProductsId",
        "summary": "Delete a product",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "products:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/recovery-settings": {
      "get": {
        "operationId": "getRecoverySettings",
        "summary": "Get a recovery setting",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "recovery": {
                      "$ref": "#/components/schemas/AbandonedcartPolicy"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "recovery"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:read"
      },
      "put": {
        "operationId": "putRecoverySettings",
        "summary": "Set recovery settings",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "recovery": {
                      "$ref": "#/components/schemas/AbandonedcartPolicy"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "recovery"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/reviews": {
      "get": {
        "operationId": "getReviews",
        "summary": "List reviews",
        "tags": [
          "Product reviews"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "counts": {
                      "description": "Shape not yet published."
                    },
                    "reviews": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ReviewRowView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total rows matching the filter, ignoring limit/offset."
                    }
                  },
                  "required": [
                    "status",
                    "reviews",
                    "total"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:read"
      }
    },
    "/api/v1/store/reviews/bulk": {
      "post": {
        "operationId": "postReviewsBulk",
        "summary": "Approve, reject or delete several reviews",
        "tags": [
          "Product reviews"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "applied": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "applied"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/reviews/export": {
      "get": {
        "operationId": "getReviewsExport",
        "summary": "Export reviews as CSV",
        "tags": [
          "Product reviews"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:read",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/reviews/import": {
      "post": {
        "operationId": "postReviewsImport",
        "summary": "Import reviews from CSV",
        "tags": [
          "Product reviews"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "created": {
                      "type": "integer"
                    },
                    "errors": {
                      "description": "Shape not yet published."
                    },
                    "products": {
                      "description": "Shape not yet published."
                    },
                    "replaced": {
                      "description": "Shape not yet published."
                    },
                    "skipped": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "created"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "413": {
            "$ref": "#/components/responses/E413"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/reviews/import/template": {
      "get": {
        "operationId": "getReviewsImportTemplate",
        "summary": "Download the review import CSV template",
        "tags": [
          "Product reviews"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:read",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/reviews/{id}": {
      "delete": {
        "operationId": "deleteReviewsId",
        "summary": "Delete a review",
        "tags": [
          "Product reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/reviews/{id}/featured": {
      "put": {
        "operationId": "putReviewsIdFeatured",
        "summary": "Set featureds",
        "tags": [
          "Product reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "review": {
                      "$ref": "#/components/schemas/ReviewView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "review"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/reviews/{id}/reply": {
      "put": {
        "operationId": "putReviewsIdReply",
        "summary": "Reply to a review",
        "tags": [
          "Product reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "review": {
                      "$ref": "#/components/schemas/ReviewView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "review"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/reviews/{id}/status": {
      "put": {
        "operationId": "putReviewsIdStatus",
        "summary": "Set status",
        "tags": [
          "Product reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "review": {
                      "$ref": "#/components/schemas/ReviewView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "review"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "reviews:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/settings": {
      "get": {
        "operationId": "getSettings",
        "summary": "List settings",
        "tags": [
          "Store settings"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "settings": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/StoreSettingView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "settings"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "settings:read"
      },
      "put": {
        "operationId": "putSettings",
        "summary": "Create or replace a setting",
        "tags": [
          "Store settings"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "setting": {
                      "$ref": "#/components/schemas/StoreSettingRefView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "setting"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "settings:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shipping/rates/{id}": {
      "put": {
        "operationId": "putShippingRatesId",
        "summary": "Update a shipping rate",
        "tags": [
          "Shipping"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rate": {
                      "$ref": "#/components/schemas/ShippingRateView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "rate"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shipping:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteShippingRatesId",
        "summary": "Delete a shipping rate",
        "tags": [
          "Shipping"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shipping:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shipping/zones": {
      "get": {
        "operationId": "getShippingZones",
        "summary": "List shipping zones",
        "tags": [
          "Shipping"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "zones": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ShippingZoneView"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "zones"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shipping:read"
      },
      "post": {
        "operationId": "postShippingZones",
        "summary": "Create a shipping zone",
        "tags": [
          "Shipping"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "zone": {
                      "$ref": "#/components/schemas/ShippingZoneView"
                    }
                  },
                  "required": [
                    "status",
                    "zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shipping:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shipping/zones/{id}": {
      "put": {
        "operationId": "putShippingZonesId",
        "summary": "Update a shipping zone",
        "tags": [
          "Shipping"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "zone": {
                      "$ref": "#/components/schemas/ShippingZoneView"
                    }
                  },
                  "required": [
                    "status",
                    "zone"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shipping:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteShippingZonesId",
        "summary": "Delete a shipping zone",
        "tags": [
          "Shipping"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shipping:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shipping/zones/{id}/rates": {
      "post": {
        "operationId": "postShippingZonesIdRates",
        "summary": "Add a rate to a shipping zone",
        "tags": [
          "Shipping"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rate": {
                      "$ref": "#/components/schemas/ShippingRateView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "rate"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shipping:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shopify-import": {
      "post": {
        "operationId": "postShopifyImport",
        "summary": "Start a Shopify import",
        "tags": [
          "Shopify import"
        ],
        "responses": {
          "202": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "import_id": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "import_id"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shopify-import:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shopify-import/browser": {
      "post": {
        "operationId": "postShopifyImportBrowser",
        "summary": "Start a browser-driven Shopify import",
        "tags": [
          "Shopify import"
        ],
        "responses": {
          "202": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "import_id": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "import_id"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shopify-import:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shopify-import/cancel": {
      "post": {
        "operationId": "postShopifyImportCancel",
        "summary": "Cancel the running Shopify import",
        "tags": [
          "Shopify import"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cancelled": {
                      "type": "boolean"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "cancelled"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shopify-import:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shopify-import/clear": {
      "post": {
        "operationId": "postShopifyImportClear",
        "summary": "Delete everything a Shopify import created",
        "tags": [
          "Shopify import"
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shopify-import:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shopify-import/latest": {
      "get": {
        "operationId": "getShopifyImportLatest",
        "summary": "Get the most recent Shopify import",
        "tags": [
          "Shopify import"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "import": {
                      "$ref": "#/components/schemas/ShopifyimportStatus"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "import"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shopify-import:read"
      }
    },
    "/api/v1/store/shopify-import/probe": {
      "post": {
        "operationId": "postShopifyImportProbe",
        "summary": "Probe a Shopify store before importing",
        "tags": [
          "Shopify import"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "probe": {
                      "$ref": "#/components/schemas/ShopifyimportProbeResult"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "probe"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        },
        "x-dkshop-scope": "shopify-import:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shopify-import/{id}/collections": {
      "post": {
        "operationId": "postShopifyImportIdCollections",
        "summary": "Submit collections for a browser-driven Shopify import",
        "tags": [
          "Shopify import"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "counts": {
                      "$ref": "#/components/schemas/ShopifyimportCounts"
                    },
                    "item_errors": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ShopifyimportItemError"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "counts"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shopify-import:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shopify-import/{id}/finish": {
      "post": {
        "operationId": "postShopifyImportIdFinish",
        "summary": "Finish a browser-driven Shopify import",
        "tags": [
          "Shopify import"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "done": {
                      "type": "boolean"
                    },
                    "failed": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "tail": {
                      "description": "Shape not yet published."
                    }
                  },
                  "required": [
                    "status",
                    "done"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shopify-import:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/shopify-import/{id}/products": {
      "post": {
        "operationId": "postShopifyImportIdProducts",
        "summary": "Submit products for a browser-driven Shopify import",
        "tags": [
          "Shopify import"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "counts": {
                      "$ref": "#/components/schemas/ShopifyimportCounts"
                    },
                    "item_errors": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ShopifyimportItemError"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "counts"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "shopify-import:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/storefront-enabled": {
      "put": {
        "operationId": "putStorefrontEnabled",
        "summary": "Set storefront enableds",
        "tags": [
          "Store profile"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "store": {
                      "$ref": "#/components/schemas/StoreProfileView"
                    }
                  },
                  "required": [
                    "status",
                    "store"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "store:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/storefront-funnel": {
      "get": {
        "operationId": "getStorefrontFunnel",
        "summary": "Get the storefront conversion funnel",
        "tags": [
          "Store profile"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "funnel": {
                      "$ref": "#/components/schemas/StoreeventsFunnel"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "funnel"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "store:read"
      }
    },
    "/api/v1/store/tax/rates": {
      "get": {
        "operationId": "getTaxRates",
        "summary": "List shipping rates",
        "tags": [
          "Tax"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rates": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/TaxRateView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "rates"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "tax:read"
      },
      "post": {
        "operationId": "postTaxRates",
        "summary": "Create a shipping rate",
        "tags": [
          "Tax"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rate": {
                      "$ref": "#/components/schemas/TaxRateView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "rate"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "tax:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/tax/rates/{id}": {
      "put": {
        "operationId": "putTaxRatesId",
        "summary": "Update a shipping rate",
        "tags": [
          "Tax"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rate": {
                      "$ref": "#/components/schemas/TaxRateView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "rate"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "tax:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteTaxRatesId",
        "summary": "Delete a shipping rate",
        "tags": [
          "Tax"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "tax:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/theme": {
      "get": {
        "operationId": "getTheme",
        "summary": "Get a theme",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "theme": {
                      "$ref": "#/components/schemas/ThemeDraftView"
                    }
                  },
                  "required": [
                    "status",
                    "theme"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:read"
      },
      "put": {
        "operationId": "putTheme",
        "summary": "Update a theme",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "status",
                    "updated_at"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/theme-market": {
      "get": {
        "operationId": "getThemeMarket",
        "summary": "List theme markets",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "templates": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/MarketTemplateListView"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "templates"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:read"
      }
    },
    "/api/v1/store/theme-market/install": {
      "post": {
        "operationId": "postThemeMarketInstall",
        "summary": "Install a theme from the marketplace",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "theme_id": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "status",
                    "theme_id"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/theme-market/{key}": {
      "get": {
        "operationId": "getThemeMarketKey",
        "summary": "Get a theme market",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "template": {
                      "$ref": "#/components/schemas/MarketTemplateView"
                    }
                  },
                  "required": [
                    "status",
                    "template"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:read"
      }
    },
    "/api/v1/store/theme/publish": {
      "post": {
        "operationId": "postThemePublish",
        "summary": "Publish the active theme's draft",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "publication_id": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "version": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "status",
                    "version"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/theme/rollback": {
      "post": {
        "operationId": "postThemeRollback",
        "summary": "Roll the active theme back to an earlier version",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "version": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "status",
                    "version"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/theme/versions": {
      "get": {
        "operationId": "getThemeVersions",
        "summary": "List published versions of the active theme",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "versions": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ThemeVersionView"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "versions"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:read"
      }
    },
    "/api/v1/store/themes": {
      "get": {
        "operationId": "getThemes",
        "summary": "List themes",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "live_id": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "themes": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ThemeListView"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "themes"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:read"
      },
      "post": {
        "operationId": "postThemes",
        "summary": "Create a theme",
        "tags": [
          "Themes"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "id"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/themes/{id}": {
      "get": {
        "operationId": "getThemesId",
        "summary": "Get a theme",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "theme": {
                      "$ref": "#/components/schemas/ThemeDetailView"
                    }
                  },
                  "required": [
                    "status",
                    "theme"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:read"
      },
      "put": {
        "operationId": "putThemesId",
        "summary": "Update a theme",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "status",
                    "updated_at"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      },
      "patch": {
        "operationId": "patchThemesId",
        "summary": "Rename a theme",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "name"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteThemesId",
        "summary": "Delete a theme",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/themes/{id}/duplicate": {
      "post": {
        "operationId": "postThemesIdDuplicate",
        "summary": "Duplicate a theme",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "id"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/themes/{id}/preview-token": {
      "post": {
        "operationId": "postThemesIdPreviewToken",
        "summary": "Mint a preview token for a theme",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "token": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status",
                    "token"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/themes/{id}/publish": {
      "post": {
        "operationId": "postThemesIdPublish",
        "summary": "Publish a theme's draft",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "publication_id": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "version": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "status",
                    "version"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/themes/{id}/rollback": {
      "post": {
        "operationId": "postThemesIdRollback",
        "summary": "Roll a theme back to an earlier version",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "version": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "status",
                    "version"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/themes/{id}/update-from-template": {
      "post": {
        "operationId": "postThemesIdUpdateFromTemplate",
        "summary": "Update an update from template",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "theme_id": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "status",
                    "theme_id"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/themes/{id}/versions": {
      "get": {
        "operationId": "getThemesIdVersions",
        "summary": "List published versions of a theme",
        "tags": [
          "Themes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "versions": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/ThemeVersionView"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "versions"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "409": {
            "$ref": "#/components/responses/E409"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "themes:read"
      }
    },
    "/api/v1/store/tipping": {
      "get": {
        "operationId": "getTipping",
        "summary": "Get a tipping",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "tipping": {
                      "$ref": "#/components/schemas/TippingConfig"
                    }
                  },
                  "required": [
                    "status",
                    "tipping"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:read"
      },
      "put": {
        "operationId": "putTipping",
        "summary": "Set tippings",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "tipping": {
                      "$ref": "#/components/schemas/TippingConfig"
                    }
                  },
                  "required": [
                    "status",
                    "tipping"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/tracking": {
      "get": {
        "operationId": "getTracking",
        "summary": "Get a tracking",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "tracking": {
                      "$ref": "#/components/schemas/TrackingConfig"
                    }
                  },
                  "required": [
                    "status",
                    "tracking"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:read"
      },
      "put": {
        "operationId": "putTracking",
        "summary": "Set trackings",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "tracking": {
                      "$ref": "#/components/schemas/TrackingConfig"
                    }
                  },
                  "required": [
                    "status",
                    "tracking"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/tracking/axon-capi": {
      "get": {
        "operationId": "getTrackingAxonCapi",
        "summary": "Get an axon capi",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "axon_capi": {
                      "$ref": "#/components/schemas/TrackingAxonCAPIView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "axon_capi"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:read"
      },
      "put": {
        "operationId": "putTrackingAxonCapi",
        "summary": "Set axon capis",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "axon_capi": {
                      "$ref": "#/components/schemas/TrackingAxonCAPIView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "axon_capi"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/tracking/capi": {
      "get": {
        "operationId": "getTrackingCapi",
        "summary": "Get a capi",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "capi": {
                      "$ref": "#/components/schemas/TrackingCAPIView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "capi"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:read"
      },
      "put": {
        "operationId": "putTrackingCapi",
        "summary": "Set capis",
        "tags": [
          "Marketing and tracking"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "capi": {
                      "$ref": "#/components/schemas/TrackingCAPIView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "capi"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "marketing:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/uploads/finalize": {
      "post": {
        "operationId": "postUploadsFinalize",
        "summary": "Finalize an upload",
        "tags": [
          "Media uploads"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "filename": {
                      "description": "Shape not yet published."
                    },
                    "height": {
                      "description": "Shape not yet published."
                    },
                    "src": {
                      "type": "string"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "thumbhash": {
                      "description": "Shape not yet published."
                    },
                    "width": {
                      "description": "Shape not yet published."
                    }
                  },
                  "required": [
                    "status",
                    "src"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "413": {
            "$ref": "#/components/responses/E413"
          },
          "415": {
            "$ref": "#/components/responses/E415"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        },
        "x-dkshop-scope": "media:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/uploads/request": {
      "post": {
        "operationId": "postUploadsRequest",
        "summary": "Request a presigned upload URL",
        "tags": [
          "Media uploads"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "headers": {
                      "description": "Shape not yet published."
                    },
                    "key": {
                      "description": "Shape not yet published."
                    },
                    "max_bytes": {
                      "description": "Shape not yet published."
                    },
                    "method": {
                      "description": "Shape not yet published."
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "upload_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status",
                    "upload_url"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "413": {
            "$ref": "#/components/responses/E413"
          },
          "415": {
            "$ref": "#/components/responses/E415"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        },
        "x-dkshop-scope": "media:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/upsell-funnels": {
      "get": {
        "operationId": "getUpsellFunnels",
        "summary": "List post-purchase funnels",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "funnels": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/FunnelSummaryView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "funnels"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:read"
      },
      "post": {
        "operationId": "postUpsellFunnels",
        "summary": "Create a post-purchase funnel",
        "tags": [
          "Checkout and post-purchase"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "funnel": {
                      "$ref": "#/components/schemas/FunnelView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "funnel"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/upsell-funnels/{id}": {
      "get": {
        "operationId": "getUpsellFunnelsId",
        "summary": "Get a post-purchase funnel",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "funnel": {
                      "$ref": "#/components/schemas/FunnelView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "funnel"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:read"
      },
      "put": {
        "operationId": "putUpsellFunnelsId",
        "summary": "Update a post-purchase funnel",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "funnel": {
                      "$ref": "#/components/schemas/FunnelView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "funnel"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteUpsellFunnelsId",
        "summary": "Delete a post-purchase funnel",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/upsell-funnels/{id}/checkout-page": {
      "post": {
        "operationId": "postUpsellFunnelsIdCheckoutPage",
        "summary": "Ensure a funnel has a checkout page",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "$ref": "#/components/schemas/CheckoutPageRefView"
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "page"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/upsell-funnels/{id}/pp15": {
      "put": {
        "operationId": "putUpsellFunnelsIdPp15",
        "summary": "Override the store's handling surcharge for this funnel (null inherits it again)",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/upsell-funnels/{id}/steps/{stepId}/upsell-page": {
      "put": {
        "operationId": "putUpsellFunnelsIdStepsStepIdUpsellPage",
        "summary": "Set one step's own upsell design",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteUpsellFunnelsIdStepsStepIdUpsellPage",
        "summary": "Clear a step's own upsell design so it inherits the funnel's",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stepId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/upsell-funnels/{id}/tipping": {
      "put": {
        "operationId": "putUpsellFunnelsIdTipping",
        "summary": "Override the store's tipping rule for this funnel (null inherits it again)",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/upsell-funnels/{id}/upsell-page": {
      "put": {
        "operationId": "putUpsellFunnelsIdUpsellPage",
        "summary": "Set upsell pages",
        "tags": [
          "Checkout and post-purchase"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "checkout:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/webhooks": {
      "get": {
        "operationId": "getWebhooks",
        "summary": "List webhook subscriptions",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "webhooks": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/WebhookSubscriptionView"
                      }
                    }
                  },
                  "required": [
                    "status",
                    "webhooks"
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "webhooks:read"
      },
      "post": {
        "operationId": "postWebhooks",
        "summary": "Create a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "webhook": {
                      "$ref": "#/components/schemas/WebhookSubscriptionView"
                    }
                  },
                  "required": [
                    "status",
                    "webhook"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "webhooks:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/webhooks/{id}": {
      "put": {
        "operationId": "putWebhooksId",
        "summary": "Update a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    },
                    "webhook": {
                      "$ref": "#/components/schemas/WebhookSubscriptionView"
                    }
                  },
                  "required": [
                    "status",
                    "webhook"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "webhooks:write",
        "x-dkshop-role": "admin"
      },
      "delete": {
        "operationId": "deleteWebhooksId",
        "summary": "Delete a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The request was accepted and there is nothing to return.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "webhooks:write",
        "x-dkshop-role": "admin"
      }
    },
    "/api/v1/store/webhooks/{id}/deliveries": {
      "get": {
        "operationId": "getWebhooksIdDeliveries",
        "summary": "List recent deliveries for a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deliveries": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/WebhookDeliveryView"
                      }
                    },
                    "status": {
                      "type": "boolean",
                      "description": "Always true on a successful response."
                    }
                  },
                  "required": [
                    "status",
                    "deliveries"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          }
        },
        "x-dkshop-scope": "webhooks:read"
      }
    }
  },
  "components": {
    "schemas": {
      "APIKeyView": {
        "type": "object",
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "created_by": {
            "type": "integer"
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "hint": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "key": {
            "type": [
              "string",
              "null"
            ]
          },
          "last_used_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "revoked_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "role": {
            "type": "string"
          },
          "scopes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "hint",
          "role",
          "scopes",
          "status",
          "created_at",
          "created_by"
        ]
      },
      "AbandonedCartRowView": {
        "type": "object",
        "properties": {
          "abandoned_at": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "item_count": {
            "type": "integer"
          },
          "recovered": {
            "type": "boolean"
          },
          "recovered_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "recovery_emails": {
            "type": "integer"
          },
          "subtotal_cents": {
            "type": "integer"
          },
          "token": {
            "type": "string"
          }
        },
        "required": [
          "token",
          "email",
          "currency",
          "subtotal_cents",
          "item_count",
          "abandoned_at",
          "recovery_emails",
          "recovered"
        ]
      },
      "AbandonedCheckoutRowView": {
        "type": "object",
        "properties": {
          "abandoned_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "attempts": {
            "type": "integer"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "item_count": {
            "type": "integer"
          },
          "payment_error": {
            "type": "string"
          },
          "payment_status": {
            "type": "string"
          },
          "recovered": {
            "type": "boolean"
          },
          "recovered_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "recovery_emails": {
            "type": "integer"
          },
          "state": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "total_cents": {
            "type": "integer"
          }
        },
        "required": [
          "token",
          "email",
          "currency",
          "total_cents",
          "created_at",
          "state",
          "attempts",
          "item_count",
          "recovery_emails",
          "recovered"
        ]
      },
      "AbandonedcartDetail": {
        "type": "object",
        "properties": {
          "abandoned_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "attempts": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AbandonedcartPaymentAttempt"
            }
          },
          "billing_address": {},
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "discount_cents": {
            "type": "integer"
          },
          "discount_code": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "lines": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AbandonedcartDetailLine"
            }
          },
          "marketing_consent": {
            "type": "boolean"
          },
          "phone": {
            "type": "string"
          },
          "recovered_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "recovery_emails": {
            "type": "integer"
          },
          "shipping_address": {},
          "shipping_cents": {
            "type": "integer"
          },
          "shipping_line": {},
          "state": {
            "type": "string"
          },
          "subtotal_cents": {
            "type": "integer"
          },
          "surcharge_cents": {
            "type": "integer"
          },
          "tax_cents": {
            "type": "integer"
          },
          "timeline": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AbandonedcartTimelineEvent"
            }
          },
          "tip_cents": {
            "type": "integer"
          },
          "token": {
            "type": "string"
          },
          "total_cents": {
            "type": "integer"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "utm": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": [
          "token",
          "state",
          "currency",
          "email",
          "phone",
          "marketing_consent",
          "lines",
          "subtotal_cents",
          "discount_cents",
          "shipping_cents",
          "tax_cents",
          "tip_cents",
          "surcharge_cents",
          "total_cents",
          "created_at",
          "updated_at",
          "expires_at",
          "recovery_emails",
          "attempts",
          "timeline"
        ]
      },
      "AbandonedcartDetailLine": {
        "type": "object",
        "properties": {
          "image_src": {
            "type": "string"
          },
          "price_cents": {
            "type": "integer"
          },
          "properties": {},
          "quantity": {
            "type": "integer"
          },
          "sku": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "variant_title": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "price_cents",
          "quantity"
        ]
      },
      "AbandonedcartPaymentAttempt": {
        "type": "object",
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "capture_model": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "payment_method": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "transaction_id": {
            "type": "integer"
          }
        },
        "required": [
          "transaction_id",
          "provider",
          "status",
          "amount_cents",
          "currency",
          "created_at"
        ]
      },
      "AbandonedcartPolicy": {
        "type": "object",
        "properties": {
          "cart": {
            "$ref": "#/components/schemas/AbandonedcartSurface"
          },
          "checkout": {
            "$ref": "#/components/schemas/AbandonedcartSurface"
          }
        },
        "required": [
          "checkout",
          "cart"
        ]
      },
      "AbandonedcartSurface": {
        "type": "object",
        "properties": {
          "delays_minutes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "discount_enabled": {
            "type": "boolean"
          },
          "discount_from_step": {
            "type": "integer"
          },
          "discount_ttl_hours": {
            "type": "integer"
          },
          "discount_value": {
            "type": "integer"
          },
          "discount_value_type": {
            "type": "string"
          },
          "idle_minutes": {
            "type": "integer"
          },
          "mode": {
            "type": "string"
          }
        },
        "required": [
          "mode",
          "idle_minutes",
          "delays_minutes"
        ]
      },
      "AbandonedcartTimelineEvent": {
        "type": "object",
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "detail": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "error_code": {
            "type": "string"
          },
          "error_message": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "payment_method": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "transaction_id": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "source",
          "occurred_at"
        ]
      },
      "AbandonmentStatsView": {
        "type": "object",
        "properties": {
          "recovered": {
            "type": "integer"
          },
          "recovered_cents": {
            "type": "integer"
          },
          "recovery_rate": {
            "type": "number"
          },
          "total": {
            "type": "integer"
          }
        },
        "required": [
          "total",
          "recovered",
          "recovered_cents",
          "recovery_rate"
        ]
      },
      "AnalyticsCampaignStat": {
        "type": "object",
        "properties": {
          "campaign": {
            "type": "string"
          },
          "gross_cents": {
            "type": "integer"
          },
          "order_count": {
            "type": "integer"
          },
          "source": {
            "type": "string"
          }
        },
        "required": [
          "campaign",
          "source",
          "order_count",
          "gross_cents"
        ]
      },
      "AnalyticsCustomers": {
        "type": "object",
        "properties": {
          "new": {
            "type": "integer"
          },
          "returning": {
            "type": "integer"
          },
          "returning_rate": {
            "type": "number"
          }
        },
        "required": [
          "new",
          "returning",
          "returning_rate"
        ]
      },
      "AnalyticsDeltas": {
        "type": "object",
        "properties": {
          "aov_pct": {
            "type": [
              "number",
              "null"
            ]
          },
          "gross_pct": {
            "type": [
              "number",
              "null"
            ]
          },
          "orders_pct": {
            "type": [
              "number",
              "null"
            ]
          }
        }
      },
      "AnalyticsDiscountStat": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "discount_cents": {
            "type": "integer"
          },
          "order_count": {
            "type": "integer"
          }
        },
        "required": [
          "code",
          "order_count",
          "discount_cents"
        ]
      },
      "AnalyticsFunnelStat": {
        "type": "object",
        "properties": {
          "accepted": {
            "type": "integer"
          },
          "accepts_per_entry": {
            "type": "number"
          },
          "entered": {
            "type": "integer"
          },
          "funnel_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "revenue_cents": {
            "type": "integer"
          }
        },
        "required": [
          "funnel_id",
          "name",
          "entered",
          "accepted",
          "revenue_cents",
          "accepts_per_entry"
        ]
      },
      "AnalyticsMetrics": {
        "type": "object",
        "properties": {
          "aov_cents": {
            "type": "integer"
          },
          "discount_cents": {
            "type": "integer"
          },
          "gross_cents": {
            "type": "integer"
          },
          "net_cents": {
            "type": "integer"
          },
          "order_count": {
            "type": "integer"
          },
          "refund_cents": {
            "type": "integer"
          },
          "refunded_order_count": {
            "type": "integer"
          },
          "shipping_cents": {
            "type": "integer"
          },
          "tax_cents": {
            "type": "integer"
          },
          "tip_cents": {
            "type": "integer"
          },
          "units": {
            "type": "integer"
          }
        },
        "required": [
          "order_count",
          "gross_cents",
          "net_cents",
          "refund_cents",
          "refunded_order_count",
          "discount_cents",
          "shipping_cents",
          "tax_cents",
          "tip_cents",
          "units",
          "aov_cents"
        ]
      },
      "AnalyticsOverview": {
        "type": "object",
        "properties": {
          "by_campaign": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsCampaignStat"
            }
          },
          "by_source": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsSourceStat"
            }
          },
          "customers": {
            "$ref": "#/components/schemas/AnalyticsCustomers"
          },
          "deltas": {
            "$ref": "#/components/schemas/AnalyticsDeltas"
          },
          "from": {
            "type": "string"
          },
          "interval": {
            "type": "string"
          },
          "metrics": {
            "$ref": "#/components/schemas/AnalyticsMetrics"
          },
          "previous": {
            "$ref": "#/components/schemas/AnalyticsMetrics"
          },
          "series": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsSeriesPoint"
            }
          },
          "to": {
            "type": "string"
          },
          "top_discounts": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsDiscountStat"
            }
          },
          "top_products": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsProductStat"
            }
          }
        },
        "required": [
          "from",
          "to",
          "interval",
          "metrics",
          "previous",
          "deltas",
          "series",
          "top_products",
          "top_discounts",
          "customers",
          "by_source",
          "by_campaign"
        ]
      },
      "AnalyticsProductStat": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "integer"
          },
          "revenue_cents": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "units": {
            "type": "integer"
          }
        },
        "required": [
          "product_id",
          "title",
          "units",
          "revenue_cents"
        ]
      },
      "AnalyticsSeriesPoint": {
        "type": "object",
        "properties": {
          "bucket": {
            "type": "string"
          },
          "gross_cents": {
            "type": "integer"
          },
          "order_count": {
            "type": "integer"
          }
        },
        "required": [
          "bucket",
          "order_count",
          "gross_cents"
        ]
      },
      "AnalyticsSourceStat": {
        "type": "object",
        "properties": {
          "gross_cents": {
            "type": "integer"
          },
          "order_count": {
            "type": "integer"
          },
          "source": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "order_count",
          "gross_cents"
        ]
      },
      "AnalyticsStepStat": {
        "type": "object",
        "properties": {
          "accepted": {
            "type": "integer"
          },
          "add_rate": {
            "type": "number"
          },
          "charged": {
            "type": "integer"
          },
          "declined": {
            "type": "integer"
          },
          "funnel_id": {
            "type": "integer"
          },
          "funnel_name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "product_id": {
            "type": "integer"
          },
          "product_title": {
            "type": "string"
          },
          "sales_cents": {
            "type": "integer"
          },
          "shown": {
            "type": "integer"
          },
          "step_name": {
            "type": "string"
          },
          "unavailable": {
            "type": "integer"
          },
          "undecided": {
            "type": "integer"
          },
          "units": {
            "type": "integer"
          },
          "variant_id": {
            "type": "integer"
          },
          "zone_id": {
            "type": "integer"
          },
          "zone_name": {
            "type": "string"
          }
        },
        "required": [
          "zone_id",
          "zone_name",
          "funnel_id",
          "funnel_name",
          "position",
          "step_name",
          "product_id",
          "variant_id",
          "product_title",
          "shown",
          "accepted",
          "declined",
          "unavailable",
          "undecided",
          "charged",
          "sales_cents",
          "units",
          "add_rate"
        ]
      },
      "AnalyticsUTMStat": {
        "type": "object",
        "properties": {
          "campaign": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "gross_cents": {
            "type": "integer"
          },
          "medium": {
            "type": "string"
          },
          "order_count": {
            "type": "integer"
          },
          "source": {
            "type": "string"
          },
          "term": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "medium",
          "campaign",
          "term",
          "content",
          "order_count",
          "gross_cents"
        ]
      },
      "AnalyticsUpsellDeepReport": {
        "type": "object",
        "properties": {
          "by_step": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsStepStat"
            }
          },
          "by_zone_funnel": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsZoneFunnelStat"
            }
          },
          "from": {
            "type": "string"
          },
          "interval": {
            "type": "string"
          },
          "kpis": {
            "$ref": "#/components/schemas/AnalyticsUpsellKPIs"
          },
          "series": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsUpsellSeriesPoint"
            }
          },
          "to": {
            "type": "string"
          },
          "utm": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsUTMStat"
            }
          },
          "utm_total_gross_cents": {
            "type": "integer"
          },
          "utm_total_orders": {
            "type": "integer"
          }
        },
        "required": [
          "from",
          "to",
          "interval",
          "kpis",
          "series",
          "by_zone_funnel",
          "by_step",
          "utm",
          "utm_total_orders",
          "utm_total_gross_cents"
        ]
      },
      "AnalyticsUpsellKPIs": {
        "type": "object",
        "properties": {
          "accepted": {
            "type": "integer"
          },
          "aov_cents": {
            "type": "integer"
          },
          "carts": {
            "type": "integer"
          },
          "cohort_orders": {
            "type": "integer"
          },
          "cohort_revenue_cents": {
            "type": "integer"
          },
          "completed": {
            "type": "integer"
          },
          "declined": {
            "type": "integer"
          },
          "entered": {
            "type": "integer"
          },
          "offers_shown": {
            "type": "integer"
          },
          "order_cr": {
            "type": "number"
          },
          "orders": {
            "type": "integer"
          },
          "revenue_cents": {
            "type": "integer"
          },
          "surcharge_cents": {
            "type": "integer"
          },
          "unavailable": {
            "type": "integer"
          },
          "undecided": {
            "type": "integer"
          },
          "upsell_cr": {
            "type": "number"
          },
          "upsell_order_cr": {
            "type": "number"
          },
          "upsell_orders": {
            "type": "integer"
          },
          "upsell_revenue_cents": {
            "type": "integer"
          }
        },
        "required": [
          "revenue_cents",
          "orders",
          "carts",
          "cohort_orders",
          "order_cr",
          "cohort_revenue_cents",
          "upsell_revenue_cents",
          "upsell_orders",
          "upsell_order_cr",
          "entered",
          "completed",
          "offers_shown",
          "accepted",
          "declined",
          "unavailable",
          "undecided",
          "upsell_cr",
          "aov_cents",
          "surcharge_cents"
        ]
      },
      "AnalyticsUpsellReport": {
        "type": "object",
        "properties": {
          "accepted": {
            "type": "integer"
          },
          "by_funnel": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/AnalyticsFunnelStat"
            }
          },
          "completed": {
            "type": "integer"
          },
          "declined": {
            "type": "integer"
          },
          "entered": {
            "type": "integer"
          },
          "from": {
            "type": "string"
          },
          "offers_shown": {
            "type": "integer"
          },
          "other": {
            "type": "integer"
          },
          "surcharge_cents": {
            "type": "integer"
          },
          "take_rate": {
            "type": "number"
          },
          "to": {
            "type": "string"
          },
          "upsell_lines": {
            "type": "integer"
          },
          "upsell_orders": {
            "type": "integer"
          },
          "upsell_revenue_cents": {
            "type": "integer"
          }
        },
        "required": [
          "from",
          "to",
          "entered",
          "completed",
          "offers_shown",
          "accepted",
          "declined",
          "other",
          "upsell_revenue_cents",
          "upsell_lines",
          "upsell_orders",
          "surcharge_cents",
          "take_rate",
          "by_funnel"
        ]
      },
      "AnalyticsUpsellSeriesPoint": {
        "type": "object",
        "properties": {
          "accepted": {
            "type": "integer"
          },
          "bucket": {
            "type": "string"
          },
          "carts": {
            "type": "integer"
          },
          "cohort_orders": {
            "type": "integer"
          },
          "entered": {
            "type": "integer"
          },
          "order_cr": {
            "type": "number"
          },
          "orders": {
            "type": "integer"
          },
          "revenue_cents": {
            "type": "integer"
          },
          "shown": {
            "type": "integer"
          },
          "upsell_cr": {
            "type": "number"
          },
          "upsell_orders": {
            "type": "integer"
          },
          "upsell_revenue_cents": {
            "type": "integer"
          }
        },
        "required": [
          "bucket",
          "revenue_cents",
          "orders",
          "carts",
          "cohort_orders",
          "order_cr",
          "upsell_revenue_cents",
          "upsell_orders",
          "entered",
          "shown",
          "accepted",
          "upsell_cr"
        ]
      },
      "AnalyticsZoneFunnelStat": {
        "type": "object",
        "properties": {
          "aov_cents": {
            "type": "integer"
          },
          "carts": {
            "type": "integer"
          },
          "funnel_id": {
            "type": "integer"
          },
          "funnel_name": {
            "type": "string"
          },
          "order_cr": {
            "type": "number"
          },
          "orders": {
            "type": "integer"
          },
          "revenue_cents": {
            "type": "integer"
          },
          "upsell_orders": {
            "type": "integer"
          },
          "upsell_revenue_cents": {
            "type": "integer"
          },
          "zone_id": {
            "type": "integer"
          },
          "zone_name": {
            "type": "string"
          }
        },
        "required": [
          "zone_id",
          "zone_name",
          "funnel_id",
          "funnel_name",
          "carts",
          "orders",
          "revenue_cents",
          "upsell_revenue_cents",
          "upsell_orders",
          "order_cr",
          "aov_cents"
        ]
      },
      "ArticleView": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string"
          },
          "body_html": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "excerpt": {
            "type": "string"
          },
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "image_thumbhash": {
            "type": "string"
          },
          "published": {
            "type": "boolean"
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "seo": {},
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "handle",
          "title",
          "excerpt",
          "body_html",
          "image_src",
          "image_thumbhash",
          "author",
          "tags",
          "published",
          "seo",
          "created_at",
          "updated_at"
        ]
      },
      "AuditLog": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "actor_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "actor_type": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "integer"
          },
          "ip": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {}
          },
          "method": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "status_code": {
            "type": "integer"
          },
          "store_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "user_agent": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "actor_type",
          "action",
          "method",
          "path",
          "status_code",
          "ip",
          "user_agent",
          "metadata",
          "created_at"
        ]
      },
      "AwaitingCaptureView": {
        "type": "object",
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "attempts": {
            "type": "integer"
          },
          "authorized_at": {
            "type": "string",
            "format": "date-time"
          },
          "capture_model": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "current_position": {
            "type": [
              "integer",
              "null"
            ]
          },
          "draft_order_id": {
            "type": "integer"
          },
          "email": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "funnel_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "funnel_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "has_funnel": {
            "type": "boolean"
          },
          "needs_attention": {
            "type": "boolean"
          },
          "offer_count": {
            "type": [
              "integer",
              "null"
            ]
          },
          "provider": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "total_cents": {
            "type": "integer"
          },
          "transaction_id": {
            "type": "integer"
          }
        },
        "required": [
          "transaction_id",
          "draft_order_id",
          "state",
          "needs_attention",
          "email",
          "currency",
          "provider",
          "amount_cents",
          "total_cents",
          "capture_model",
          "authorized_at",
          "error",
          "attempts",
          "has_funnel"
        ]
      },
      "BillingCardDTO": {
        "type": "object",
        "properties": {
          "brand": {
            "type": "string"
          },
          "exp_month": {
            "type": "integer"
          },
          "exp_year": {
            "type": "integer"
          },
          "id": {
            "type": "integer"
          },
          "is_default": {
            "type": "boolean"
          },
          "last4": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "brand",
          "last4",
          "exp_month",
          "exp_year",
          "is_default"
        ]
      },
      "BillingInvoiceDTO": {
        "type": "object",
        "properties": {
          "amount_paid_cents": {
            "type": "integer"
          },
          "attempt_count": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "due_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_id": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "issued_at": {
            "type": "string"
          },
          "last_error": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "number": {
            "type": "string"
          },
          "paid_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "paid_via": {
            "type": "string"
          },
          "period_end": {
            "type": "string"
          },
          "period_start": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "store_handle": {
            "type": "string"
          },
          "store_id": {
            "type": "integer"
          },
          "store_name": {
            "type": "string"
          },
          "subtotal_cents": {
            "type": "integer"
          },
          "total_cents": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "store_id",
          "number",
          "status",
          "currency",
          "subtotal_cents",
          "total_cents",
          "amount_paid_cents",
          "period_start",
          "period_end",
          "issued_at",
          "attempt_count",
          "last_error",
          "external_id",
          "paid_via",
          "note"
        ]
      },
      "BillingPlanDTO": {
        "type": "object",
        "properties": {
          "billing_interval": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "features": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "id": {
            "type": "integer"
          },
          "is_default": {
            "type": "boolean"
          },
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "price_cents": {
            "type": "integer"
          },
          "sort": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "transaction_fee_bps": {
            "type": "integer"
          },
          "transaction_fee_fixed_cents": {
            "type": "integer"
          },
          "trial_days": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "key",
          "name",
          "description",
          "price_cents",
          "currency",
          "billing_interval",
          "transaction_fee_bps",
          "transaction_fee_fixed_cents",
          "trial_days",
          "features",
          "status",
          "is_default",
          "sort"
        ]
      },
      "BillingSubscriptionDTO": {
        "type": "object",
        "properties": {
          "billing_interval": {
            "type": "string"
          },
          "cancel_at_period_end": {
            "type": "boolean"
          },
          "currency": {
            "type": "string"
          },
          "current_period_end": {
            "type": "string"
          },
          "current_period_start": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "plan_id": {
            "type": "integer"
          },
          "price_cents": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "store_id": {
            "type": "integer"
          },
          "transaction_fee_bps": {
            "type": "integer"
          },
          "transaction_fee_fixed_cents": {
            "type": "integer"
          },
          "trial_ends_at": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "store_id",
          "plan_id",
          "status",
          "price_cents",
          "currency",
          "billing_interval",
          "transaction_fee_bps",
          "transaction_fee_fixed_cents",
          "current_period_start",
          "current_period_end",
          "cancel_at_period_end"
        ]
      },
      "BundleOfferTierView": {
        "type": "object",
        "properties": {
          "benefit_label": {
            "type": "string"
          },
          "caption": {
            "type": "string"
          },
          "discount_bps": {
            "type": "integer"
          },
          "discount_display": {
            "type": "string"
          },
          "free_shipping": {
            "type": "boolean"
          },
          "id": {
            "type": "integer"
          },
          "label": {
            "type": "string"
          },
          "preselected": {
            "type": "boolean"
          },
          "quantity": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "quantity",
          "discount_bps",
          "free_shipping",
          "label",
          "title",
          "caption",
          "benefit_label",
          "discount_display",
          "preselected"
        ]
      },
      "BundleOfferView": {
        "type": "object",
        "properties": {
          "applies_to": {
            "type": "string"
          },
          "collection_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "enabled": {
            "type": "boolean"
          },
          "id": {
            "type": "integer"
          },
          "include_plain_items": {
            "type": "boolean"
          },
          "product_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "tiers": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/BundleOfferTierView"
            }
          },
          "title": {
            "type": "string"
          },
          "variant_selectors": {
            "type": "boolean"
          },
          "variant_selectors_single": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "enabled",
          "title",
          "applies_to",
          "include_plain_items",
          "product_ids",
          "collection_ids",
          "variant_selectors",
          "variant_selectors_single",
          "tiers"
        ]
      },
      "BundleSummaryView": {
        "type": "object",
        "properties": {
          "applies_to": {
            "type": "string"
          },
          "collection_count": {
            "type": "integer"
          },
          "enabled": {
            "type": "boolean"
          },
          "id": {
            "type": "integer"
          },
          "include_plain_items": {
            "type": "boolean"
          },
          "product_count": {
            "type": "integer"
          },
          "tier_count": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "enabled",
          "title",
          "applies_to",
          "include_plain_items",
          "tier_count",
          "product_count",
          "collection_count"
        ]
      },
      "CardFieldsView": {
        "type": "object",
        "properties": {
          "eligible": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "probed": {
            "type": "boolean"
          },
          "probed_at": {
            "type": "string"
          },
          "supported": {
            "type": "boolean"
          }
        },
        "required": [
          "supported",
          "eligible",
          "probed",
          "probed_at",
          "enabled"
        ]
      },
      "CatalogCollectionOption": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "published": {
            "type": "boolean"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "handle",
          "title",
          "image_src",
          "published"
        ]
      },
      "CatalogProductOption": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "handle",
          "title",
          "status",
          "image_src"
        ]
      },
      "CheckoutPageListView": {
        "type": "object",
        "properties": {
          "funnel_count": {
            "type": "integer"
          },
          "id": {
            "type": "integer"
          },
          "is_default": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "sections": {},
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "is_default",
          "updated_at",
          "funnel_count"
        ]
      },
      "CheckoutPageRefView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "is_default": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "is_default"
        ]
      },
      "CheckoutPageView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "is_default": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "sections": {},
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "is_default",
          "updated_at"
        ]
      },
      "CheckoutZoneFunnelView": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "funnel_id": {
            "type": "integer"
          },
          "funnel_name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "weight": {
            "type": "integer"
          }
        },
        "required": [
          "funnel_id",
          "weight",
          "position",
          "funnel_name",
          "enabled"
        ]
      },
      "CheckoutZoneView": {
        "type": "object",
        "properties": {
          "catch_all": {
            "type": "boolean"
          },
          "countries": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "funnels": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CheckoutZoneFunnelView"
            }
          },
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "region_warning": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "countries",
          "catch_all",
          "position",
          "funnels"
        ]
      },
      "CollectionListView": {
        "type": "object",
        "properties": {
          "collection_type": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "description": {
            "type": "string"
          },
          "disjunctive": {
            "type": "boolean"
          },
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "products_count": {
            "type": "integer"
          },
          "published": {
            "type": "boolean"
          },
          "rules": {},
          "seo": {},
          "sort_order": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "title",
          "handle",
          "description",
          "image_src",
          "published",
          "sort_order",
          "seo",
          "collection_type",
          "rules",
          "disjunctive",
          "created_at",
          "updated_at",
          "products_count"
        ]
      },
      "CollectionMemberView": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "price_cents": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "handle",
          "status",
          "position",
          "price_cents",
          "image_src"
        ]
      },
      "CollectionView": {
        "type": "object",
        "properties": {
          "collection_type": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "description": {
            "type": "string"
          },
          "disjunctive": {
            "type": "boolean"
          },
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "published": {
            "type": "boolean"
          },
          "rules": {},
          "seo": {},
          "sort_order": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "title",
          "handle",
          "description",
          "image_src",
          "published",
          "sort_order",
          "seo",
          "collection_type",
          "rules",
          "disjunctive",
          "created_at",
          "updated_at"
        ]
      },
      "CustomizerCondition": {
        "type": "object",
        "properties": {
          "op": {
            "type": "string"
          },
          "option_id": {
            "type": "integer"
          },
          "value": {
            "type": "string"
          },
          "values": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "option_id",
          "op"
        ]
      },
      "CustomizerFunction": {
        "type": "object",
        "properties": {
          "element_key": {
            "type": "string"
          },
          "group_key": {
            "type": "string"
          },
          "property": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "property",
          "value"
        ]
      },
      "CzDesignView": {
        "type": "object",
        "properties": {
          "height_px": {
            "type": "integer"
          },
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "width_px": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "width_px",
          "height_px"
        ]
      },
      "CzElementView": {
        "type": "object",
        "properties": {
          "design_id": {
            "type": "integer"
          },
          "element_key": {
            "type": "string"
          },
          "group_key": {
            "type": "string"
          },
          "h": {
            "type": "number"
          },
          "id": {
            "type": "integer"
          },
          "rotation_deg": {
            "type": "number"
          },
          "settings": {},
          "type": {
            "type": "string"
          },
          "w": {
            "type": "number"
          },
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "z_index": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "design_id",
          "element_key",
          "group_key",
          "type",
          "x",
          "y",
          "w",
          "h",
          "rotation_deg",
          "z_index",
          "settings"
        ]
      },
      "CzLibraryCatalogueView": {
        "type": "object",
        "properties": {
          "finishes": {
            "type": "integer"
          },
          "group_key": {
            "type": "string"
          },
          "holes": {
            "type": "integer"
          },
          "items": {
            "type": "integer"
          }
        },
        "required": [
          "group_key",
          "finishes",
          "items",
          "holes"
        ]
      },
      "CzLibraryItemView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "library_id": {
            "type": "integer"
          },
          "position": {
            "type": "integer"
          },
          "value": {}
        },
        "required": [
          "id",
          "library_id",
          "value",
          "position"
        ]
      },
      "CzLibraryView": {
        "type": "object",
        "properties": {
          "group_key": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "kind": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "scope_value": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "name",
          "group_key",
          "scope_value"
        ]
      },
      "CzMockupView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "image_height": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "image_width": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "product_base_id": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "product_base_id",
          "name",
          "image_src",
          "image_width",
          "image_height",
          "position"
        ]
      },
      "CzOptionSetView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "CzOptionValueView": {
        "type": "object",
        "properties": {
          "functions": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CustomizerFunction"
            }
          },
          "id": {
            "type": "integer"
          },
          "label": {
            "type": "string"
          },
          "option_id": {
            "type": "integer"
          },
          "position": {
            "type": "integer"
          },
          "price_delta_cents": {
            "type": "integer"
          },
          "thumbnail_url": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "option_id",
          "value",
          "label",
          "price_delta_cents",
          "functions",
          "position",
          "thumbnail_url"
        ]
      },
      "CzOptionView": {
        "type": "object",
        "properties": {
          "conditions": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CustomizerCondition"
            }
          },
          "help_text": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "label": {
            "type": "string"
          },
          "option_set_id": {
            "type": "integer"
          },
          "position": {
            "type": "integer"
          },
          "price_per_char_cents": {
            "type": "integer"
          },
          "required": {
            "type": "boolean"
          },
          "section": {
            "type": "string"
          },
          "settings": {},
          "type": {
            "type": "string"
          },
          "validation": {
            "$ref": "#/components/schemas/CzTextValidationView"
          }
        },
        "required": [
          "id",
          "option_set_id",
          "type",
          "label",
          "help_text",
          "required",
          "section",
          "position",
          "conditions",
          "settings",
          "price_per_char_cents",
          "validation"
        ]
      },
      "CzPreviewBindingView": {
        "type": "object",
        "properties": {
          "default_selections": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CzSelectionView"
            }
          },
          "id": {
            "type": "integer"
          },
          "library_scope": {
            "type": "string"
          },
          "option_name": {
            "type": "string"
          },
          "option_set_id": {
            "type": "integer"
          },
          "option_set_name": {
            "type": "string"
          },
          "option_value": {
            "type": "string"
          },
          "product_handle": {
            "type": "string"
          },
          "product_id": {
            "type": "integer"
          },
          "product_title": {
            "type": "string"
          },
          "template_id": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "product_id",
          "template_id",
          "option_set_id",
          "option_name",
          "option_value",
          "library_scope",
          "default_selections",
          "product_title",
          "product_handle",
          "option_set_name"
        ]
      },
      "CzPreviewOptionSetView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzPreviewOptionView"
            }
          }
        },
        "required": [
          "id",
          "name",
          "options"
        ]
      },
      "CzPreviewOptionView": {
        "type": "object",
        "properties": {
          "conditions": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CustomizerCondition"
            }
          },
          "help_text": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "label": {
            "type": "string"
          },
          "option_set_id": {
            "type": "integer"
          },
          "position": {
            "type": "integer"
          },
          "price_per_char_cents": {
            "type": "integer"
          },
          "required": {
            "type": "boolean"
          },
          "section": {
            "type": "string"
          },
          "settings": {},
          "type": {
            "type": "string"
          },
          "validation": {
            "$ref": "#/components/schemas/CzTextValidationView"
          },
          "values": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzOptionValueView"
            }
          }
        },
        "required": [
          "id",
          "option_set_id",
          "type",
          "label",
          "help_text",
          "required",
          "section",
          "position",
          "conditions",
          "settings",
          "price_per_char_cents",
          "validation",
          "values"
        ]
      },
      "CzPrintAreaView": {
        "type": "object",
        "properties": {
          "h": {
            "type": "number"
          },
          "id": {
            "type": "integer"
          },
          "mockup_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "rotation_deg": {
            "type": "number"
          },
          "w": {
            "type": "number"
          },
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          }
        },
        "required": [
          "id",
          "mockup_id",
          "name",
          "x",
          "y",
          "w",
          "h",
          "rotation_deg",
          "position"
        ]
      },
      "CzProductBaseView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "CzProductBindingView": {
        "type": "object",
        "properties": {
          "default_selections": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CzSelectionView"
            }
          },
          "id": {
            "type": "integer"
          },
          "library_scope": {
            "type": "string"
          },
          "option_name": {
            "type": "string"
          },
          "option_set_id": {
            "type": "integer"
          },
          "option_value": {
            "type": "string"
          },
          "product_id": {
            "type": "integer"
          },
          "template_id": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "product_id",
          "template_id",
          "option_set_id",
          "option_name",
          "option_value",
          "library_scope",
          "default_selections"
        ]
      },
      "CzQuantityTierView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "min_qty": {
            "type": "integer"
          },
          "position": {
            "type": "integer"
          },
          "price_cents": {
            "type": "integer"
          },
          "template_id": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "template_id",
          "min_qty",
          "price_cents",
          "position"
        ]
      },
      "CzReplaceOptionValuesView": {
        "type": "object",
        "properties": {
          "created": {
            "type": "integer"
          },
          "deleted": {
            "type": "integer"
          },
          "updated": {
            "type": "integer"
          },
          "values": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzOptionValueView"
            }
          }
        },
        "required": [
          "values",
          "updated",
          "created",
          "deleted"
        ]
      },
      "CzSelectionView": {
        "type": "object",
        "properties": {
          "picked": {
            "type": "boolean"
          },
          "raw": {
            "type": "string"
          },
          "value_id": {
            "type": "integer"
          }
        },
        "required": [
          "raw",
          "value_id",
          "picked"
        ]
      },
      "CzStudioElementView": {
        "type": "object",
        "properties": {
          "design_id": {
            "type": "integer"
          },
          "element_key": {
            "type": "string"
          },
          "group_key": {
            "type": "string"
          },
          "h": {
            "type": "number"
          },
          "id": {
            "type": "integer"
          },
          "referenced_by": {
            "type": "integer"
          },
          "rotation_deg": {
            "type": "number"
          },
          "settings": {},
          "type": {
            "type": "string"
          },
          "w": {
            "type": "number"
          },
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "z_index": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "design_id",
          "element_key",
          "group_key",
          "type",
          "x",
          "y",
          "w",
          "h",
          "rotation_deg",
          "z_index",
          "settings",
          "referenced_by"
        ]
      },
      "CzStudioMockupView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "image_height": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "image_width": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "print_areas": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzPrintAreaView"
            }
          },
          "product_base_id": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "product_base_id",
          "name",
          "image_src",
          "image_width",
          "image_height",
          "position",
          "print_areas"
        ]
      },
      "CzStudioPlacementView": {
        "type": "object",
        "properties": {
          "base": {
            "$ref": "#/components/schemas/CzProductBaseView"
          },
          "mockups": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzStudioMockupView"
            }
          },
          "template": {
            "$ref": "#/components/schemas/CzTemplateView"
          }
        },
        "required": [
          "template",
          "base",
          "mockups"
        ]
      },
      "CzStudioView": {
        "type": "object",
        "properties": {
          "design": {
            "$ref": "#/components/schemas/CzDesignView"
          },
          "elements": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzStudioElementView"
            }
          },
          "placements": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzStudioPlacementView"
            }
          }
        },
        "required": [
          "design",
          "elements",
          "placements"
        ]
      },
      "CzTemplatePreviewView": {
        "type": "object",
        "properties": {
          "base": {
            "$ref": "#/components/schemas/CzProductBaseView"
          },
          "binding": {
            "$ref": "#/components/schemas/CzPreviewBindingView"
          },
          "bindings": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzPreviewBindingView"
            }
          },
          "design": {
            "$ref": "#/components/schemas/CzDesignView"
          },
          "elements": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzElementView"
            }
          },
          "mockups": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzStudioMockupView"
            }
          },
          "option_set": {
            "$ref": "#/components/schemas/CzPreviewOptionSetView"
          },
          "quantity_tiers": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CzQuantityTierView"
            }
          },
          "template": {
            "$ref": "#/components/schemas/CzTemplateView"
          }
        },
        "required": [
          "template",
          "base",
          "mockups",
          "design",
          "elements",
          "quantity_tiers",
          "bindings"
        ]
      },
      "CzTemplateView": {
        "type": "object",
        "properties": {
          "design_id": {
            "type": "integer"
          },
          "export_format": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "included_colors": {
            "type": "integer"
          },
          "included_elements": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "ppi": {
            "type": "integer"
          },
          "price_per_extra_color_cents": {
            "type": "integer"
          },
          "price_per_extra_element_cents": {
            "type": "integer"
          },
          "product_base_id": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "product_base_id",
          "design_id",
          "name",
          "ppi",
          "export_format",
          "included_colors",
          "price_per_extra_color_cents",
          "included_elements",
          "price_per_extra_element_cents"
        ]
      },
      "CzTextValidationView": {
        "type": "object",
        "properties": {
          "chars_per_line": {
            "type": "integer"
          },
          "max_length": {
            "type": "integer"
          },
          "max_lines": {
            "type": "integer"
          },
          "mode": {
            "type": "string"
          },
          "pattern": {
            "type": "string"
          }
        },
        "required": [
          "max_length",
          "max_lines",
          "chars_per_line",
          "mode",
          "pattern"
        ]
      },
      "DiscountDetailView": {
        "type": "object",
        "properties": {
          "applies_to": {
            "type": "string"
          },
          "buy_collection_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "buy_product_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "buy_quantity": {
            "type": "integer"
          },
          "class": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "collection_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "enabled": {
            "type": "boolean"
          },
          "ends_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "get_collection_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "get_product_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "get_quantity": {
            "type": "integer"
          },
          "get_value": {
            "type": "integer"
          },
          "get_value_type": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "minimum_subtotal_cents": {
            "type": "integer"
          },
          "once_per_customer": {
            "type": "boolean"
          },
          "per_customer_limit": {
            "type": [
              "integer",
              "null"
            ]
          },
          "product_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "starts_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "type": {
            "type": "string"
          },
          "usage_limit": {
            "type": [
              "integer",
              "null"
            ]
          },
          "used_count": {
            "type": "integer"
          },
          "value": {
            "type": "integer"
          },
          "value_type": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "code",
          "type",
          "value_type",
          "value",
          "minimum_subtotal_cents",
          "used_count",
          "once_per_customer",
          "enabled",
          "class",
          "applies_to",
          "buy_quantity",
          "get_quantity",
          "get_value_type",
          "get_value",
          "product_ids",
          "collection_ids",
          "buy_product_ids",
          "buy_collection_ids",
          "get_product_ids",
          "get_collection_ids"
        ]
      },
      "DiscountView": {
        "type": "object",
        "properties": {
          "applies_to": {
            "type": "string"
          },
          "buy_quantity": {
            "type": "integer"
          },
          "class": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "ends_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "get_quantity": {
            "type": "integer"
          },
          "get_value": {
            "type": "integer"
          },
          "get_value_type": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "minimum_subtotal_cents": {
            "type": "integer"
          },
          "once_per_customer": {
            "type": "boolean"
          },
          "per_customer_limit": {
            "type": [
              "integer",
              "null"
            ]
          },
          "starts_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "type": {
            "type": "string"
          },
          "usage_limit": {
            "type": [
              "integer",
              "null"
            ]
          },
          "used_count": {
            "type": "integer"
          },
          "value": {
            "type": "integer"
          },
          "value_type": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "code",
          "type",
          "value_type",
          "value",
          "minimum_subtotal_cents",
          "used_count",
          "once_per_customer",
          "enabled",
          "class",
          "applies_to",
          "buy_quantity",
          "get_quantity",
          "get_value_type",
          "get_value"
        ]
      },
      "DomainView": {
        "type": "object",
        "properties": {
          "dns_records": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/DomainmgrDNSRecord"
            }
          },
          "hostname": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "is_primary": {
            "type": "boolean"
          },
          "last_error": {
            "type": "string"
          },
          "ssl_status": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "verification_records": {}
        },
        "required": [
          "id",
          "hostname",
          "status",
          "ssl_status",
          "is_primary",
          "last_error",
          "verification_records",
          "dns_records"
        ]
      },
      "DomainmgrDNSRecord": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "name",
          "value",
          "purpose"
        ]
      },
      "DraftOrderLineView": {
        "type": "object",
        "properties": {
          "custom": {
            "type": "boolean"
          },
          "id": {
            "type": "integer"
          },
          "line_total_cents": {
            "type": "integer"
          },
          "price_cents": {
            "type": "integer"
          },
          "quantity": {
            "type": "integer"
          },
          "sku": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "variant_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "variant_title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "variant_title",
          "sku",
          "price_cents",
          "quantity",
          "line_total_cents",
          "custom"
        ]
      },
      "DraftOrderView": {
        "type": "object",
        "properties": {
          "currency": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "invoice_sent_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "lines": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/DraftOrderLineView"
            }
          },
          "name": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "order_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "subtotal_cents": {
            "type": "integer"
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "token": {
            "type": "string"
          },
          "total_cents": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "token",
          "name",
          "status",
          "email",
          "currency",
          "note",
          "tags",
          "lines",
          "subtotal_cents",
          "total_cents"
        ]
      },
      "Error": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "What went wrong, in plain language."
          },
          "status": {
            "type": "boolean",
            "description": "Always false on an error."
          }
        },
        "required": [
          "status",
          "message"
        ]
      },
      "FeatureflagsPP15Config": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean"
          },
          "cap_cents": {
            "type": "integer"
          },
          "value_bps": {
            "type": "integer"
          }
        },
        "required": [
          "active",
          "value_bps",
          "cap_cents"
        ]
      },
      "FormSubmissionView": {
        "type": "object",
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "email": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "read": {
            "type": "boolean"
          },
          "read_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "source_url": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "email",
          "name",
          "message",
          "source_url",
          "read",
          "created_at"
        ]
      },
      "FulfilledQuantityView": {
        "type": "object",
        "properties": {
          "line_item_id": {
            "type": "integer"
          },
          "quantity": {
            "type": "integer"
          }
        },
        "required": [
          "line_item_id",
          "quantity"
        ]
      },
      "FulfillmentView": {
        "type": "object",
        "properties": {
          "carrier": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "integer"
          },
          "note": {
            "type": "string"
          },
          "order_id": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "tracking_number": {
            "type": "string"
          },
          "tracking_url": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "order_id",
          "status",
          "tracking_number",
          "tracking_url",
          "carrier",
          "note",
          "created_at"
        ]
      },
      "FunnelStepView": {
        "type": "object",
        "properties": {
          "accept_next_position": {
            "type": [
              "integer",
              "null"
            ]
          },
          "config": {},
          "decline_next_position": {
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "type": {
            "type": "string"
          },
          "upsell_page": {}
        },
        "required": [
          "id",
          "position",
          "name",
          "type",
          "config",
          "upsell_page"
        ]
      },
      "FunnelSummaryView": {
        "type": "object",
        "properties": {
          "checkout_page_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "timeout_seconds": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "enabled",
          "timeout_seconds"
        ]
      },
      "FunnelView": {
        "type": "object",
        "properties": {
          "checkout_page_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "offers": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/FunnelStepView"
            }
          },
          "pp15": {
            "$ref": "#/components/schemas/FeatureflagsPP15Config"
          },
          "timeout_seconds": {
            "type": "integer"
          },
          "tipping": {
            "$ref": "#/components/schemas/TippingConfig"
          },
          "upsell_page": {}
        },
        "required": [
          "id",
          "name",
          "enabled",
          "timeout_seconds",
          "offers",
          "upsell_page"
        ]
      },
      "KlaviyoAccountView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "test_account": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "test_account"
        ]
      },
      "KlaviyoCredentialsView": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "string"
          },
          "account_name": {
            "type": "string"
          },
          "auth_method": {
            "type": "string"
          },
          "backfill_done": {
            "type": "integer"
          },
          "backfill_status": {
            "type": "string"
          },
          "backfill_total": {
            "type": "integer"
          },
          "enabled": {
            "type": "boolean"
          },
          "has_key": {
            "type": "boolean"
          },
          "key_hint": {
            "type": "string"
          },
          "list_id": {
            "type": "string"
          },
          "list_name": {
            "type": "string"
          },
          "metric_variant": {
            "type": "string"
          },
          "test_account": {
            "type": "boolean"
          }
        },
        "required": [
          "enabled",
          "has_key",
          "key_hint",
          "auth_method",
          "account_id",
          "account_name",
          "test_account",
          "list_id",
          "list_name",
          "metric_variant",
          "backfill_status",
          "backfill_done",
          "backfill_total"
        ]
      },
      "KlaviyoListDTO": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "opt_in_process": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "opt_in_process"
        ]
      },
      "KlaviyoPublicConfig": {
        "type": "object",
        "properties": {
          "added_to_cart": {
            "type": "boolean"
          },
          "onsite_enabled": {
            "type": "boolean"
          },
          "site_id": {
            "type": "string"
          },
          "viewed_product": {
            "type": "boolean"
          }
        },
        "required": [
          "site_id",
          "onsite_enabled",
          "viewed_product",
          "added_to_cart"
        ]
      },
      "KlaviyoView": {
        "type": "object",
        "properties": {
          "credentials": {
            "$ref": "#/components/schemas/KlaviyoCredentialsView"
          },
          "public": {
            "$ref": "#/components/schemas/KlaviyoPublicConfig"
          }
        },
        "required": [
          "public",
          "credentials"
        ]
      },
      "MarketTemplateListView": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "family": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "latest_version": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "owned": {
            "type": "boolean"
          },
          "preview_images": {},
          "price_cents": {
            "type": "integer"
          },
          "tagline": {
            "type": "string"
          },
          "theme_version": {
            "type": "string"
          },
          "thumbnail_url": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "name",
          "tagline",
          "description",
          "author",
          "category",
          "price_cents",
          "currency",
          "thumbnail_url",
          "preview_images",
          "latest_version",
          "theme_version",
          "family",
          "owned"
        ]
      },
      "MarketTemplateView": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "family": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "latest_version": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "preview_images": {},
          "price_cents": {
            "type": "integer"
          },
          "tagline": {
            "type": "string"
          },
          "theme_version": {
            "type": "string"
          },
          "thumbnail_url": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "name",
          "tagline",
          "description",
          "author",
          "category",
          "price_cents",
          "currency",
          "thumbnail_url",
          "preview_images",
          "latest_version",
          "theme_version",
          "family"
        ]
      },
      "MenuRefView": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "handle",
          "title"
        ]
      },
      "MenuView": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string"
          },
          "items": {},
          "title": {
            "type": "string"
          }
        },
        "required": [
          "handle",
          "title",
          "items"
        ]
      },
      "OrderAttributionView": {
        "type": "object",
        "properties": {
          "utm_campaign": {
            "type": "string"
          },
          "utm_content": {
            "type": "string"
          },
          "utm_medium": {
            "type": "string"
          },
          "utm_source": {
            "type": "string"
          },
          "utm_term": {
            "type": "string"
          }
        },
        "required": [
          "utm_source",
          "utm_medium",
          "utm_campaign",
          "utm_term",
          "utm_content"
        ]
      },
      "OrderCustomerView": {
        "type": "object",
        "properties": {
          "accepts_marketing": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "email": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "last_name": {
            "type": "string"
          },
          "orders_count": {
            "type": "integer"
          },
          "phone": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "first_name",
          "last_name",
          "email",
          "phone",
          "accepts_marketing",
          "orders_count",
          "created_at"
        ]
      },
      "OrderDetailView": {
        "type": "object",
        "properties": {
          "attribution": {
            "$ref": "#/components/schemas/OrderAttributionView"
          },
          "billing_address": {},
          "cancel_reason": {
            "type": "string"
          },
          "cancelled_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "checkout_started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "customer": {
            "$ref": "#/components/schemas/OrderCustomerView"
          },
          "discount_cents": {
            "type": "integer"
          },
          "discount_code": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "financial_status": {
            "type": "string"
          },
          "fulfillment_status": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "line_items": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/OrderLineItemView"
            }
          },
          "note": {
            "type": "string"
          },
          "order_number": {
            "type": "integer"
          },
          "order_number_display": {
            "type": "string"
          },
          "paid_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "shipping_address": {},
          "shipping_cents": {
            "type": "integer"
          },
          "shipping_line": {},
          "status": {
            "type": "string"
          },
          "subtotal_cents": {
            "type": "integer"
          },
          "system_tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "tax_cents": {
            "type": "integer"
          },
          "tip_cents": {
            "type": "integer"
          },
          "token": {
            "type": "string"
          },
          "total_cents": {
            "type": "integer"
          },
          "transactions": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/OrderTransactionView"
            }
          },
          "upsell": {
            "$ref": "#/components/schemas/OrderUpsellView"
          }
        },
        "required": [
          "id",
          "order_number",
          "order_number_display",
          "token",
          "email",
          "currency",
          "subtotal_cents",
          "discount_cents",
          "shipping_cents",
          "tax_cents",
          "total_cents",
          "tip_cents",
          "discount_code",
          "financial_status",
          "fulfillment_status",
          "status",
          "created_at",
          "cancel_reason",
          "line_items",
          "transactions",
          "note",
          "tags",
          "system_tags",
          "shipping_address",
          "billing_address",
          "shipping_line"
        ]
      },
      "OrderLineItemView": {
        "type": "object",
        "properties": {
          "bundle_group": {
            "type": [
              "string",
              "null"
            ]
          },
          "bundle_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "integer"
          },
          "image_src": {
            "type": "string"
          },
          "image_thumbhash": {
            "type": "string"
          },
          "original_price_cents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "price_cents": {
            "type": "integer"
          },
          "properties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "quantity": {
            "type": "integer"
          },
          "requires_shipping": {
            "type": "boolean"
          },
          "sku": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "variant_title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "variant_title",
          "sku",
          "price_cents",
          "quantity",
          "source",
          "requires_shipping",
          "image_src",
          "image_thumbhash"
        ]
      },
      "OrderSummaryView": {
        "type": "object",
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "financial_status": {
            "type": "string"
          },
          "fulfillment_status": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "order_number": {
            "type": "integer"
          },
          "order_number_display": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "system_tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "total_cents": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "order_number",
          "order_number_display",
          "email",
          "currency",
          "total_cents",
          "financial_status",
          "fulfillment_status",
          "status",
          "created_at",
          "tags",
          "system_tags"
        ]
      },
      "OrderTransactionView": {
        "type": "object",
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "error": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_id": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "kind": {
            "type": "string"
          },
          "payment_method": {
            "type": [
              "string",
              "null"
            ]
          },
          "provider": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "provider",
          "status",
          "amount_cents",
          "currency",
          "external_id",
          "created_at"
        ]
      },
      "OrderUpsellView": {
        "type": "object",
        "properties": {
          "entered_at": {
            "type": "string",
            "format": "date-time"
          },
          "funnel_name": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "entered_at",
          "funnel_name",
          "status"
        ]
      },
      "PP15PlatformView": {
        "type": "object",
        "properties": {
          "post_upsell_enabled": {
            "type": "boolean"
          },
          "pp15_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "post_upsell_enabled",
          "pp15_enabled"
        ]
      },
      "PageView": {
        "type": "object",
        "properties": {
          "body_html": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "published": {
            "type": "boolean"
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "seo": {},
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "handle",
          "title",
          "body_html",
          "published",
          "seo",
          "created_at",
          "updated_at"
        ]
      },
      "PaymentFeaturesView": {
        "type": "object",
        "properties": {
          "holds_funds_at_checkout": {
            "type": "boolean"
          },
          "manual_capture": {
            "type": "boolean"
          },
          "refunds": {
            "type": "boolean"
          },
          "settle_retryable": {
            "type": "boolean"
          },
          "upsell": {
            "type": "boolean"
          },
          "wallets": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "webhook_autoreg": {
            "type": "boolean"
          }
        },
        "required": [
          "refunds",
          "manual_capture",
          "wallets",
          "webhook_autoreg",
          "upsell",
          "holds_funds_at_checkout",
          "settle_retryable"
        ]
      },
      "PaymentProviderView": {
        "type": "object",
        "properties": {
          "capabilities": {},
          "card_fields": {
            "$ref": "#/components/schemas/CardFieldsView"
          },
          "display_name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "features": {
            "$ref": "#/components/schemas/PaymentFeaturesView"
          },
          "has_credentials": {
            "type": "boolean"
          },
          "has_webhook_secret": {
            "type": "boolean"
          },
          "id": {
            "type": "integer"
          },
          "mode": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "public_config": {},
          "public_id": {
            "type": "string"
          },
          "wallet_domains": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/WalletDomainView"
            }
          },
          "webhook_path": {
            "type": "string"
          },
          "webhook_registered": {
            "type": "boolean"
          },
          "webhook_url": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "provider",
          "mode",
          "display_name",
          "enabled",
          "public_id",
          "public_config",
          "capabilities",
          "webhook_path",
          "webhook_url",
          "has_credentials",
          "has_webhook_secret",
          "webhook_registered",
          "card_fields",
          "features",
          "wallet_domains"
        ]
      },
      "ProductImageView": {
        "type": "object",
        "properties": {
          "alt": {
            "type": "string"
          },
          "height": {
            "type": "integer"
          },
          "id": {
            "type": "integer"
          },
          "position": {
            "type": "integer"
          },
          "src": {
            "type": "string"
          },
          "thumbhash": {
            "type": "string"
          },
          "width": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "src",
          "alt",
          "position",
          "width",
          "height",
          "thumbhash"
        ]
      },
      "ProductListView": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "image_src": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_cents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "product_type": {
            "type": "string"
          },
          "rating_avg": {
            "type": "integer"
          },
          "rating_count": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "vendor": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "handle",
          "status",
          "product_type",
          "vendor",
          "tags",
          "rating_avg",
          "rating_count",
          "updated_at"
        ]
      },
      "ProductOptionView": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "values": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "position",
          "values"
        ]
      },
      "ProductVariantView": {
        "type": "object",
        "properties": {
          "barcode": {
            "type": "string"
          },
          "compare_at_price_cents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "cost_cents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "type": "integer"
          },
          "image_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "inventory_policy": {
            "type": "string"
          },
          "inventory_quantity": {
            "type": "integer"
          },
          "option1": {
            "type": "string"
          },
          "option2": {
            "type": "string"
          },
          "option3": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "price_cents": {
            "type": "integer"
          },
          "requires_shipping": {
            "type": "boolean"
          },
          "sku": {
            "type": "string"
          },
          "taxable": {
            "type": "boolean"
          },
          "title": {
            "type": "string"
          },
          "track_inventory": {
            "type": "boolean"
          },
          "weight_grams": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "title",
          "sku",
          "barcode",
          "option1",
          "option2",
          "option3",
          "price_cents",
          "inventory_quantity",
          "inventory_policy",
          "track_inventory",
          "requires_shipping",
          "taxable",
          "weight_grams",
          "position"
        ]
      },
      "ProductView": {
        "type": "object",
        "properties": {
          "axon_category_id": {
            "type": "integer"
          },
          "body_html": {
            "type": "string"
          },
          "collection_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          },
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "images": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ProductImageView"
            }
          },
          "options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ProductOptionView"
            }
          },
          "product_type": {
            "type": "string"
          },
          "rating_avg": {
            "type": "integer"
          },
          "rating_count": {
            "type": "integer"
          },
          "seo": {},
          "status": {
            "type": "string"
          },
          "tags": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "variants": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ProductVariantView"
            }
          },
          "vendor": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "handle",
          "status",
          "product_type",
          "vendor",
          "tags",
          "rating_avg",
          "rating_count",
          "updated_at",
          "body_html",
          "seo",
          "axon_category_id",
          "variants",
          "options",
          "images",
          "collection_ids"
        ]
      },
      "RefundView": {
        "type": "object",
        "properties": {
          "amount_cents": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "order_financial_status": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "amount_cents",
          "currency",
          "status",
          "order_financial_status"
        ]
      },
      "RenderView": {
        "type": "object",
        "properties": {
          "height_px": {
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "line_item_id": {
            "type": "integer"
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "variant_title": {
            "type": "string"
          },
          "width_px": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "line_item_id",
          "title",
          "variant_title",
          "status"
        ]
      },
      "ReviewPhoto": {
        "type": "object",
        "properties": {
          "height": {
            "type": "integer"
          },
          "src": {
            "type": "string"
          },
          "thumbhash": {
            "type": "string"
          },
          "width": {
            "type": "integer"
          }
        },
        "required": [
          "src",
          "width",
          "height"
        ]
      },
      "ReviewRowView": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "email": {
            "type": "string"
          },
          "featured": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "order_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ReviewPhoto"
            }
          },
          "product_handle": {
            "type": "string"
          },
          "product_id": {
            "type": "string"
          },
          "product_title": {
            "type": "string"
          },
          "rating": {
            "type": "integer"
          },
          "replied_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "reply": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "product_id",
          "rating",
          "title",
          "body",
          "author",
          "email",
          "verified",
          "status",
          "featured",
          "reply",
          "source",
          "created_at",
          "photos",
          "product_title",
          "product_handle"
        ]
      },
      "ReviewView": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "email": {
            "type": "string"
          },
          "featured": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "order_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ReviewPhoto"
            }
          },
          "product_id": {
            "type": "string"
          },
          "rating": {
            "type": "integer"
          },
          "replied_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "reply": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "product_id",
          "rating",
          "title",
          "body",
          "author",
          "email",
          "verified",
          "status",
          "featured",
          "reply",
          "source",
          "created_at",
          "photos"
        ]
      },
      "ScopeResourceView": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "required": [
          "resource",
          "label"
        ]
      },
      "ShippingRateView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "max_subtotal_cents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "max_weight_grams": {
            "type": [
              "integer",
              "null"
            ]
          },
          "min_subtotal_cents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "min_weight_grams": {
            "type": [
              "integer",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "price_cents": {
            "type": "integer"
          },
          "zone_id": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "zone_id",
          "name",
          "price_cents",
          "position"
        ]
      },
      "ShippingZoneView": {
        "type": "object",
        "properties": {
          "countries": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "default_rate_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "rates": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ShippingRateView"
            }
          },
          "region_warning": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "countries",
          "position",
          "rates"
        ]
      },
      "ShopifyimportCounts": {
        "type": "object",
        "properties": {
          "articles": {
            "type": "integer"
          },
          "collections": {
            "type": "integer"
          },
          "images": {
            "type": "integer"
          },
          "pages": {
            "type": "integer"
          },
          "products": {
            "type": "integer"
          }
        },
        "required": [
          "products",
          "collections",
          "pages",
          "articles",
          "images"
        ]
      },
      "ShopifyimportItemError": {
        "type": "object",
        "properties": {
          "msg": {
            "type": "string"
          },
          "phase": {
            "type": "string"
          }
        },
        "required": [
          "phase",
          "msg"
        ]
      },
      "ShopifyimportProbeResult": {
        "type": "object",
        "properties": {
          "articles": {
            "type": "integer"
          },
          "collections": {
            "type": "integer"
          },
          "collections_at_least": {
            "type": "boolean"
          },
          "domain": {
            "type": "string"
          },
          "has_blog": {
            "type": "boolean"
          },
          "import_limit": {
            "type": "integer"
          },
          "is_shopify": {
            "type": "boolean"
          },
          "pages": {
            "type": "integer"
          },
          "products": {
            "type": "integer"
          },
          "store_name": {
            "type": "string"
          }
        },
        "required": [
          "is_shopify",
          "domain",
          "store_name",
          "products",
          "collections",
          "pages",
          "articles",
          "has_blog",
          "collections_at_least",
          "import_limit"
        ]
      },
      "ShopifyimportStatus": {
        "type": "object",
        "properties": {
          "counts": {
            "$ref": "#/components/schemas/ShopifyimportCounts"
          },
          "error_message": {
            "type": "string"
          },
          "errors": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ShopifyimportItemError"
            }
          },
          "finished_at": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "mode": {
            "type": "string"
          },
          "phase": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "started_at": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "source",
          "mode",
          "status",
          "phase",
          "counts",
          "errors",
          "error_message",
          "started_at",
          "finished_at"
        ]
      },
      "StoreMemberView": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "user_id": {
            "type": "integer"
          }
        },
        "required": [
          "user_id",
          "email",
          "name",
          "role",
          "status"
        ]
      },
      "StoreProfileView": {
        "type": "object",
        "properties": {
          "address": {},
          "contact_email": {
            "type": "string"
          },
          "contact_phone": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "locale": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "order_number_prefix": {
            "type": "string"
          },
          "order_number_suffix": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "weight_unit": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "handle",
          "name",
          "currency",
          "locale",
          "timezone",
          "status",
          "contact_email",
          "contact_phone",
          "address",
          "weight_unit",
          "order_number_prefix",
          "order_number_suffix"
        ]
      },
      "StoreSettingRefView": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          }
        },
        "required": [
          "namespace",
          "key"
        ]
      },
      "StoreSettingView": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "value": {}
        },
        "required": [
          "namespace",
          "key",
          "value"
        ]
      },
      "StoreeventsFunnel": {
        "type": "object",
        "properties": {
          "added_to_cart": {
            "type": "integer"
          },
          "purchased": {
            "type": "integer"
          },
          "reached_checkout": {
            "type": "integer"
          },
          "sessions": {
            "type": "integer"
          },
          "viewed_product": {
            "type": "integer"
          }
        },
        "required": [
          "sessions",
          "viewed_product",
          "added_to_cart",
          "reached_checkout",
          "purchased"
        ]
      },
      "StoremailConfig": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "encryption": {
            "type": "string"
          },
          "from_email": {
            "type": "string"
          },
          "from_name": {
            "type": "string"
          },
          "has_password": {
            "type": "boolean"
          },
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer"
          },
          "reply_to": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "host",
          "port",
          "encryption",
          "username",
          "has_password",
          "from_email",
          "from_name",
          "reply_to"
        ]
      },
      "TaxRateView": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "province": {
            "type": "string"
          },
          "rate_bps": {
            "type": "integer"
          },
          "region_warning": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "country",
          "province",
          "name",
          "rate_bps",
          "position"
        ]
      },
      "ThemeDetailView": {
        "type": "object",
        "properties": {
          "base_key": {
            "type": "string"
          },
          "draft_settings": {},
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "source_template_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_theme_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "base_key",
          "draft_settings"
        ]
      },
      "ThemeDraftView": {
        "type": "object",
        "properties": {
          "base_key": {
            "type": "string"
          },
          "draft_settings": {},
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "base_key",
          "draft_settings"
        ]
      },
      "ThemeListView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "latest_theme_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "live": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "source_template_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_theme_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "update_available": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "live",
          "updated_at"
        ]
      },
      "ThemeVersionView": {
        "type": "object",
        "properties": {
          "publication_id": {
            "type": "integer"
          },
          "published_at": {
            "type": "string",
            "format": "date-time"
          },
          "version": {
            "type": "integer"
          }
        },
        "required": [
          "version",
          "publication_id",
          "published_at"
        ]
      },
      "TippingConfig": {
        "type": "object",
        "properties": {
          "allow_custom": {
            "type": "boolean"
          },
          "default_preset": {
            "type": "integer"
          },
          "description": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "label": {
            "type": "string"
          },
          "max_percent": {
            "type": "integer"
          },
          "mode": {
            "type": "string"
          },
          "presets": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            }
          }
        },
        "required": [
          "enabled",
          "presets",
          "allow_custom"
        ]
      },
      "TrackingAxonCAPIView": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "has_token": {
            "type": "boolean"
          },
          "pixel_id": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "pixel_id",
          "has_token"
        ]
      },
      "TrackingAxonConfig": {
        "type": "object",
        "properties": {
          "category_id": {
            "type": "integer"
          },
          "event_keys": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "event_keys"
        ]
      },
      "TrackingCAPIView": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "has_token": {
            "type": "boolean"
          },
          "pixel_id": {
            "type": "string"
          },
          "test_event_code": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "pixel_id",
          "test_event_code",
          "has_token"
        ]
      },
      "TrackingConfig": {
        "type": "object",
        "properties": {
          "axon": {
            "$ref": "#/components/schemas/TrackingAxonConfig"
          },
          "google": {
            "$ref": "#/components/schemas/TrackingGoogleConfig"
          },
          "meta": {
            "$ref": "#/components/schemas/TrackingMetaConfig"
          },
          "options": {
            "$ref": "#/components/schemas/TrackingOptions"
          },
          "pinterest": {
            "$ref": "#/components/schemas/TrackingPinterestConfig"
          },
          "tiktok": {
            "$ref": "#/components/schemas/TrackingTikTokConfig"
          }
        },
        "required": [
          "meta",
          "google",
          "tiktok",
          "pinterest",
          "axon",
          "options"
        ]
      },
      "TrackingGoogleConfig": {
        "type": "object",
        "properties": {
          "ads_labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "tag_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "tag_ids",
          "ads_labels"
        ]
      },
      "TrackingMetaConfig": {
        "type": "object",
        "properties": {
          "pixel_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "test_event_code": {
            "type": "string"
          }
        },
        "required": [
          "pixel_ids",
          "test_event_code"
        ]
      },
      "TrackingOptions": {
        "type": "object",
        "properties": {
          "content_id": {
            "type": "string"
          },
          "debug": {
            "type": "boolean"
          }
        },
        "required": [
          "debug",
          "content_id"
        ]
      },
      "TrackingPinterestConfig": {
        "type": "object",
        "properties": {
          "tag_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "tag_ids"
        ]
      },
      "TrackingTikTokConfig": {
        "type": "object",
        "properties": {
          "pixel_ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "pixel_ids"
        ]
      },
      "WalletDomainView": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string"
          },
          "registered": {
            "type": "boolean"
          },
          "registered_at": {
            "type": "string"
          }
        },
        "required": [
          "host",
          "registered",
          "registered_at"
        ]
      },
      "WalletRegistrationView": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "host": {
            "type": "string"
          },
          "registered": {
            "type": "boolean"
          }
        },
        "required": [
          "host",
          "registered"
        ]
      },
      "WebhookDeliveryView": {
        "type": "object",
        "properties": {
          "attempts": {
            "type": "integer"
          },
          "id": {
            "type": "integer"
          },
          "last_error": {
            "type": "string"
          },
          "last_status_code": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "topic": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "topic",
          "status",
          "attempts",
          "last_status_code",
          "last_error"
        ]
      },
      "WebhookSubscriptionView": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean"
          },
          "id": {
            "type": "integer"
          },
          "secret": {
            "type": [
              "string",
              "null"
            ]
          },
          "topics": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "url",
          "topics",
          "active"
        ]
      }
    },
    "responses": {
      "E400": {
        "description": "The request could not be read, or a value was not valid. `message` says which.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E401": {
        "description": "No API key, or a key that is unknown, revoked or expired.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E402": {
        "description": "Payment required — the store's plan does not include this, or a paid theme has not been granted.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E403": {
        "description": "The key lacks the scope or role this operation needs, or the operation is refused to every API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E404": {
        "description": "No such record in this store.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E409": {
        "description": "The request conflicts with the current state — a handle already taken, for example.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E413": {
        "description": "The upload is larger than this deployment allows.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E415": {
        "description": "That file type is not accepted here.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E422": {
        "description": "The request was understood but could not be carried out with the values given.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E429": {
        "description": "Rate limited. `Retry-After` says how long to wait.",
        "headers": {
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E500": {
        "description": "Something failed on the server. The response carries no detail by design.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E501": {
        "description": "Not implemented for the provider or configuration this store uses.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E502": {
        "description": "An upstream provider failed or answered unusably.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "E503": {
        "description": "A dependency this endpoint needs is not configured or is unavailable — object storage, for example.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    },
    "headers": {
      "RateLimitLimit": {
        "description": "Requests allowed per minute for this key.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitRemaining": {
        "description": "Requests left in the current minute.",
        "schema": {
          "type": "integer"
        }
      },
      "RetryAfter": {
        "description": "Seconds to wait before retrying.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "A store API key, created under Settings → API keys. Sent as `Authorization: Bearer dk_sk_…`. The key identifies the store, so no store header is sent."
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}
