{
  "openapi": "3.0.3",
  "info": {
    "title": "Rocento Storefront and Customer API",
    "version": "0.8.0",
    "description": "Preview reference for selected implemented storefront and customer application endpoints. This is not a released, stable public integration API or a promise of third-party access. No public merchant API-key or machine-to-machine credential flow is offered here. Confirm access and compatibility with Rocento before integrating. Use the HTTPS origin of your provisioned storefront; rocento.com hosts documentation. Admin, internal assistant, agent and operational routes are intentionally outside this reference. The reference does not execute requests or collect credentials."
  },
  "servers": [
    {
      "url": "https://{storefrontHost}/api",
      "description": "Your provisioned storefront origin; this placeholder is not a live API server.",
      "variables": {
        "storefrontHost": {
          "default": "storefront.example.com",
          "description": "Hostname supplied for your storefront deployment. Confirm access with Rocento."
        }
      }
    }
  ],
  "tags": [
    {
      "name": "Storefront notifications"
    },
    {
      "name": "Catalog"
    },
    {
      "name": "Customer authentication"
    },
    {
      "name": "Customer account"
    },
    {
      "name": "Wishlist and reviews"
    },
    {
      "name": "Cart"
    },
    {
      "name": "Checkout and orders"
    },
    {
      "name": "Fulfillment"
    },
    {
      "name": "Customer support"
    },
    {
      "name": "Store context"
    },
    {
      "name": "Storefront presentation"
    },
    {
      "name": "Storefront observations"
    }
  ],
  "paths": {
    "/v1/notifications": {
      "get": {
        "operationId": "get_v1_notifications",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorefrontNotificationPage"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter, cursor, body or future read cutoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid customer credential or missing guest inbox session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Request marker or browser origin rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Notification is not currently visible to this recipient.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Inbox rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "tags": [
          "Storefront notifications"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "inboxGuest": []
          },
          {}
        ],
        "description": "Read active, unexpired, non-withdrawn messages for the server-resolved recipient. Initializes a server-minted HttpOnly inbox_guest cookie for anonymous visitors. Guest announcements contain no customer journey content. Read state is per recipient; signing in never merges guest history. No-store response. A supplied invalid bearer fails authentication; it never falls back to a guest. Customer ownership is derived from the session, never request data.\n\nThe server resolves the recipient from a valid customer bearer or a server-issued HttpOnly inbox_guest cookie. Invalid supplied bearer credentials fail; they never fall back to a guest. GET /v1/notifications initializes the guest cookie. Read mutations require an existing session. Guest history stays in that browser and does not merge on sign-in. Responses are private and no-store.",
        "parameters": [
          {
            "in": "query",
            "name": "filter",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "unread"
              ],
              "default": "all"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer",
              "format": "int64",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "in": "query",
            "name": "before",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Use together with before_id from next_cursor."
          },
          {
            "in": "query",
            "name": "before_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Use together with before from next_cursor."
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "description": "Selected delivery latitude; supply both coordinates for area-targeted announcements."
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "description": "Selected delivery longitude; supply both coordinates."
          }
        ],
        "summary": "Read the native inbox"
      }
    },
    "/v1/notifications/{id}/read": {
      "put": {
        "operationId": "put_v1_notifications_id_read",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorefrontNotificationReadResult"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter, cursor, body or future read cutoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid customer credential or missing guest inbox session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Request marker or browser origin rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Notification is not currently visible to this recipient.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Inbox rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StorefrontNotificationReadInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "description": "Selected delivery latitude; supply both coordinates for area-targeted announcements."
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "description": "Selected delivery longitude; supply both coordinates."
          }
        ],
        "tags": [
          "Storefront notifications"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "inboxGuest": []
          }
        ],
        "description": "Mark one currently visible notification read or unread for this recipient. Inaccessible, expired and withdrawn identifiers return 404. Requires an existing guest inbox cookie or valid customer bearer. A supplied invalid bearer fails authentication; it never falls back to a guest. Customer ownership is derived from the session, never request data.\n\nThe server resolves the recipient from a valid customer bearer or a server-issued HttpOnly inbox_guest cookie. Invalid supplied bearer credentials fail; they never fall back to a guest. GET /v1/notifications initializes the guest cookie. Read mutations require an existing session. Guest history stays in that browser and does not merge on sign-in. Responses are private and no-store.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.",
        "summary": "Set a notification's read state"
      }
    },
    "/v1/notifications/product-view": {
      "post": {
        "operationId": "post_v1_notifications_product-view",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationProductViewResult"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter, cursor, body or future read cutoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid customer credential or missing guest inbox session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Request marker or browser origin rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Notification is not currently visible to this recipient.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Inbox rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "202": {
            "description": "Durably queued in the isolated engagement database. Worker matching is asynchronous; refresh the inbox for delivered offers.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationProductViewResult"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationProductViewInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "description": "Selected delivery latitude; supply both coordinates for area-targeted announcements."
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "description": "Selected delivery longitude; supply both coordinates."
          }
        ],
        "tags": [
          "Storefront notifications"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "inboxGuest": []
          }
        ],
        "description": "Report an active product ID or slug after rendering its page. Requires an established guest inbox cookie (GET the inbox first) or valid customer session. In isolated deployments returns 202 after durable enqueue; the separate worker grants matching campaigns once per recipient; duplicate and concurrent visits are idempotent. Enforces audience, delivery area, start, expiry and withdrawal. Returns only newly delivered publication IDs. No coupon or customer identifiers can be provided by the caller. A supplied invalid bearer fails authentication; it never falls back to a guest. Customer ownership is derived from the session, never request data.\n\nThe server resolves the recipient from a valid customer bearer or a server-issued HttpOnly inbox_guest cookie. Invalid supplied bearer credentials fail; they never fall back to a guest. GET /v1/notifications initializes the guest cookie. Read mutations require an existing session. Guest history stays in that browser and does not merge on sign-in. Responses are private and no-store.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.",
        "summary": "Deliver product visitor offers"
      }
    },
    "/v1/notifications/read-all": {
      "post": {
        "operationId": "post_v1_notifications_read-all",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorefrontNotificationReadAllResult"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter, cursor, body or future read cutoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid customer credential or missing guest inbox session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Request marker or browser origin rejected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Notification is not currently visible to this recipient.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Inbox rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StorefrontNotificationReadAllInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "description": "Selected delivery latitude; supply both coordinates for area-targeted announcements."
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "description": "Selected delivery longitude; supply both coordinates."
          }
        ],
        "tags": [
          "Storefront notifications"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "inboxGuest": []
          }
        ],
        "description": "Mark currently visible notifications read through a prior server snapshot. Messages published after through remain unread. Requires an existing guest inbox cookie or valid customer bearer. A supplied invalid bearer fails authentication; it never falls back to a guest. Customer ownership is derived from the session, never request data.\n\nThe server resolves the recipient from a valid customer bearer or a server-issued HttpOnly inbox_guest cookie. Invalid supplied bearer credentials fail; they never fall back to a guest. GET /v1/notifications initializes the guest cookie. Read mutations require an existing session. Guest history stays in that browser and does not merge on sign-in. Responses are private and no-store.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.",
        "summary": "Mark the inbox snapshot read"
      }
    },
    "/v1/catalog/categories": {
      "get": {
        "operationId": "get_v1_catalog_categories",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Category"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "X-Storefront-Locale",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "description": "Configured locale returned by GET /v1/languages (for example en or ar). Only reviewed translations whose source is current are applied. Omitted, unknown or unavailable translations fall back to source text; prices and identifiers do not change."
          }
        ],
        "summary": "List categories",
        "tags": [
          "Catalog"
        ],
        "security": []
      }
    },
    "/v1/catalog/category-availability": {
      "get": {
        "operationId": "get_v1_catalog_category-availability",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryAvailability"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Read category availability",
        "tags": [
          "Catalog"
        ],
        "security": []
      }
    },
    "/v1/catalog/products/{id}": {
      "get": {
        "operationId": "get_v1_catalog_products_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Supplied customer bearer token is invalid or expired. Omit credentials for an anonymous catalog read.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "X-Storefront-Locale",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "description": "Configured locale returned by GET /v1/languages (for example en or ar). Only reviewed translations whose source is current are applied. Omitted, unknown or unavailable translations fall back to source text; prices and identifiers do not change."
          }
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Anonymous requests receive public offers. A valid customer bearer token enables eligible customer-specific offers; a supplied invalid or expired token returns 401 rather than silently falling back to anonymous pricing.\n\nAnonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context.",
        "summary": "Read a product",
        "tags": [
          "Catalog"
        ]
      }
    },
    "/v1/catalog/products/{id}/family": {
      "get": {
        "operationId": "get_v1_catalog_products_id_family",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductFamily"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Supplied customer bearer token is invalid or expired. Omit credentials for an anonymous catalog read.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "X-Storefront-Locale",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "description": "Configured locale returned by GET /v1/languages (for example en or ar). Only reviewed translations whose source is current are applied. Omitted, unknown or unavailable translations fall back to source text; prices and identifiers do not change."
          }
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Anonymous requests receive public offers. A valid customer bearer token enables eligible customer-specific offers; a supplied invalid or expired token returns 401 rather than silently falling back to anonymous pricing.\n\nAnonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context.",
        "summary": "Read a product family",
        "tags": [
          "Catalog"
        ]
      }
    },
    "/v1/catalog/relationships": {
      "get": {
        "operationId": "get_v1_catalog_relationships",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Product"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Evaluate published catalog relationships. Returns up to 20 available products with current shopper pricing and localization; Cache-Control: no-store. Source IDs are excluded, manual selections precede automatic matches. Segment membership is derived from authentication. Catalog price predicates use the published base price before customer promotions. End times are exclusive. Deterministic ordering within rules.",
        "parameters": [
          {
            "in": "query",
            "name": "sources",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated UUIDs, 1–50; pass every cart product for cross-sells."
          },
          {
            "in": "query",
            "name": "kind",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "related",
                "upsell",
                "cross_sell"
              ]
            }
          },
          {
            "in": "header",
            "name": "X-Storefront-Locale",
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Resolve product relationships",
        "tags": [
          "Catalog"
        ]
      }
    },
    "/v1/catalog/bestsellers": {
      "get": {
        "operationId": "get_v1_catalog_bestsellers",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BestsellerResults"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Supplied customer bearer token is invalid or expired. Omit credentials for an anonymous catalog read.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "period",
            "schema": {
              "$ref": "#/components/schemas/BestsellerPeriod"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 24,
              "default": 8
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "X-Storefront-Locale",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "description": "Configured locale returned by GET /v1/languages (for example en or ar). Only reviewed translations whose source is current are applied. Omitted, unknown or unavailable translations fall back to source text; prices and identifiers do not change."
          }
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Anonymous requests receive public offers. A valid customer bearer token enables eligible customer-specific offers; a supplied invalid or expired token returns 401 rather than silently falling back to anonymous pricing.\n\nAnonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context.",
        "summary": "List bestselling products",
        "tags": [
          "Catalog"
        ]
      }
    },
    "/v1/catalog/media/{id}/content": {
      "get": {
        "operationId": "get_v1_catalog_media_id_content",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "image/webp": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "width",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 12000
            },
            "description": "An advertised, existing WebP rendition width, including compressed original resolution. Unprepared widths return 404; omitted returns the original. Private files require catalog.read."
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Read a product image",
        "tags": [
          "Catalog"
        ],
        "security": []
      }
    },
    "/v1/catalog/schema": {
      "get": {
        "operationId": "get_v1_catalog_schema",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogSchema"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "Read the shopper catalog schema",
        "tags": [
          "Catalog"
        ],
        "security": []
      }
    },
    "/v1/catalog/attribute-definitions": {
      "get": {
        "operationId": "get_v1_catalog_attribute-definitions",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AttributeDefinition"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Configured language for reviewed labels; missing translations use source labels."
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "List storefront product attributes",
        "tags": [
          "Catalog"
        ],
        "security": [],
        "description": "Returns active product attributes visible on the storefront or used for product configuration. Locale, when supplied, selects reviewed translations."
      }
    },
    "/v1/inventory/{id}": {
      "get": {
        "operationId": "get_v1_inventory_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Stock"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Read product availability",
        "tags": [
          "Catalog"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Anonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context.\n\nReturns availability for an active product and the current delivery context. Availability is a snapshot, not a reservation; cart and checkout revalidate stock."
      }
    },
    "/v1/search": {
      "get": {
        "operationId": "get_v1_search",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResults"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Supplied customer bearer token is invalid or expired. Omit credentials for an anonymous catalog read.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "category_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "category_ids",
            "schema": {
              "type": "string",
              "maxLength": 1850,
              "description": "Comma-separated category UUIDs, at most 50. Matches any selected category; combines with other filters."
            }
          },
          {
            "in": "query",
            "name": "min_price",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "max_price",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "in_stock",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9999
            }
          },
          {
            "in": "query",
            "name": "attribute_filters",
            "schema": {
              "type": "string"
            },
            "description": "JSON object of enabled attribute codes and exact scalar values or arrays of up to 50 alternatives (OR within an attribute, AND across attributes)"
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "sort_by",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort_order",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "X-Storefront-Locale",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "description": "Configured locale returned by GET /v1/languages (for example en or ar). Only reviewed translations whose source is current are applied. Omitted, unknown or unavailable translations fall back to source text; prices and identifiers do not change."
          }
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Anonymous requests receive public offers. A valid customer bearer token enables eligible customer-specific offers; a supplied invalid or expired token returns 401 rather than silently falling back to anonymous pricing.\n\nAnonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context.",
        "summary": "Search products",
        "tags": [
          "Catalog"
        ]
      }
    },
    "/v1/customer/auth/register": {
      "post": {
        "operationId": "post_v1_customer_auth_register",
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent. Password hashing capacity is temporarily exhausted; retry after the indicated delay.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Credentials"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "summary": "Register a customer",
        "tags": [
          "Customer authentication"
        ],
        "security": [],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/customer/auth/login": {
      "post": {
        "operationId": "post_v1_customer_auth_login",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Auth"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent. Password hashing capacity is temporarily exhausted; retry after the indicated delay.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Credentials"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "summary": "Sign in a customer",
        "tags": [
          "Customer authentication"
        ],
        "security": [],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nReturns a customer access token and sets an HttpOnly customer_refresh cookie. This is storefront customer sign-in, not a merchant API key or machine-to-machine credential flow."
      }
    },
    "/v1/customer/auth/refresh": {
      "post": {
        "operationId": "post_v1_customer_auth_refresh",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Auth"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "204": {
            "description": "No customer refresh cookie is present; the visitor is signed out. No credentials are issued."
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerRefresh": []
          },
          {}
        ],
        "summary": "Refresh a customer session",
        "tags": [
          "Customer authentication"
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nUses the HttpOnly customer_refresh cookie and rotates it on success. Without a cookie, returns 204 with no response body and no credentials."
      }
    },
    "/v1/customer/auth/logout": {
      "post": {
        "operationId": "post_v1_customer_auth_logout",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerRefresh": []
          },
          {
            "customerBearer": []
          },
          {}
        ],
        "summary": "Sign out a customer",
        "tags": [
          "Customer authentication"
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRevokes the supplied customer refresh session and/or bearer token, then clears the refresh cookie. Signed-out requests are accepted."
      }
    },
    "/v1/customer/auth/request-verification": {
      "post": {
        "operationId": "post_v1_customer_auth_request-verification",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChallengeRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "summary": "Request a verification challenge",
        "tags": [
          "Customer authentication"
        ],
        "security": [],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/customer/auth/verify": {
      "post": {
        "operationId": "post_v1_customer_auth_verify",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Verify"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "summary": "Verify a customer account",
        "tags": [
          "Customer authentication"
        ],
        "security": [],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/customer/auth/forgot-password": {
      "post": {
        "operationId": "post_v1_customer_auth_forgot-password",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChallengeRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "summary": "Request a password reset",
        "tags": [
          "Customer authentication"
        ],
        "security": [],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/customer/auth/reset-password": {
      "post": {
        "operationId": "post_v1_customer_auth_reset-password",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent. Password hashing capacity is temporarily exhausted; retry after the indicated delay.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Reset"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "summary": "Reset a password",
        "tags": [
          "Customer authentication"
        ],
        "security": [],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/customer/me": {
      "get": {
        "operationId": "get_v1_customer_me",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Read the signed-in customer",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      }
    },
    "/v1/customer/checkout-eligibility": {
      "get": {
        "operationId": "get_v1_customer_checkout-eligibility",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Check verified checkout eligibility",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires a verified customer account in addition to a valid bearer token."
      }
    },
    "/v1/customer/locations": {
      "get": {
        "operationId": "get_v1_customer_locations",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Location"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "List saved delivery locations",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      },
      "post": {
        "operationId": "post_v1_customer_locations",
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Location"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Create a delivery location",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/customer/locations/{id}": {
      "put": {
        "operationId": "put_v1_customer_locations_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Location"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Update a delivery location",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      },
      "delete": {
        "operationId": "delete_v1_customer_locations_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Delete a delivery location",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/customer/profile": {
      "get": {
        "operationId": "get_v1_customer_profile",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerProfile"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Read the customer profile",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      },
      "put": {
        "operationId": "put_v1_customer_profile",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerProfile"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "400": {
            "description": "Name exceeds 120 UTF-8 bytes, gender is unsupported, or date of birth falls outside 1900-01-01 through today in UTC.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProfileInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Update the customer profile",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/customer/attribute-definitions": {
      "get": {
        "operationId": "get_v1_customer_attribute-definitions",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AttributeDefinition"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Configured language for reviewed labels; missing translations use source labels."
          }
        ],
        "summary": "List customer profile attributes",
        "tags": [
          "Customer account"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      }
    },
    "/v1/customer/wishlist": {
      "get": {
        "operationId": "get_v1_customer_wishlist",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdList"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "List wishlist product IDs",
        "tags": [
          "Wishlist and reviews"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      }
    },
    "/v1/customer/wishlist/{id}": {
      "put": {
        "operationId": "put_v1_customer_wishlist_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Add a product to the wishlist",
        "tags": [
          "Wishlist and reviews"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      },
      "delete": {
        "operationId": "delete_v1_customer_wishlist_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Remove a product from the wishlist",
        "tags": [
          "Wishlist and reviews"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential."
      }
    },
    "/v1/products/{id}/reviews": {
      "get": {
        "operationId": "get_v1_products_id_reviews",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PublicReview"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "summary": "List published product reviews",
        "tags": [
          "Wishlist and reviews"
        ],
        "security": []
      }
    },
    "/v1/customer/products/{id}/review": {
      "get": {
        "operationId": "get_v1_customer_products_id_review",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OwnReview"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Read the customer's review",
        "tags": [
          "Wishlist and reviews"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      },
      "put": {
        "operationId": "put_v1_customer_products_id_review",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Review"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "400": {
            "description": "Rating must be 1–5; name/title/body must contain non-whitespace text and fit their UTF-8 byte limits. The product must remain available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Submit a product review",
        "tags": [
          "Wishlist and reviews"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token."
      }
    },
    "/v1/cart": {
      "post": {
        "operationId": "post_v1_cart",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cart"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Open or resume a cart",
        "tags": [
          "Cart"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "guestCart": []
          },
          {}
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSigned-in carts use a customer bearer token; guest carts use the HttpOnly guest_cart cookie. If Authorization is supplied, it must be valid. Never send a customer or cart owner ID to select another cart.\n\nA visitor without credentials can open a new guest cart. The response sets the guest_cart cookie; retain it for subsequent cart requests."
      }
    },
    "/v1/cart/coupon": {
      "put": {
        "operationId": "put_v1_cart_coupon",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cart"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CouponInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Apply or remove a coupon",
        "tags": [
          "Cart"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "guestCart": []
          }
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSigned-in carts use a customer bearer token; guest carts use the HttpOnly guest_cart cookie. If Authorization is supplied, it must be valid. Never send a customer or cart owner ID to select another cart."
      }
    },
    "/v1/cart/items": {
      "post": {
        "operationId": "post_v1_cart_items",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cart"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CartAdd"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Add a product to the cart",
        "tags": [
          "Cart"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "guestCart": []
          }
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSigned-in carts use a customer bearer token; guest carts use the HttpOnly guest_cart cookie. If Authorization is supplied, it must be valid. Never send a customer or cart owner ID to select another cart."
      }
    },
    "/v1/cart/items/{id}": {
      "put": {
        "operationId": "put_v1_cart_items_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cart"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CartQuantity"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Set a cart product quantity",
        "tags": [
          "Cart"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "guestCart": []
          }
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSigned-in carts use a customer bearer token; guest carts use the HttpOnly guest_cart cookie. If Authorization is supplied, it must be valid. Never send a customer or cart owner ID to select another cart.\n\nThe id path parameter is the product UUID."
      },
      "delete": {
        "operationId": "delete_v1_cart_items_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cart"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Remove a cart product",
        "tags": [
          "Cart"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "guestCart": []
          }
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSigned-in carts use a customer bearer token; guest carts use the HttpOnly guest_cart cookie. If Authorization is supplied, it must be valid. Never send a customer or cart owner ID to select another cart.\n\nThe id path parameter is the product UUID."
      }
    },
    "/v1/cart/items/{id}/measure": {
      "put": {
        "operationId": "put_v1_cart_items_id_measure",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cart"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketMeasure"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "summary": "Set an exact measured quantity",
        "tags": [
          "Cart"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "guestCart": []
          }
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSigned-in carts use a customer bearer token; guest carts use the HttpOnly guest_cart cookie. If Authorization is supplied, it must be valid. Never send a customer or cart owner ID to select another cart.\n\nThe id path parameter is the product UUID.\n\nSend quantity as a decimal string in the product's sellable unit. Follow its selling rule; binary floating-point values must not be used for exact quantities."
      }
    },
    "/v1/cart/bundles/{id}": {
      "post": {
        "operationId": "post_v1_cart_bundles_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cart"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BundleSelection"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Add selected bundle products",
        "tags": [
          "Cart"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "guestCart": []
          }
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSigned-in carts use a customer bearer token; guest carts use the HttpOnly guest_cart cookie. If Authorization is supplied, it must be valid. Never send a customer or cart owner ID to select another cart.\n\nThe id path parameter is the product UUID."
      }
    },
    "/v1/customer/checkout/quote": {
      "post": {
        "operationId": "post_v1_customer_checkout_quote",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutQuote"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Create a checkout quote",
        "tags": [
          "Checkout and orders"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token.\n\nUses current cart, pricing, inventory and fulfillment facts. Store configuration may require a saved delivery location or a fulfillment selection before quoting."
      }
    },
    "/v1/customer/checkout/place": {
      "post": {
        "operationId": "post_v1_customer_checkout_place",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDetail"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlaceInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Place an order from a quote",
        "tags": [
          "Checkout and orders"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token.\n\nUse the quote UUID and a client-generated idempotency_key UUID. Retain the same key when retrying the same placement. The server revalidates quote expiry and current checkout facts."
      }
    },
    "/v1/customer/orders": {
      "get": {
        "operationId": "get_v1_customer_orders",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Order"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "summary": "List the customer's orders",
        "tags": [
          "Checkout and orders"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      }
    },
    "/v1/customer/orders/{id}": {
      "get": {
        "operationId": "get_v1_customer_orders_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDetail"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Read the customer's order",
        "tags": [
          "Checkout and orders"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      }
    },
    "/v1/customer/orders/{id}/extensions": {
      "get": {
        "operationId": "get_v1_customer_orders_id_extensions",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderExtensions"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Read customer order extensions",
        "tags": [
          "Checkout and orders"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data."
      }
    },
    "/v1/fulfillment/capabilities": {
      "get": {
        "operationId": "get_v1_fulfillment_capabilities",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FulfillmentCapabilities"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "Read available fulfillment capabilities",
        "tags": [
          "Fulfillment"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Anonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context.\n\nResolves the customer's selected fulfillment store when signed in, otherwise the installation's default store. Returned flags describe enabled behavior; they do not grant permissions."
      }
    },
    "/v1/fulfillment/stores": {
      "get": {
        "operationId": "get_v1_fulfillment_stores",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FulfillmentStores"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "List enabled fulfillment stores",
        "tags": [
          "Fulfillment"
        ],
        "security": []
      }
    },
    "/v1/fulfillment/store": {
      "post": {
        "operationId": "post_v1_fulfillment_store",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FulfillmentStoreChoice"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Select a fulfillment store",
        "tags": [
          "Fulfillment"
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token. The server resolves that customer's cart and checks ownership of delivery locations, plans and reservations.\n\nChanging the store releases held plans, delivery capacity and inventory reservations for the customer's cart. Recalculate fulfillment options before checkout."
      }
    },
    "/v1/fulfillment/availability": {
      "get": {
        "operationId": "get_v1_fulfillment_availability",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FulfillmentAvailability"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Read the cart's fulfillment methods",
        "tags": [
          "Fulfillment"
        ],
        "description": "Requires a verified customer account in addition to a valid bearer token. The server resolves that customer's cart and checks ownership of delivery locations, plans and reservations."
      }
    },
    "/v1/fulfillment/plan-options": {
      "post": {
        "operationId": "post_v1_fulfillment_plan-options",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FulfillmentOptions"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FulfillmentRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Calculate fulfillment plan options",
        "tags": [
          "Fulfillment"
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token. The server resolves that customer's cart and checks ownership of delivery locations, plans and reservations."
      }
    },
    "/v1/fulfillment/plans": {
      "post": {
        "operationId": "post_v1_fulfillment_plans",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FulfillmentPlan"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FulfillmentSelection"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Reserve a fulfillment plan",
        "tags": [
          "Fulfillment"
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token. The server resolves that customer's cart and checks ownership of delivery locations, plans and reservations.\n\nUse a client-generated idempotency_key UUID and retain it when retrying the same selection. A hold expires and is not an order. A 409 response means availability changed; recalculate options before selecting again."
      }
    },
    "/v1/fulfillment/plans/{id}": {
      "delete": {
        "operationId": "delete_v1_fulfillment_plans_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Release a fulfillment plan",
        "tags": [
          "Fulfillment"
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token. The server resolves that customer's cart and checks ownership of delivery locations, plans and reservations."
      }
    },
    "/v1/fulfillment/delivery-options": {
      "get": {
        "operationId": "get_v1_fulfillment_delivery-options",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryOptions"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "parameters": [
          {
            "name": "location_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "summary": "List delivery time windows",
        "tags": [
          "Fulfillment"
        ],
        "description": "Requires a verified customer account in addition to a valid bearer token. The server resolves that customer's cart and checks ownership of delivery locations, plans and reservations."
      }
    },
    "/v1/fulfillment/reservations": {
      "post": {
        "operationId": "post_v1_fulfillment_reservations",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CapacityHold"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CapacitySelection"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Reserve a delivery time window",
        "tags": [
          "Fulfillment"
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token. The server resolves that customer's cart and checks ownership of delivery locations, plans and reservations.\n\nUse a client-generated idempotency_key UUID and retain it when retrying the same selection. A hold expires and is not an order. A 409 response means availability changed; recalculate options before selecting again."
      }
    },
    "/v1/fulfillment/reservations/{id}": {
      "delete": {
        "operationId": "delete_v1_fulfillment_reservations_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Release a delivery time window",
        "tags": [
          "Fulfillment"
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires a verified customer account in addition to a valid bearer token. The server resolves that customer's cart and checks ownership of delivery locations, plans and reservations."
      }
    },
    "/v1/support/session": {
      "post": {
        "operationId": "post_v1_support_session",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "summary": "Initialize a guest support session",
        "tags": [
          "Customer support"
        ],
        "security": [],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSupport must be enabled for the installation. Ticket and message identifiers never bypass the installation and owner checks.\n\nSets or renews an HttpOnly support_guest cookie. Retain it before a guest creates a support ticket; its value is not returned in the JSON body."
      }
    },
    "/v1/support/tickets": {
      "post": {
        "operationId": "post_v1_support_tickets",
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssistantTicketDetail"
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "May issue support_guest when an anonymous admitted request lacks a valid visitor cookie: HttpOnly, SameSite=Strict, Path=/, Max-Age=86400; Secure in secure-cookie deployments. Preserve other cookies returned by the endpoint."
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "The support subject, source or installation allowance is exhausted. Retry after 900 seconds; admission does not invoke the handler.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    900
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssistantTicketInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "support_guest",
            "in": "cookie",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9]{48}$"
            },
            "description": "Opaque server-issued visitor cookie used for admission when no decodable customer bearer token is supplied. It is not a customer authentication credential."
          }
        ],
        "description": "Shared support admission over a 15-minute window: 20 requests per customer or visitor; 100 per direct connection source in peer mode; 2000 per installation by default. The installation total is configurable with PUBLIC_SUPPORT_TOTAL_LIMIT. Ingress mode delegates source throttling to trusted ingress; subject and installation limits remain shared in PostgreSQL across replicas. A customer bearer identity is used when present and decodable; otherwise the opaque support_guest cookie identifies the visitor. This admission identity grants no access: the endpoint still enforces its own authentication and live-session checks. Retain server-issued cookies for this installation; changing cookies does not bypass source or installation limits.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSupport must be enabled for the installation. Ticket and message identifiers never bypass the installation and owner checks.\n\nSigned-in customers use their bearer token. Guests must initialize a support session and provide contact_name plus an email or mobile contact. If Authorization is supplied, it must be valid. Only a signed-in customer can attach an order_id, and the order must belong to that customer. Reuse request_id only with an unchanged ticket request.",
        "summary": "Create a support ticket",
        "tags": [
          "Customer support"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {
            "supportGuest": []
          }
        ]
      }
    },
    "/v1/customer/support/tickets": {
      "get": {
        "operationId": "get_v1_customer_support_tickets",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssistantTicket"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "List the customer's support tickets",
        "tags": [
          "Customer support"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nSupport must be enabled for the installation. Ticket and message identifiers never bypass the installation and owner checks."
      }
    },
    "/v1/customer/support/tickets/{id}": {
      "get": {
        "operationId": "get_v1_customer_support_tickets_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssistantTicketDetail"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Read the customer's support ticket",
        "tags": [
          "Customer support"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nSupport must be enabled for the installation. Ticket and message identifiers never bypass the installation and owner checks."
      }
    },
    "/v1/customer/support/tickets/{id}/messages": {
      "post": {
        "operationId": "post_v1_customer_support_tickets_id_messages",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssistantTicketDetail"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssistantReply"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "customerBearer": []
          }
        ],
        "summary": "Reply to the customer's support ticket",
        "tags": [
          "Customer support"
        ],
        "description": "Uses the signed-in customer's scope. Identifiers never grant access to another customer's data.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nSupport must be enabled for the installation. Ticket and message identifiers never bypass the installation and owner checks.\n\nSend request_id and body. Omit status: changing ticket status is an administrative action and a customer request containing it is rejected. Reuse request_id only with an unchanged reply."
      }
    },
    "/v1/delivery-area": {
      "get": {
        "operationId": "get_v1_delivery-area",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryStatus"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "x-delivery-context",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-delivery-latitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-delivery-longitude",
            "in": "header",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "summary": "Check delivery coverage",
        "tags": [
          "Store context"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Delivery coverage depends on the store's configuration and the supplied delivery context.\n\nAnonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context."
      }
    },
    "/v1/delivery-areas": {
      "get": {
        "operationId": "get_v1_delivery-areas",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeliveryAreaChoice"
                  }
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "List delivery area choices",
        "tags": [
          "Store context"
        ],
        "security": []
      }
    },
    "/v1/markets/current": {
      "get": {
        "operationId": "get_v1_markets_current",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentMarket"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "Read the active storefront market",
        "tags": [
          "Store context"
        ],
        "security": []
      }
    },
    "/v1/languages": {
      "get": {
        "operationId": "get_v1_languages",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicStorefrontLanguages"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "List storefront languages",
        "tags": [
          "Store context"
        ],
        "security": []
      }
    },
    "/v1/languages/interface": {
      "get": {
        "operationId": "get_v1_languages_interface",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceBundle"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "Read published interface messages",
        "tags": [
          "Storefront presentation"
        ],
        "security": [],
        "description": "Contains storefront interface text and only overrides matching the current source text. No administrative edit history or credentials are returned."
      }
    },
    "/v1/market": {
      "get": {
        "operationId": "get_v1_market",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketConfiguration"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "Read currency and selling configuration",
        "tags": [
          "Store context"
        ],
        "security": []
      }
    },
    "/v1/market/products/{id}": {
      "get": {
        "operationId": "get_v1_market_products_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketProduct"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "summary": "Read a product's selling rule",
        "tags": [
          "Store context"
        ],
        "security": []
      }
    },
    "/v1/theme/{channel}": {
      "get": {
        "operationId": "get_v1_theme_channel",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResolvedTheme"
                }
              }
            },
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "304": {
            "description": "Published theme has not changed",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "channel",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 100
            }
          },
          {
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Authorization",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Bearer customer session; segment membership is evaluated server-side."
          },
          {
            "in": "header",
            "name": "X-Delivery-Latitude",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            }
          },
          {
            "in": "header",
            "name": "X-Delivery-Longitude",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            }
          },
          {
            "in": "query",
            "name": "city",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 100
            }
          }
        ],
        "summary": "Resolve a published storefront theme",
        "tags": [
          "Storefront presentation"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Anonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context.\n\nReturns the published theme or default configuration. Customer and delivery context can affect targeting. Respect Cache-Control and ETag; never share personalized responses across customers."
      }
    },
    "/v1/content/{key}": {
      "get": {
        "operationId": "get_v1_content_key",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublishedContent"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Language for published navigation translations; unavailable translations fall back to the source."
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Read published storefront content",
        "tags": [
          "Storefront presentation"
        ],
        "security": [],
        "description": "Returns only published content, or JSON null when the key has no published content. Locale selects reviewed content translations."
      }
    },
    "/v1/discovery/config": {
      "get": {
        "operationId": "get_v1_discovery_config",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoverySettings"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "summary": "Read public discovery settings",
        "tags": [
          "Storefront presentation"
        ],
        "security": []
      }
    },
    "/v1/analytics/events": {
      "post": {
        "operationId": "post_v1_analytics_events",
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "May issue analytics_visitor when an anonymous admitted request lacks a valid visitor cookie: HttpOnly, SameSite=Strict, Path=/, Max-Age=86400; Secure in secure-cookie deployments. Preserve other cookies returned by the endpoint."
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "202": {
            "description": "Durably queued in the isolated engagement database for asynchronous journey and ClickHouse processing. Does not mean ClickHouse ingestion has completed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "queued"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "May issue analytics_visitor when an anonymous admitted request lacks a valid visitor cookie: HttpOnly, SameSite=Strict, Path=/, Max-Age=86400; Secure in secure-cookie deployments. Preserve other cookies returned by the endpoint."
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "The analytics subject, source or installation allowance is exhausted. Retry after 900 seconds; admission does not invoke the handler.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    900
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnalyticsEvent"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "analytics_visitor",
            "in": "cookie",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9]{48}$"
            },
            "description": "Opaque server-issued visitor cookie used for admission when no decodable customer bearer token is supplied. It is not a customer authentication credential."
          }
        ],
        "description": "Anonymous aggregate analytics. With a valid optional customer bearer token, page/search observations are also recorded for that authenticated customer's journey. Customer identifiers and timestamps are never accepted from the payload.\n\nShared analytics admission over a 15-minute window: 1000 requests per customer or visitor; 4000 per direct connection source in peer mode; 100000 per installation by default. The installation total is configurable with PUBLIC_ANALYTICS_TOTAL_LIMIT. Ingress mode delegates source throttling to trusted ingress; subject and installation limits remain shared in PostgreSQL across replicas. A customer bearer identity is used when present and decodable; otherwise the opaque analytics_visitor cookie identifies the visitor. This admission identity grants no access: the endpoint still enforces its own authentication and live-session checks. Retain server-issued cookies for this installation; changing cookies does not bypass source or installation limits.\n\nRequires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nAnonymous requests are supported. When Authorization is supplied, it must contain a valid customer bearer token; omitting it does not select another customer's context.\n\nBrowser observations do not create carts, place orders or prove purchases. Use permitted storefront paths without query strings or fragments. Never send passwords, tokens or sensitive personal data in path or query values.",
        "summary": "Record a browser observation",
        "tags": [
          "Storefront observations"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ]
      }
    },
    "/v1/discovery/attribution": {
      "post": {
        "operationId": "post_v1_discovery_attribution",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoveryAttributionAccepted"
                }
              }
            }
          },
          "default": {
            "description": "Request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Application admission is saturated or the pre-response handler deadline elapsed. Database admission or lock/statement budgets may also be exhausted. The gateway returns Retry-After: 3 for these overload responses. A timeout does not prove a mutation was rolled back; retain the operation's idempotency key and reconcile its receipt/state before retrying. Streaming responses have endpoint-specific limits after their headers are sent.",
            "headers": {
              "Retry-After": {
                "description": "Retry delay in seconds.",
                "schema": {
                  "type": "integer",
                  "enum": [
                    3
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DiscoveryAttributionInput"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Commerce-Request",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "Origin",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The exact approved storefront HTTPS origin, without a trailing slash."
          }
        ],
        "summary": "Record discovery attribution",
        "tags": [
          "Storefront observations"
        ],
        "security": [
          {
            "customerBearer": []
          },
          {}
        ],
        "description": "Requires X-Commerce-Request: 1. Browser Origin, when supplied, must be allowed by the storefront deployment. This marker is not an authentication credential.\n\nRequires Origin to exactly match the installation's approved storefront origin. Anonymous observations are supported, but attaching order_id requires a verified customer token and ownership of that order. Referrer and campaign evidence are observations, not trusted identity; do not send credentials or sensitive personal data."
      }
    }
  },
  "components": {
    "schemas": {
      "AnalyticsEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "session_id": {
            "type": "string",
            "format": "uuid"
          },
          "event_type": {
            "type": "string",
            "enum": [
              "page_view",
              "search_query",
              "cart_added",
              "checkout_started",
              "order_placed"
            ]
          },
          "path": {
            "type": "string"
          },
          "query": {
            "type": "string"
          },
          "result_count": {
            "type": "number"
          },
          "source": {
            "type": "string",
            "enum": [
              "direct",
              "search",
              "social",
              "email",
              "referral",
              "unknown"
            ]
          }
        },
        "required": [
          "id",
          "session_id",
          "event_type",
          "path"
        ],
        "additionalProperties": false
      },
      "AppliedDiscount": {
        "type": "object",
        "properties": {
          "rule_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "coupon_code": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "string"
          }
        },
        "required": [
          "rule_id",
          "name",
          "scope",
          "kind",
          "value",
          "coupon_code",
          "amount"
        ],
        "additionalProperties": false
      },
      "AssistantReply": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "body": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "in_progress",
              "resolved",
              "closed"
            ]
          }
        },
        "required": [
          "request_id",
          "body"
        ],
        "additionalProperties": false
      },
      "AssistantTicket": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer"
          },
          "subject": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
          },
          "category": {
            "type": "string",
            "enum": [
              "order_issue",
              "product_question",
              "complaint",
              "payment_dispute",
              "other"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "in_progress",
              "resolved",
              "closed"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "normal",
              "high"
            ]
          },
          "order_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "number",
          "subject",
          "category",
          "status",
          "priority",
          "order_id",
          "created_at"
        ],
        "additionalProperties": false
      },
      "AssistantTicketDetail": {
        "type": "object",
        "properties": {
          "ticket": {
            "$ref": "#/components/schemas/AssistantTicket"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssistantTicketMessage"
            }
          },
          "contact_name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "nullable": true
          },
          "contact": {
            "type": "string",
            "maxLength": 254,
            "minLength": 1,
            "nullable": true
          }
        },
        "required": [
          "ticket",
          "messages",
          "contact_name",
          "contact"
        ],
        "additionalProperties": false
      },
      "AssistantTicketInput": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "subject": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
          },
          "category": {
            "type": "string",
            "enum": [
              "order_issue",
              "product_question",
              "complaint",
              "payment_dispute",
              "other"
            ]
          },
          "body": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1
          },
          "order_id": {
            "type": "string",
            "format": "uuid"
          },
          "contact_name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1
          },
          "contact": {
            "type": "string",
            "maxLength": 254,
            "minLength": 1
          }
        },
        "required": [
          "request_id",
          "subject",
          "category",
          "body"
        ],
        "additionalProperties": false
      },
      "AssistantTicketMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "sender": {
            "type": "string",
            "enum": [
              "customer",
              "admin",
              "assistant_summary"
            ]
          },
          "body": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "sender",
          "body",
          "created_at"
        ],
        "additionalProperties": false
      },
      "AttributeDefinition": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "entity_type": {
            "type": "string",
            "enum": [
              "product",
              "customer",
              "category"
            ]
          },
          "attribute_code": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "input_type": {
            "type": "string",
            "enum": [
              "text",
              "textarea",
              "boolean",
              "select",
              "multiselect",
              "price",
              "date",
              "media_image",
              "integer",
              "decimal",
              "datetime",
              "measurement",
              "long_text",
              "single_select",
              "multi_select"
            ]
          },
          "scope": {
            "type": "string",
            "enum": [
              "global"
            ]
          },
          "is_required": {
            "type": "boolean"
          },
          "is_unique": {
            "type": "boolean"
          },
          "is_searchable": {
            "type": "boolean"
          },
          "is_filterable": {
            "type": "boolean"
          },
          "is_comparable": {
            "type": "boolean"
          },
          "is_visible_on_front": {
            "type": "boolean"
          },
          "used_for_promo_rules": {
            "type": "boolean"
          },
          "used_for_configurations": {
            "type": "boolean"
          },
          "swatch_type": {
            "type": "string",
            "enum": [
              "none",
              "text",
              "color"
            ]
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "labels": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "value",
                "label"
              ],
              "additionalProperties": false
            }
          },
          "version": {
            "type": "integer"
          },
          "metadata": {
            "$ref": "#/components/schemas/AttributeMetadata"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "entity_type",
          "attribute_code",
          "label",
          "input_type",
          "scope",
          "is_required",
          "is_unique",
          "is_searchable",
          "is_filterable",
          "is_comparable",
          "is_visible_on_front",
          "used_for_promo_rules",
          "used_for_configurations",
          "swatch_type",
          "options",
          "version",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "AttributeMetadata": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "disabled"
            ]
          },
          "admin_visible": {
            "type": "boolean"
          },
          "facetable": {
            "type": "boolean"
          },
          "sortable": {
            "type": "boolean"
          },
          "ai_queryable": {
            "type": "boolean"
          },
          "ai_enrichable": {
            "type": "boolean"
          },
          "source_policy": {
            "type": "string",
            "enum": [
              "factual",
              "semantic",
              "trusted_only"
            ]
          },
          "semantic_role": {
            "type": "string",
            "enum": [
              "classification",
              "brand",
              "intended_use",
              null
            ],
            "nullable": true
          },
          "unit": {
            "type": "string",
            "nullable": true
          },
          "min": {
            "type": "number",
            "nullable": true
          },
          "max": {
            "type": "number",
            "nullable": true
          },
          "max_length": {
            "type": "integer",
            "nullable": true
          },
          "default_value": {},
          "display_order": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Auth": {
        "type": "object",
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/Customer"
          },
          "access_token": {
            "type": "string"
          }
        },
        "required": [
          "customer",
          "access_token"
        ],
        "additionalProperties": false
      },
      "BestsellerPeriod": {
        "type": "string",
        "enum": [
          "today",
          "last_week",
          "last_month",
          "last_year"
        ]
      },
      "BestsellerResults": {
        "type": "object",
        "properties": {
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          },
          "period": {
            "$ref": "#/components/schemas/BestsellerPeriod"
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "timezone": {
            "type": "string",
            "enum": [
              "UTC"
            ]
          },
          "metric": {
            "type": "string",
            "enum": [
              "completed_order_units"
            ]
          },
          "ranked_limit": {
            "type": "integer"
          },
          "scope": {
            "type": "string",
            "enum": [
              "delivery_area",
              "global"
            ],
            "description": "Ranks sales in the selected delivery area when available; otherwise uses store-wide completed sales."
          }
        },
        "required": [
          "products",
          "period",
          "start",
          "end",
          "timezone",
          "metric",
          "ranked_limit",
          "scope"
        ],
        "additionalProperties": false
      },
      "BundleSelection": {
        "type": "object",
        "properties": {
          "selected": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "selected"
        ],
        "additionalProperties": false
      },
      "CapacityHold": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "source_id": {
            "type": "string",
            "format": "uuid"
          },
          "method": {
            "type": "string"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "status",
          "expires_at",
          "source_id",
          "method",
          "starts_at",
          "ends_at",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "CapacitySelection": {
        "type": "object",
        "properties": {
          "schedule_id": {
            "type": "string",
            "format": "uuid"
          },
          "location_id": {
            "type": "string",
            "format": "uuid"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time"
          },
          "idempotency_key": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "schedule_id",
          "location_id",
          "starts_at",
          "ends_at",
          "idempotency_key"
        ],
        "additionalProperties": false
      },
      "Cart": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CartItem"
            }
          },
          "subtotal": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "fully_reserved": {
            "type": "boolean"
          },
          "discount_amount": {
            "type": "string"
          },
          "discount_snapshot": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppliedDiscount"
            }
          },
          "coupon_code": {
            "type": "string",
            "nullable": true
          },
          "coupon_error": {
            "type": "string",
            "nullable": true
          },
          "market": {
            "$ref": "#/components/schemas/CheckoutMarket"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "customer_id",
          "items",
          "subtotal",
          "currency",
          "fully_reserved",
          "discount_amount",
          "discount_snapshot",
          "coupon_code",
          "coupon_error"
        ],
        "additionalProperties": false
      },
      "CartAdd": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          }
        },
        "required": [
          "product_id",
          "quantity"
        ],
        "additionalProperties": false
      },
      "CartItem": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "price": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "number"
          },
          "reserved_quantity": {
            "type": "number"
          },
          "available": {
            "type": "number"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "line_total": {
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "sku",
          "name",
          "unit",
          "price",
          "currency",
          "quantity",
          "reserved_quantity",
          "available",
          "expires_at",
          "line_total"
        ],
        "additionalProperties": false
      },
      "CartQuantity": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          }
        },
        "required": [
          "quantity"
        ],
        "additionalProperties": false
      },
      "CatalogImage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "alt": {
            "type": "string"
          },
          "width": {
            "type": "integer",
            "minimum": 1
          },
          "height": {
            "type": "integer",
            "minimum": 1
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogImageVariant"
            }
          }
        },
        "required": [
          "id",
          "alt",
          "width",
          "height",
          "variants"
        ],
        "additionalProperties": false
      },
      "CatalogImageVariant": {
        "type": "object",
        "properties": {
          "width": {
            "type": "integer",
            "minimum": 1
          },
          "height": {
            "type": "integer",
            "minimum": 1
          }
        },
        "required": [
          "width",
          "height"
        ],
        "additionalProperties": false
      },
      "CatalogOffer": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "currency": {
            "type": "string"
          },
          "original_price": {
            "type": "string"
          },
          "discounted_price": {
            "type": "string"
          },
          "savings": {
            "type": "string"
          },
          "discount_percent": {
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "currency",
          "original_price",
          "discounted_price",
          "savings",
          "discount_percent"
        ],
        "additionalProperties": false
      },
      "CatalogSchema": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "items": {
              "$ref": "#/components/schemas/ShopperSchemaAttribute"
            },
            "maxItems": 100,
            "type": "array"
          },
          "categories": {
            "items": {
              "$ref": "#/components/schemas/ShopperSchemaCategory"
            },
            "maxItems": 200,
            "type": "array"
          },
          "categories_complete": {
            "type": "boolean"
          },
          "industry": {
            "nullable": true,
            "type": "string"
          },
          "version": {
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "industry",
          "version",
          "attributes"
        ],
        "type": "object"
      },
      "Category": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "parent_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "thumbnail": {
            "type": "string",
            "nullable": true
          },
          "banner": {
            "type": "string",
            "nullable": true
          },
          "images": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CatalogImage"
            },
            "description": "Dimensions and available WebP renditions for media referenced by this shopper projection. Missing entries retain the original image."
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "parent_id",
          "thumbnail",
          "banner",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "CategoryAvailability": {
        "type": "object",
        "additionalProperties": {
          "type": "integer",
          "minimum": 0
        }
      },
      "ChallengeRequest": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string"
          }
        },
        "required": [
          "identifier"
        ],
        "additionalProperties": false
      },
      "CheckoutMarket": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "release_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "revision": {
            "type": "integer"
          },
          "store_revision": {
            "type": "integer"
          },
          "country": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "release_id",
          "revision",
          "store_revision",
          "country",
          "currency"
        ],
        "additionalProperties": false
      },
      "CheckoutQuote": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "snapshot": {
            "$ref": "#/components/schemas/CheckoutSnapshot"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "expires_at",
          "snapshot",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "CheckoutSnapshot": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            }
          },
          "location": {
            "$ref": "#/components/schemas/FulfillmentLocation"
          },
          "contact": {
            "$ref": "#/components/schemas/OrderContact"
          },
          "discount_amount": {
            "type": "string"
          },
          "discount_snapshot": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppliedDiscount"
            }
          },
          "coupon_code": {
            "type": "string",
            "nullable": true
          },
          "subtotal": {
            "type": "string"
          },
          "delivery_fee": {
            "type": "string"
          },
          "tax_amount": {
            "type": "string"
          },
          "tax_snapshot": {
            "$ref": "#/components/schemas/TaxAssessment"
          },
          "total": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "payment_method": {
            "type": "string",
            "enum": [
              "cod"
            ]
          },
          "gift_message": {
            "type": "string",
            "nullable": true
          },
          "scheduled_delivery": {
            "$ref": "#/components/schemas/ScheduledDelivery"
          },
          "fulfillment_plan": {
            "$ref": "#/components/schemas/FulfillmentPlan"
          },
          "market": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CheckoutMarket"
                  }
                ]
              },
              {
                "type": "object",
                "nullable": true,
                "enum": [
                  null
                ]
              }
            ]
          }
        },
        "required": [
          "items",
          "location",
          "contact",
          "discount_amount",
          "discount_snapshot",
          "coupon_code",
          "subtotal",
          "delivery_fee",
          "tax_amount",
          "tax_snapshot",
          "total",
          "currency",
          "payment_method"
        ],
        "additionalProperties": false
      },
      "ContentBlock": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "hero",
              "text",
              "link"
            ]
          },
          "heading": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "image_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "link_label": {
            "type": "string"
          },
          "link_url": {
            "type": "string"
          },
          "navigation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Navigation"
              },
              {
                "type": "object",
                "nullable": true,
                "enum": [
                  null
                ]
              }
            ]
          }
        },
        "required": [
          "kind",
          "heading",
          "text",
          "image_id",
          "link_label",
          "link_url"
        ],
        "additionalProperties": false
      },
      "CouponInput": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "additionalProperties": false
      },
      "Credentials": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "required": [
          "identifier",
          "password"
        ],
        "additionalProperties": false
      },
      "CurrentMarket": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer"
          },
          "release_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "revision",
          "release_id",
          "id",
          "name",
          "country",
          "currency"
        ],
        "additionalProperties": false
      },
      "Customer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "mobile_number": {
            "type": "string",
            "nullable": true
          },
          "primary_identifier": {
            "type": "string",
            "enum": [
              "email",
              "mobile"
            ]
          },
          "verified": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "email",
          "mobile_number",
          "primary_identifier",
          "verified",
          "created_at",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "CustomerProfile": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "maxLength": 120,
            "description": "At most 120 UTF-8 bytes before trimming. Empty names are permitted; multibyte text can reach the byte limit before 120 characters."
          },
          "last_name": {
            "type": "string",
            "maxLength": 120,
            "description": "At most 120 UTF-8 bytes before trimming. Empty names are permitted; multibyte text can reach the byte limit before 120 characters."
          },
          "date_of_birth": {
            "type": "string",
            "format": "date",
            "nullable": true,
            "description": "ISO calendar date YYYY-MM-DD from 1900-01-01 through the current UTC date, or null. Omission also clears the date."
          },
          "gender": {
            "type": "string",
            "enum": [
              "",
              "female",
              "male",
              "other",
              "prefer_not_to_say"
            ]
          },
          "attributes": {
            "type": "object",
            "additionalProperties": true
          },
          "customer_group": {
            "type": "string"
          },
          "company_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "negotiated_price_list_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "required": [
          "first_name",
          "last_name",
          "date_of_birth",
          "gender",
          "attributes",
          "customer_group",
          "company_id",
          "negotiated_price_list_id"
        ],
        "additionalProperties": false
      },
      "DeliveryAreaChoice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "readOnly": true
          },
          "name": {
            "type": "string"
          },
          "center_lat": {
            "type": "number"
          },
          "center_lng": {
            "type": "number"
          }
        },
        "required": [
          "id",
          "entity_id",
          "name",
          "center_lat",
          "center_lng"
        ],
        "additionalProperties": false
      },
      "DeliveryOptions": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliverySlot"
            }
          }
        },
        "required": [
          "enabled",
          "slots"
        ],
        "additionalProperties": false
      },
      "DeliverySlot": {
        "type": "object",
        "properties": {
          "schedule_id": {
            "type": "string",
            "format": "uuid"
          },
          "source_id": {
            "type": "string",
            "format": "uuid"
          },
          "method": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time"
          },
          "availability": {
            "type": "string"
          }
        },
        "required": [
          "schedule_id",
          "source_id",
          "method",
          "timezone",
          "starts_at",
          "ends_at",
          "availability"
        ],
        "additionalProperties": false
      },
      "DeliveryStatus": {
        "type": "object",
        "properties": {
          "configured": {
            "type": "boolean"
          },
          "deliverable": {
            "type": "boolean"
          },
          "area_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "required": [
          "configured",
          "deliverable",
          "area_id"
        ],
        "additionalProperties": false
      },
      "DiscoveryAttributionAccepted": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "accepted"
        ],
        "properties": {
          "accepted": {
            "type": "boolean"
          }
        }
      },
      "DiscoveryAttributionEvidence": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "referrer": {
            "type": "string",
            "maxLength": 2048
          },
          "source": {
            "type": "string",
            "maxLength": 80
          },
          "medium": {
            "type": "string",
            "maxLength": 80
          },
          "campaign": {
            "type": "string",
            "maxLength": 80
          }
        }
      },
      "DiscoveryAttributionInput": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "session_id",
          "path"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "session_id": {
            "type": "string",
            "format": "uuid"
          },
          "path": {
            "type": "string",
            "maxLength": 250
          },
          "evidence": {
            "$ref": "#/components/schemas/DiscoveryAttributionEvidence"
          },
          "order_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        }
      },
      "DiscoverySettings": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "revision",
          "enabled",
          "indexing_enabled",
          "llms_txt_enabled",
          "site_name",
          "organization_name",
          "canonical_url",
          "description",
          "default_locale",
          "feature_pages_enabled",
          "industry_pages_enabled",
          "docs_enabled",
          "pricing_page_enabled",
          "security_page_enabled",
          "integrations_page_enabled",
          "changelog_enabled",
          "grocery_demo_url",
          "jewelry_demo_url",
          "updated_at"
        ],
        "properties": {
          "revision": {
            "type": "integer",
            "minimum": 1
          },
          "enabled": {
            "type": "boolean"
          },
          "indexing_enabled": {
            "type": "boolean"
          },
          "llms_txt_enabled": {
            "type": "boolean"
          },
          "site_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "organization_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "canonical_url": {
            "type": "string",
            "nullable": true,
            "maxLength": 2048
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "default_locale": {
            "type": "string",
            "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
          },
          "feature_pages_enabled": {
            "type": "boolean"
          },
          "industry_pages_enabled": {
            "type": "boolean"
          },
          "docs_enabled": {
            "type": "boolean"
          },
          "pricing_page_enabled": {
            "type": "boolean"
          },
          "security_page_enabled": {
            "type": "boolean"
          },
          "integrations_page_enabled": {
            "type": "boolean"
          },
          "changelog_enabled": {
            "type": "boolean"
          },
          "grocery_demo_url": {
            "type": "string",
            "nullable": true,
            "maxLength": 2048
          },
          "jewelry_demo_url": {
            "type": "string",
            "nullable": true,
            "maxLength": 2048
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Dispatch": {
        "type": "object",
        "properties": {
          "shipment": {
            "$ref": "#/components/schemas/Shipment"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShipmentItem"
            }
          }
        },
        "required": [
          "shipment",
          "items"
        ],
        "additionalProperties": false
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "alternatives": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliverySlot"
            }
          },
          "capability": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      },
      "FulfillmentAvailability": {
        "type": "object",
        "properties": {
          "store_id": {
            "type": "string",
            "format": "uuid"
          },
          "capabilities": {
            "$ref": "#/components/schemas/FulfillmentCapabilities"
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "scheduling": {
                  "type": "boolean"
                },
                "asap": {
                  "type": "boolean"
                },
                "locations": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "name": {
                        "type": "string"
                      },
                      "instructions": {
                        "type": "string"
                      },
                      "preparation_minutes": {
                        "type": "integer"
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "instructions",
                      "preparation_minutes"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "type",
                "scheduling"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "store_id",
          "capabilities",
          "methods"
        ],
        "additionalProperties": false
      },
      "FulfillmentCapabilities": {
        "type": "object",
        "properties": {
          "delivery_enabled": {
            "type": "boolean"
          },
          "pickup_enabled": {
            "type": "boolean"
          },
          "scheduled_delivery_enabled": {
            "type": "boolean"
          },
          "asap_delivery_enabled": {
            "type": "boolean"
          },
          "capacity_management_enabled": {
            "type": "boolean"
          },
          "checkout_capacity_holds_enabled": {
            "type": "boolean"
          },
          "geo_fencing_enabled": {
            "type": "boolean"
          },
          "global_delivery_enabled": {
            "type": "boolean",
            "description": "Allow delivery worldwide from default and global stock pools, bypassing area and city restrictions. Defaults to false."
          },
          "multi_source_fulfillment_enabled": {
            "type": "boolean"
          },
          "split_order_scheduling_enabled": {
            "type": "boolean"
          },
          "automatic_source_routing_enabled": {
            "type": "boolean"
          },
          "customer_delivery_slot_selection_enabled": {
            "type": "boolean"
          },
          "admin_manual_scheduling_enabled": {
            "type": "boolean"
          },
          "pickup_scheduling_enabled": {
            "type": "boolean"
          },
          "split_delivery_mode": {
            "type": "string",
            "enum": [
              "same_window_required",
              "independent_windows"
            ]
          },
          "delivery_city_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "delivery_enabled",
          "pickup_enabled",
          "scheduled_delivery_enabled",
          "asap_delivery_enabled",
          "capacity_management_enabled",
          "checkout_capacity_holds_enabled",
          "geo_fencing_enabled",
          "global_delivery_enabled",
          "multi_source_fulfillment_enabled",
          "split_order_scheduling_enabled",
          "automatic_source_routing_enabled",
          "customer_delivery_slot_selection_enabled",
          "admin_manual_scheduling_enabled",
          "pickup_scheduling_enabled",
          "split_delivery_mode",
          "delivery_city_ids"
        ],
        "additionalProperties": false
      },
      "FulfillmentLocation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": "string",
            "enum": [
              "home",
              "work",
              "other"
            ]
          },
          "custom_label": {
            "type": "string"
          },
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "formatted_address": {
            "type": "string"
          },
          "building": {
            "type": "string"
          },
          "floor": {
            "type": "string"
          },
          "apartment": {
            "type": "string"
          },
          "delivery_instructions": {
            "type": "string"
          },
          "is_default": {
            "type": "boolean"
          },
          "area_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "location_method": {
            "type": "string",
            "enum": [
              "pin",
              "neighborhood",
              "pickup"
            ],
            "description": "Whether coordinates describe an entrance pin or an approximate locality reference point."
          },
          "geography": {
            "$ref": "#/components/schemas/LocationGeography"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "label",
          "custom_label",
          "latitude",
          "longitude",
          "formatted_address",
          "building",
          "floor",
          "apartment",
          "delivery_instructions",
          "is_default",
          "area_id",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      },
      "FulfillmentOptions": {
        "type": "object",
        "properties": {
          "capabilities": {
            "$ref": "#/components/schemas/FulfillmentCapabilities"
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "source_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "source_name": {
                  "type": "string"
                },
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "product_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "quantity": {
                        "type": "integer"
                      },
                      "stock_id": {
                        "type": "string",
                        "format": "uuid"
                      }
                    },
                    "required": [
                      "product_id",
                      "quantity",
                      "stock_id"
                    ],
                    "additionalProperties": false
                  }
                },
                "requirement": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "slots": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeliverySlot"
                  }
                }
              },
              "required": [
                "source_id",
                "source_name",
                "items",
                "requirement",
                "slots"
              ],
              "additionalProperties": false
            }
          },
          "common_windows": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        },
        "required": [
          "capabilities",
          "groups",
          "common_windows"
        ],
        "additionalProperties": false
      },
      "FulfillmentPlan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "method": {
            "type": "string"
          },
          "store_id": {
            "type": "string",
            "format": "uuid"
          },
          "location_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "source_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "source_name": {
                  "type": "string"
                },
                "method": {
                  "type": "string"
                },
                "schedule_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true
                },
                "starts_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "ends_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "timezone": {
                  "type": "string"
                },
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "product_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "quantity": {
                        "type": "integer"
                      }
                    },
                    "required": [
                      "product_id",
                      "quantity"
                    ],
                    "additionalProperties": false
                  }
                },
                "entity_id": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1,
                  "maximum": 9007199254740991,
                  "readOnly": true,
                  "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
                }
              },
              "required": [
                "id",
                "source_id",
                "source_name",
                "method",
                "schedule_id",
                "starts_at",
                "ends_at",
                "timezone",
                "items"
              ],
              "additionalProperties": false
            }
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "method",
          "store_id",
          "location_id",
          "expires_at",
          "status",
          "groups"
        ],
        "additionalProperties": false
      },
      "FulfillmentRequest": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "delivery",
              "pickup"
            ]
          },
          "location_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "source_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "asap": {
            "type": "boolean"
          }
        },
        "required": [
          "method",
          "date"
        ],
        "additionalProperties": false
      },
      "FulfillmentSelection": {
        "type": "object",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/FulfillmentRequest"
          },
          "windows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FulfillmentWindow"
            }
          },
          "idempotency_key": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "request",
          "windows",
          "idempotency_key"
        ],
        "additionalProperties": false
      },
      "FulfillmentStoreChoice": {
        "type": "object",
        "properties": {
          "store_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "store_id"
        ],
        "additionalProperties": false
      },
      "FulfillmentStores": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "format": "uuid"
            },
            "name": {
              "type": "string"
            },
            "is_default": {
              "type": "boolean"
            },
            "entity_id": {
              "type": "integer",
              "format": "int64",
              "minimum": 1,
              "maximum": 9007199254740991,
              "readOnly": true,
              "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
            }
          },
          "required": [
            "id",
            "name",
            "is_default",
            "entity_id"
          ],
          "additionalProperties": false
        }
      },
      "FulfillmentWindow": {
        "type": "object",
        "properties": {
          "source_id": {
            "type": "string",
            "format": "uuid"
          },
          "schedule_id": {
            "type": "string",
            "format": "uuid"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "source_id",
          "schedule_id",
          "starts_at",
          "ends_at"
        ],
        "additionalProperties": false
      },
      "IdList": {
        "type": "array",
        "items": {
          "type": "string",
          "format": "uuid"
        }
      },
      "InterfaceBundle": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "minimum": 0
          },
          "catalog_version": {
            "type": "string"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InterfaceMessage"
            }
          },
          "overrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InterfaceOverride"
            }
          }
        },
        "required": [
          "revision",
          "catalog_version",
          "messages",
          "overrides"
        ],
        "additionalProperties": false
      },
      "InterfaceMessage": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "plural": {
            "type": "string",
            "nullable": true
          },
          "en": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "ar": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": [
          "key",
          "group",
          "plural",
          "en",
          "ar"
        ],
        "additionalProperties": false
      },
      "InterfaceOverride": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "ar"
            ]
          },
          "form": {
            "type": "string",
            "enum": [
              "zero",
              "one",
              "two",
              "few",
              "many",
              "other"
            ]
          },
          "text": {
            "type": "string"
          },
          "source_text": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "locale",
          "form",
          "text",
          "source_text"
        ],
        "additionalProperties": false
      },
      "Location": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": "string",
            "enum": [
              "home",
              "work",
              "other"
            ]
          },
          "custom_label": {
            "type": "string"
          },
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "formatted_address": {
            "type": "string"
          },
          "building": {
            "type": "string"
          },
          "floor": {
            "type": "string"
          },
          "apartment": {
            "type": "string"
          },
          "delivery_instructions": {
            "type": "string"
          },
          "is_default": {
            "type": "boolean"
          },
          "area_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "location_method": {
            "type": "string",
            "enum": [
              "pin",
              "neighborhood"
            ],
            "description": "Whether coordinates describe an entrance pin or an approximate locality reference point."
          },
          "geography": {
            "$ref": "#/components/schemas/LocationGeography"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "label",
          "custom_label",
          "latitude",
          "longitude",
          "formatted_address",
          "building",
          "floor",
          "apartment",
          "delivery_instructions",
          "is_default",
          "area_id",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      },
      "LocationGeography": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string"
          },
          "state_code": {
            "type": "string"
          },
          "state_name": {
            "type": "string"
          },
          "city_id": {
            "type": "string"
          },
          "city_name": {
            "type": "string"
          }
        },
        "required": [
          "country_code",
          "state_code",
          "state_name",
          "city_id",
          "city_name"
        ],
        "additionalProperties": false,
        "nullable": true
      },
      "LocationInput": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "enum": [
              "home",
              "work",
              "other"
            ]
          },
          "custom_label": {
            "type": "string"
          },
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "formatted_address": {
            "type": "string"
          },
          "building": {
            "type": "string"
          },
          "floor": {
            "type": "string"
          },
          "apartment": {
            "type": "string"
          },
          "delivery_instructions": {
            "type": "string"
          },
          "is_default": {
            "type": "boolean"
          },
          "location_method": {
            "type": "string",
            "enum": [
              "pin",
              "neighborhood"
            ],
            "description": "Whether coordinates describe an entrance pin or an approximate locality reference point."
          },
          "geography": {
            "$ref": "#/components/schemas/LocationGeography"
          }
        },
        "required": [
          "label",
          "latitude",
          "longitude",
          "formatted_address"
        ],
        "additionalProperties": false
      },
      "ManualRefund": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "order_id": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "actor_id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "order_id",
          "amount",
          "reason",
          "actor_id",
          "created_at"
        ],
        "additionalProperties": false
      },
      "MarketConfiguration": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "currency": {
            "type": "string",
            "enum": [
              "USD",
              "EGP"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 1
          },
          "region": {
            "type": "string",
            "enum": [
              "US",
              "EG"
            ]
          },
          "industry": {
            "type": "string",
            "enum": [
              "general",
              "grocery"
            ]
          }
        },
        "required": [
          "enabled",
          "currency",
          "version",
          "region",
          "industry"
        ],
        "additionalProperties": false
      },
      "MarketFacts": {
        "type": "object",
        "properties": {
          "market_version": {
            "type": "integer"
          },
          "policy_pack": {
            "type": "object",
            "properties": {
              "region": {
                "type": "string",
                "enum": [
                  "US",
                  "EG"
                ]
              },
              "industry": {
                "type": "string",
                "enum": [
                  "general",
                  "grocery"
                ]
              },
              "regulated_goods_enabled": {
                "type": "boolean",
                "enum": [
                  false
                ]
              },
              "legal_compliance_claim": {
                "type": "boolean",
                "enum": [
                  false
                ]
              }
            },
            "required": [
              "region",
              "industry",
              "regulated_goods_enabled",
              "legal_compliance_claim"
            ],
            "additionalProperties": false
          },
          "schema_version": {
            "type": "string",
            "enum": [
              "1.0.0"
            ]
          },
          "sku": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "category_id": {
            "type": "string",
            "format": "uuid"
          },
          "parent_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "selected_options": {
            "type": "object",
            "additionalProperties": true
          },
          "attributes": {
            "type": "object",
            "additionalProperties": true
          },
          "compatibility_digest": {
            "type": "string"
          },
          "currency": {
            "type": "string",
            "enum": [
              "USD",
              "EGP"
            ]
          },
          "selling_rule": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SellingRule"
                  }
                ]
              },
              {
                "type": "object",
                "nullable": true,
                "enum": [
                  null
                ]
              }
            ]
          },
          "price_basis": {
            "type": "string",
            "enum": [
              "per_sellable_unit"
            ]
          },
          "minor_unit_digits": {
            "type": "integer",
            "enum": [
              2
            ]
          }
        },
        "required": [
          "market_version",
          "policy_pack",
          "schema_version",
          "sku",
          "title",
          "unit",
          "category_id",
          "parent_id",
          "selected_options",
          "attributes",
          "compatibility_digest",
          "currency",
          "selling_rule",
          "price_basis",
          "minor_unit_digits"
        ],
        "additionalProperties": false
      },
      "MarketMeasure": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,6})?$",
            "maxLength": 30
          }
        },
        "required": [
          "quantity"
        ],
        "additionalProperties": false
      },
      "MarketProduct": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "rule": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SellingRule"
                  }
                ]
              },
              {
                "type": "object",
                "nullable": true,
                "enum": [
                  null
                ]
              }
            ]
          },
          "price_basis": {
            "type": "string",
            "enum": [
              "per_sellable_unit"
            ]
          }
        },
        "required": [
          "product_id",
          "rule",
          "price_basis"
        ],
        "additionalProperties": false
      },
      "Navigation": {
        "type": "object",
        "properties": {
          "icon": {
            "type": "string"
          },
          "badge": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "new_tab": {
            "type": "boolean"
          },
          "columns": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NavigationLink"
            }
          }
        },
        "required": [
          "icon",
          "badge",
          "enabled",
          "new_tab",
          "columns",
          "links"
        ],
        "additionalProperties": false
      },
      "NavigationLink": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "icon": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "new_tab": {
            "type": "boolean"
          }
        },
        "required": [
          "label",
          "url",
          "group",
          "icon",
          "description",
          "new_tab"
        ],
        "additionalProperties": false
      },
      "NotificationProductViewInput": {
        "type": "object",
        "properties": {
          "product": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          }
        },
        "required": [
          "product"
        ],
        "additionalProperties": false
      },
      "NotificationProductViewResult": {
        "type": "object",
        "properties": {
          "delivered": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "notification_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "queued": {
            "type": "boolean"
          },
          "event_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "delivered",
          "notification_ids"
        ],
        "additionalProperties": false
      },
      "Order": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid"
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "idempotency_key": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "placed",
              "confirmed",
              "fulfilling",
              "shipped",
              "delivered",
              "cash_collected",
              "cancelled",
              "delivery_failed",
              "pickup_ready",
              "picked_up"
            ]
          },
          "location": {
            "$ref": "#/components/schemas/FulfillmentLocation"
          },
          "contact": {
            "$ref": "#/components/schemas/OrderContact"
          },
          "discount_amount": {
            "type": "string"
          },
          "discount_snapshot": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppliedDiscount"
            }
          },
          "coupon_code": {
            "type": "string",
            "nullable": true
          },
          "subtotal": {
            "type": "string"
          },
          "delivery_fee": {
            "type": "string"
          },
          "tax_amount": {
            "type": "string"
          },
          "tax_snapshot": {
            "$ref": "#/components/schemas/TaxAssessment"
          },
          "total": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "gift_message": {
            "type": "string",
            "nullable": true
          },
          "market_context": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CheckoutMarket"
                  }
                ]
              },
              {
                "type": "object",
                "nullable": true,
                "enum": [
                  null
                ]
              }
            ]
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          },
          "status_revision": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "status_display": {
            "$ref": "#/components/schemas/OrderStatusDisplay"
          }
        },
        "required": [
          "id",
          "number",
          "customer_id",
          "quote_id",
          "idempotency_key",
          "status",
          "location",
          "contact",
          "discount_amount",
          "discount_snapshot",
          "coupon_code",
          "subtotal",
          "delivery_fee",
          "tax_amount",
          "tax_snapshot",
          "total",
          "currency",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      },
      "OrderContact": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "mobile_number": {
            "type": "string",
            "nullable": true
          },
          "primary_identifier": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "mobile_number",
          "primary_identifier"
        ],
        "additionalProperties": false
      },
      "OrderDetail": {
        "type": "object",
        "properties": {
          "order": {
            "$ref": "#/components/schemas/Order"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            }
          },
          "history": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderHistory"
            }
          },
          "payment": {
            "$ref": "#/components/schemas/Payment"
          },
          "refunds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualRefund"
            }
          },
          "dispatch": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Dispatch"
              },
              {
                "type": "object",
                "nullable": true,
                "enum": [
                  null
                ]
              }
            ]
          },
          "shipments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Dispatch"
            }
          },
          "scheduled_deliveries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScheduledOrderDelivery"
            }
          },
          "fulfillment_plan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FulfillmentPlan"
              },
              {
                "type": "object",
                "nullable": true,
                "enum": [
                  null
                ]
              }
            ]
          }
        },
        "required": [
          "order",
          "items",
          "history",
          "payment",
          "refunds",
          "dispatch",
          "shipments",
          "scheduled_deliveries"
        ],
        "additionalProperties": false
      },
      "OrderExtensions": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "new",
              "processing",
              "complete",
              "canceled",
              "holded"
            ]
          },
          "delivery_location_snapshot": {
            "$ref": "#/components/schemas/Location"
          },
          "gift_message": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "state",
          "delivery_location_snapshot",
          "gift_message"
        ],
        "additionalProperties": false
      },
      "OrderHistory": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "order_id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "placed",
              "confirmed",
              "fulfilling",
              "shipped",
              "delivered",
              "cash_collected",
              "cancelled",
              "delivery_failed",
              "pickup_ready",
              "picked_up"
            ]
          },
          "actor_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reason": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "order_id",
          "status",
          "actor_id",
          "reason",
          "created_at"
        ],
        "additionalProperties": false
      },
      "OrderItem": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "price": {
            "type": "string"
          },
          "line_total": {
            "type": "string"
          },
          "discount_amount": {
            "type": "string"
          },
          "discount_snapshot": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppliedDiscount"
            }
          },
          "market_facts": {
            "$ref": "#/components/schemas/MarketFacts"
          }
        },
        "required": [
          "product_id",
          "sku",
          "name",
          "unit",
          "quantity",
          "price",
          "line_total",
          "discount_amount",
          "discount_snapshot"
        ],
        "additionalProperties": false
      },
      "OrderStatusDisplay": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{1,47}$"
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            },
            "maxProperties": 50
          },
          "tone": {
            "type": "string",
            "enum": [
              "neutral",
              "info",
              "success",
              "warning",
              "danger"
            ]
          }
        },
        "required": [
          "code",
          "label",
          "translations",
          "tone"
        ],
        "additionalProperties": false
      },
      "OwnReview": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid"
          },
          "display_name": {
            "type": "string"
          },
          "rating": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected"
            ]
          },
          "version": {
            "type": "integer"
          },
          "moderation_reason": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "product_id",
          "customer_id",
          "display_name",
          "rating",
          "title",
          "body",
          "status",
          "version",
          "moderation_reason",
          "created_at",
          "updated_at",
          "entity_id"
        ],
        "additionalProperties": false,
        "nullable": true
      },
      "Payment": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "format": "uuid"
          },
          "method": {
            "type": "string"
          },
          "amount_due": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "collected_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "collected_by": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "required": [
          "order_id",
          "method",
          "amount_due",
          "currency",
          "collected_at",
          "collected_by"
        ],
        "additionalProperties": false
      },
      "PlaceInput": {
        "type": "object",
        "properties": {
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "idempotency_key": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "quote_id",
          "idempotency_key"
        ],
        "additionalProperties": false
      },
      "Product": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "price": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,2})?$"
          },
          "currency": {
            "type": "string",
            "enum": [
              "USD",
              "EGP"
            ]
          },
          "unit": {
            "type": "string",
            "enum": [
              "each",
              "lb",
              "kg",
              "oz",
              "pack",
              "L"
            ]
          },
          "category_id": {
            "type": "string",
            "format": "uuid"
          },
          "attributes": {
            "type": "object",
            "additionalProperties": true
          },
          "media_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "active": {
            "type": "boolean"
          },
          "in_stock": {
            "type": "boolean"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "images": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CatalogImage"
            },
            "description": "Dimensions and available WebP renditions for media referenced by this shopper projection. Missing entries retain the original image."
          },
          "category_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 50,
            "description": "Assigned categories, including the primary category. Omit on updates to preserve assignments."
          },
          "catalog_offer": {
            "$ref": "#/components/schemas/CatalogOffer"
          },
          "product_type": {
            "type": "string",
            "enum": [
              "simple",
              "configurable",
              "grouped",
              "bundle"
            ]
          },
          "parent_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "variant_attributes": {
            "type": "object",
            "additionalProperties": true
          },
          "attribute_set_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "sku",
          "slug",
          "name",
          "description",
          "price",
          "currency",
          "unit",
          "category_id",
          "attributes",
          "media_ids",
          "active",
          "in_stock",
          "updated_at",
          "product_type",
          "parent_id",
          "variant_attributes",
          "attribute_set_id",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "ProductFamily": {
        "type": "object",
        "properties": {
          "structure": {
            "$ref": "#/components/schemas/ProductStructure"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          }
        },
        "required": [
          "structure",
          "children"
        ],
        "additionalProperties": false
      },
      "ProductLink": {
        "type": "object",
        "properties": {
          "child_id": {
            "type": "string",
            "format": "uuid"
          },
          "option_label": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          }
        },
        "required": [
          "child_id",
          "option_label",
          "quantity"
        ],
        "additionalProperties": false
      },
      "ProductStructure": {
        "type": "object",
        "properties": {
          "product_type": {
            "type": "string",
            "enum": [
              "simple",
              "configurable",
              "grouped",
              "bundle"
            ]
          },
          "configurable_attributes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductLink"
            }
          }
        },
        "required": [
          "product_type",
          "configurable_attributes",
          "children"
        ],
        "additionalProperties": false
      },
      "ProfileInput": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "maxLength": 120,
            "description": "At most 120 UTF-8 bytes before trimming. Empty names are permitted; multibyte text can reach the byte limit before 120 characters."
          },
          "last_name": {
            "type": "string",
            "maxLength": 120,
            "description": "At most 120 UTF-8 bytes before trimming. Empty names are permitted; multibyte text can reach the byte limit before 120 characters."
          },
          "date_of_birth": {
            "type": "string",
            "format": "date",
            "nullable": true,
            "description": "ISO calendar date YYYY-MM-DD from 1900-01-01 through the current UTC date, or null. Omission also clears the date."
          },
          "gender": {
            "type": "string",
            "enum": [
              "",
              "female",
              "male",
              "other",
              "prefer_not_to_say"
            ]
          },
          "attributes": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "required": [
          "first_name",
          "last_name",
          "gender",
          "attributes"
        ],
        "additionalProperties": false
      },
      "PublicReview": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "display_name": {
            "type": "string"
          },
          "rating": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "display_name",
          "rating",
          "title",
          "body",
          "created_at",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "PublicStorefrontLanguages": {
        "type": "object",
        "properties": {
          "source_locale": {
            "type": "string"
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StorefrontLanguage"
            }
          }
        },
        "required": [
          "source_locale",
          "languages"
        ],
        "additionalProperties": false
      },
      "PublishedContent": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentBlock"
            }
          },
          "version": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "title",
          "blocks",
          "version"
        ],
        "additionalProperties": false,
        "nullable": true
      },
      "QuoteInput": {
        "type": "object",
        "properties": {
          "location_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "gift_message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Reset": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "required": [
          "identifier",
          "token",
          "password"
        ],
        "additionalProperties": false
      },
      "ResolvedTheme": {
        "type": "object",
        "properties": {
          "version_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "configuration": {
            "$ref": "#/components/schemas/ThemeConfiguration"
          },
          "cities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "images": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CatalogImage"
            },
            "description": "Dimensions and existing renditions for media referenced by this resolved theme."
          },
          "discovery_attribution_enabled": {
            "type": "boolean",
            "description": "Whether this deployment is bound to the installation and accepts discovery attribution."
          }
        },
        "required": [
          "version_id",
          "configuration",
          "cities"
        ],
        "additionalProperties": false
      },
      "Review": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid"
          },
          "display_name": {
            "type": "string"
          },
          "rating": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected"
            ]
          },
          "version": {
            "type": "integer"
          },
          "moderation_reason": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "product_id",
          "customer_id",
          "display_name",
          "rating",
          "title",
          "body",
          "status",
          "version",
          "moderation_reason",
          "created_at",
          "updated_at",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "ReviewInput": {
        "type": "object",
        "properties": {
          "display_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "pattern": "\\S",
            "description": "Must contain non-whitespace text. At most 80 UTF-8 bytes before trimming; maxLength is only the corresponding character upper bound. Multibyte text may reach the byte limit sooner."
          },
          "rating": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "pattern": "\\S",
            "description": "Must contain non-whitespace text. At most 200 UTF-8 bytes before trimming; maxLength is only the corresponding character upper bound. Multibyte text may reach the byte limit sooner."
          },
          "body": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000,
            "pattern": "\\S",
            "description": "Must contain non-whitespace text. At most 4000 UTF-8 bytes before trimming; maxLength is only the corresponding character upper bound. Multibyte text may reach the byte limit sooner."
          }
        },
        "required": [
          "display_name",
          "rating",
          "title",
          "body"
        ],
        "additionalProperties": false
      },
      "ScheduledDelivery": {
        "type": "object",
        "properties": {
          "timezone": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "source_id": {
            "type": "string",
            "format": "uuid"
          },
          "area_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "method": {
            "type": "string"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time"
          },
          "requirement": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "minimum": 0
            }
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "timezone",
          "id",
          "source_id",
          "area_id",
          "method",
          "starts_at",
          "ends_at",
          "requirement"
        ],
        "additionalProperties": false
      },
      "ScheduledOrderDelivery": {
        "type": "object",
        "properties": {
          "timezone": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "source_id": {
            "type": "string",
            "format": "uuid"
          },
          "area_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "method": {
            "type": "string"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time"
          },
          "requirement": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "minimum": 0
            }
          },
          "source_name": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "timezone",
          "id",
          "source_id",
          "area_id",
          "method",
          "starts_at",
          "ends_at",
          "requirement",
          "source_name",
          "status",
          "entity_id"
        ],
        "additionalProperties": false
      },
      "SearchResults": {
        "type": "object",
        "properties": {
          "hits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          },
          "total": {
            "type": "number"
          },
          "offset": {
            "type": "number"
          },
          "limit": {
            "type": "number"
          },
          "facets": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "integer"
              }
            }
          }
        },
        "required": [
          "hits",
          "total",
          "offset",
          "limit"
        ],
        "additionalProperties": false
      },
      "SellingRule": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "piece",
              "pack",
              "case",
              "weight",
              "volume",
              "variable_weight"
            ]
          },
          "measure_unit": {
            "type": "string",
            "enum": [
              "piece",
              "kg",
              "litre"
            ]
          },
          "measure_per_unit": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,6})?$",
            "maxLength": 30
          },
          "minimum": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "maximum": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "increment": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "estimated_weight": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,6})?$",
            "maxLength": 30,
            "nullable": true
          },
          "final_weight": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,6})?$",
            "maxLength": 30,
            "nullable": true
          },
          "regulated": {
            "type": "boolean"
          }
        },
        "required": [
          "kind",
          "measure_unit",
          "measure_per_unit",
          "minimum",
          "maximum",
          "increment",
          "estimated_weight",
          "final_weight",
          "regulated"
        ],
        "additionalProperties": false
      },
      "Shipment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "order_id": {
            "type": "string",
            "format": "uuid"
          },
          "tracking_reference": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "shipped",
              "delivered",
              "delivery_failed",
              "cancelled",
              "pickup_ready",
              "picked_up"
            ]
          },
          "dispatched_by": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "dispatched_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "source_id": {
            "type": "string",
            "format": "uuid"
          },
          "source_name": {
            "type": "string"
          },
          "method": {
            "type": "string",
            "enum": [
              "delivery",
              "pickup"
            ]
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 9007199254740991,
            "readOnly": true,
            "description": "Server-assigned, immutable entity number unique within this entity type. UUID id remains the API and relationship identity."
          }
        },
        "required": [
          "id",
          "order_id",
          "tracking_reference",
          "status",
          "dispatched_by",
          "dispatched_at",
          "updated_at",
          "source_id",
          "source_name"
        ],
        "additionalProperties": false
      },
      "ShipmentItem": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "type": "integer"
          }
        },
        "required": [
          "product_id",
          "quantity"
        ],
        "additionalProperties": false
      },
      "ShopperSchemaAttribute": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "maxLength": 64,
            "type": "string"
          },
          "comparable": {
            "type": "boolean"
          },
          "data_type": {
            "maxLength": 30,
            "type": "string"
          },
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "facetable": {
            "type": "boolean"
          },
          "filterable": {
            "type": "boolean"
          },
          "label": {
            "maxLength": 120,
            "type": "string"
          },
          "max": {
            "nullable": true,
            "type": "number"
          },
          "min": {
            "nullable": true,
            "type": "number"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/ShopperSchemaOption"
            },
            "maxItems": 100,
            "type": "array"
          },
          "searchable": {
            "type": "boolean"
          },
          "semantic_role": {
            "nullable": true,
            "type": "string"
          },
          "sortable": {
            "type": "boolean"
          },
          "source_policy": {
            "enum": [
              "factual",
              "semantic",
              "trusted_only"
            ],
            "type": "string"
          },
          "unit": {
            "nullable": true,
            "type": "string"
          },
          "variant_axis": {
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "label",
          "data_type",
          "options",
          "filterable",
          "searchable",
          "facetable",
          "sortable",
          "comparable",
          "variant_axis",
          "source_policy",
          "unit",
          "min",
          "max"
        ],
        "type": "object"
      },
      "ShopperSchemaCategory": {
        "additionalProperties": false,
        "properties": {
          "aliases": {
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "type": "array"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "maxLength": 1000,
            "type": "string"
          },
          "parent_id": {
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "sellable_count": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "ShopperSchemaOption": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "maxLength": 100,
            "type": "string"
          },
          "label": {
            "maxLength": 120,
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "maxProperties": 20,
            "type": "object"
          }
        },
        "required": [
          "code",
          "label"
        ],
        "type": "object"
      },
      "Status": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ok"
            ]
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false
      },
      "Stock": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "on_hand": {
            "type": "number"
          },
          "reserved": {
            "type": "number"
          },
          "available": {
            "type": "number"
          }
        },
        "required": [
          "product_id",
          "on_hand",
          "reserved",
          "available"
        ],
        "additionalProperties": false
      },
      "StorefrontLanguage": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "native_name": {
            "type": "string"
          },
          "direction": {
            "type": "string",
            "enum": [
              "ltr",
              "rtl"
            ]
          },
          "revision": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "locale",
          "name",
          "native_name",
          "direction",
          "revision"
        ],
        "additionalProperties": false
      },
      "StorefrontNotification": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "body": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32000
          },
          "cta_label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "nullable": true
          },
          "cta_path": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300,
            "nullable": true,
            "description": "Supported relative storefront path only: /, /search, /cart, /support, /account, /account/orders, /products/{slug}, /categories/{slug}, /pages/{slug}, or /account/orders/{uuid}. No query, fragment, encoded characters, traversal or external destination. Supply together with cta_label or set both to null."
          },
          "published_at": {
            "type": "string",
            "format": "date-time"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "kind": {
            "type": "string",
            "enum": [
              "announcement",
              "journey"
            ]
          },
          "read_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "required": [
          "id",
          "title",
          "body",
          "cta_label",
          "cta_path",
          "published_at",
          "expires_at",
          "kind",
          "read_at"
        ],
        "additionalProperties": false
      },
      "StorefrontNotificationCursor": {
        "type": "object",
        "properties": {
          "before": {
            "type": "string",
            "format": "date-time"
          },
          "before_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "before",
          "before_id"
        ],
        "additionalProperties": false
      },
      "StorefrontNotificationPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StorefrontNotification"
            }
          },
          "unread_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "snapshot_at": {
            "type": "string",
            "format": "date-time"
          },
          "next_cursor": {
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/StorefrontNotificationCursor"
                  }
                ]
              },
              {
                "type": "object",
                "nullable": true,
                "enum": [
                  null
                ]
              }
            ]
          },
          "audience": {
            "type": "string",
            "enum": [
              "guest",
              "customer"
            ]
          }
        },
        "required": [
          "items",
          "unread_count",
          "snapshot_at",
          "next_cursor",
          "audience"
        ],
        "additionalProperties": false
      },
      "StorefrontNotificationReadAllInput": {
        "type": "object",
        "properties": {
          "through": {
            "type": "string",
            "format": "date-time",
            "description": "The list response snapshot_at. Must not be in the future; later arrivals remain unread."
          }
        },
        "required": [
          "through"
        ],
        "additionalProperties": false
      },
      "StorefrontNotificationReadAllResult": {
        "type": "object",
        "properties": {
          "updated": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "unread_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        },
        "required": [
          "updated",
          "unread_count"
        ],
        "additionalProperties": false
      },
      "StorefrontNotificationReadInput": {
        "type": "object",
        "properties": {
          "read": {
            "type": "boolean"
          }
        },
        "required": [
          "read"
        ],
        "additionalProperties": false
      },
      "StorefrontNotificationReadResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "read_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "unread_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        },
        "required": [
          "id",
          "read_at",
          "unread_count"
        ],
        "additionalProperties": false
      },
      "TaxAssessment": {
        "type": "object",
        "properties": {
          "rule_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "rate_bps": {
            "type": "integer"
          },
          "tax_delivery": {
            "type": "boolean"
          },
          "taxable_base": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          }
        },
        "required": [
          "rule_id",
          "name",
          "rate_bps",
          "tax_delivery",
          "taxable_base",
          "amount"
        ],
        "additionalProperties": false
      },
      "ThemeConfiguration": {
        "type": "object",
        "properties": {
          "schema_version": {
            "type": "string",
            "enum": [
              "theme/v1"
            ]
          },
          "tokens": {
            "type": "object",
            "properties": {
              "color.primary": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "color.secondary": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "color.background": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "color.surface": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "color.text": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "color.muted": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "color.success": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "color.warning": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "color.error": {
                "type": "string",
                "pattern": "^#[a-fA-F0-9]{6}$"
              },
              "font.body": {
                "type": "string",
                "enum": [
                  "system-ui",
                  "Arial",
                  "Georgia",
                  "Bodoni Moda",
                  "Jost",
                  "Saol Display",
                  "Futura Now Headline",
                  "Cairo",
                  "Tajawal",
                  "Noto Sans Arabic"
                ]
              },
              "font.heading": {
                "type": "string",
                "enum": [
                  "system-ui",
                  "Arial",
                  "Georgia",
                  "Bodoni Moda",
                  "Jost",
                  "Saol Display",
                  "Futura Now Headline",
                  "Cairo",
                  "Tajawal",
                  "Noto Sans Arabic"
                ]
              },
              "font.size-offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4
              },
              "spacing.xs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 96
              },
              "spacing.sm": {
                "type": "integer",
                "minimum": 0,
                "maximum": 96
              },
              "spacing.md": {
                "type": "integer",
                "minimum": 0,
                "maximum": 96
              },
              "spacing.lg": {
                "type": "integer",
                "minimum": 0,
                "maximum": 96
              },
              "spacing.xl": {
                "type": "integer",
                "minimum": 0,
                "maximum": 96
              },
              "radius.default": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "border.width": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4
              },
              "shadow.default": {
                "type": "string",
                "enum": [
                  "none",
                  "0 2px 8px #00000014",
                  "0 4px 16px #0000001f"
                ]
              },
              "container.width": {
                "type": "integer",
                "minimum": 960,
                "maximum": 1600
              },
              "breakpoint.mobile": {
                "type": "integer",
                "minimum": 320,
                "maximum": 767
              },
              "breakpoint.desktop": {
                "type": "integer",
                "minimum": 768,
                "maximum": 1440
              },
              "grid.columns.desktop": {
                "type": "integer",
                "minimum": 1,
                "maximum": 6
              },
              "grid.columns.tablet": {
                "type": "integer",
                "minimum": 1,
                "maximum": 6
              },
              "grid.columns.mobile": {
                "type": "integer",
                "minimum": 1,
                "maximum": 6
              },
              "layout.direction": {
                "type": "string",
                "enum": [
                  "ltr",
                  "rtl"
                ]
              },
              "font.arabic.body": {
                "type": "string",
                "enum": [
                  "inherit",
                  "Cairo",
                  "Tajawal",
                  "Noto Sans Arabic"
                ]
              },
              "font.arabic.heading": {
                "type": "string",
                "enum": [
                  "inherit",
                  "Cairo",
                  "Tajawal",
                  "Noto Sans Arabic"
                ]
              }
            },
            "required": [
              "color.primary",
              "color.secondary",
              "color.background",
              "color.surface",
              "color.text",
              "color.muted",
              "color.success",
              "color.warning",
              "color.error",
              "font.body",
              "font.heading",
              "font.size-offset",
              "spacing.xs",
              "spacing.sm",
              "spacing.md",
              "spacing.lg",
              "spacing.xl",
              "radius.default",
              "border.width",
              "shadow.default",
              "container.width",
              "breakpoint.mobile",
              "breakpoint.desktop",
              "grid.columns.desktop",
              "grid.columns.tablet",
              "grid.columns.mobile",
              "layout.direction"
            ],
            "additionalProperties": false
          },
          "global": {
            "type": "object",
            "properties": {
              "top": {
                "type": "array",
                "maxItems": 30,
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ThemeSection_announcement"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_navigation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_banner"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_featured_products"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_recommendations"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_rich_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_detail"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_cart"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_editorial_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_presentation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_collection"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_showcase"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_catalog_filters"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_best_sellers"
                    }
                  ]
                }
              },
              "bottom": {
                "type": "array",
                "maxItems": 30,
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ThemeSection_announcement"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_navigation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_banner"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_featured_products"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_recommendations"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_rich_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_detail"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_cart"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_editorial_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_presentation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_collection"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_showcase"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_catalog_filters"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_best_sellers"
                    }
                  ]
                }
              }
            },
            "required": [
              "top",
              "bottom"
            ],
            "additionalProperties": false
          },
          "pages": {
            "type": "object",
            "properties": {
              "home": {
                "type": "array",
                "maxItems": 30,
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ThemeSection_announcement"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_navigation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_banner"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_featured_products"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_recommendations"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_rich_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_detail"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_cart"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_editorial_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_presentation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_collection"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_showcase"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_catalog_filters"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_best_sellers"
                    }
                  ]
                }
              },
              "category": {
                "type": "array",
                "maxItems": 30,
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ThemeSection_announcement"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_navigation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_banner"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_featured_products"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_recommendations"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_rich_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_detail"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_cart"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_editorial_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_presentation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_collection"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_showcase"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_catalog_filters"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_best_sellers"
                    }
                  ]
                }
              },
              "product": {
                "type": "array",
                "maxItems": 30,
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ThemeSection_announcement"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_navigation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_banner"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_featured_products"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_recommendations"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_rich_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_detail"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_cart"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_editorial_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_presentation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_collection"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_showcase"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_catalog_filters"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_best_sellers"
                    }
                  ]
                }
              },
              "search": {
                "type": "array",
                "maxItems": 30,
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ThemeSection_announcement"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_navigation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_banner"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_featured_products"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_recommendations"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_rich_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_detail"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_cart"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_editorial_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_presentation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_collection"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_showcase"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_catalog_filters"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_best_sellers"
                    }
                  ]
                }
              },
              "cart": {
                "type": "array",
                "maxItems": 30,
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ThemeSection_announcement"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_navigation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_banner"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_featured_products"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_recommendations"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_rich_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_grid"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_detail"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_cart"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_editorial_hero"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_image_text"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_presentation"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_product_collection"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_category_showcase"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_catalog_filters"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_header_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_footer_options"
                    },
                    {
                      "$ref": "#/components/schemas/ThemeSection_best_sellers"
                    }
                  ]
                }
              }
            },
            "required": [
              "home",
              "category",
              "product",
              "search",
              "cart"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "schema_version",
          "tokens",
          "global",
          "pages"
        ],
        "additionalProperties": false
      },
      "ThemeSection_announcement": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "announcement"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              }
            },
            "required": [
              "text"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_banner": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "banner"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "text": {
                "type": "string",
                "maxLength": 1000,
                "minLength": 0
              },
              "label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 1
              },
              "href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              }
            },
            "required": [
              "heading",
              "text",
              "label",
              "href"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "text": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_best_sellers": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "best_sellers"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "period": {
                "type": "string",
                "enum": [
                  "today",
                  "last_week",
                  "last_month",
                  "last_year"
                ]
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              }
            },
            "required": [
              "heading",
              "period",
              "limit"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_cart": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "cart"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_catalog_filters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "catalog_filters"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "layout": {
                "type": "string",
                "enum": [
                  "horizontal",
                  "vertical"
                ]
              }
            },
            "required": [
              "layout"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_category_grid": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "category_grid"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              }
            },
            "required": [
              "heading",
              "limit"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_category_showcase": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "category_showcase"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              }
            },
            "required": [
              "heading",
              "limit"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_editorial_hero": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "editorial_hero"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "text": {
                "type": "string",
                "maxLength": 1000,
                "minLength": 0
              },
              "image": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "alt": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 1
              },
              "href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "eyebrow": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              }
            },
            "required": [
              "heading",
              "text",
              "image",
              "alt",
              "label",
              "href",
              "eyebrow"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "text": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "alt": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "eyebrow": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_featured_products": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "featured_products"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              }
            },
            "required": [
              "heading",
              "limit"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_footer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "footer"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "maxLength": 500,
                "minLength": 1
              }
            },
            "required": [
              "text"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 500,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 500,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_footer_options": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "footer_options"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "style": {
                "type": "string",
                "enum": [
                  "inherit",
                  "standard",
                  "heritage"
                ]
              },
              "show_services": {
                "type": "string",
                "enum": [
                  "on",
                  "off"
                ]
              },
              "service_1": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "service_2": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "service_3": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "show_brand": {
                "type": "string",
                "enum": [
                  "on",
                  "off"
                ]
              },
              "copyright": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "newsletter_title": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "newsletter_text": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "newsletter_label": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "newsletter_href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "show_newsletter": {
                "type": "string",
                "enum": [
                  "off",
                  "on"
                ]
              },
              "column_1_heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "column_1_link_1_label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 0
              },
              "column_1_link_1_href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "column_1_link_2_label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 0
              },
              "column_1_link_2_href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "column_2_heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "column_2_link_1_label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 0
              },
              "column_2_link_1_href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "column_2_link_2_label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 0
              },
              "column_2_link_2_href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "column_3_heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "column_3_link_1_label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 0
              },
              "column_3_link_1_href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "column_3_link_2_label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 0
              },
              "column_3_link_2_href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "back_to_top_label": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "install_label": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "install_pending_label": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "install_ios_help": {
                "type": "string",
                "maxLength": 1000,
                "minLength": 0
              },
              "install_android_help": {
                "type": "string",
                "maxLength": 1000,
                "minLength": 0
              },
              "install_browser_help": {
                "type": "string",
                "maxLength": 1000,
                "minLength": 0
              },
              "install_connection_notice": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              }
            },
            "required": [
              "style",
              "show_services",
              "service_1",
              "service_2",
              "service_3",
              "show_brand",
              "copyright",
              "newsletter_title",
              "newsletter_text",
              "newsletter_label",
              "newsletter_href",
              "show_newsletter",
              "column_1_heading",
              "column_1_link_1_label",
              "column_1_link_1_href",
              "column_1_link_2_label",
              "column_1_link_2_href",
              "column_2_heading",
              "column_2_link_1_label",
              "column_2_link_1_href",
              "column_2_link_2_label",
              "column_2_link_2_href",
              "column_3_heading",
              "column_3_link_1_label",
              "column_3_link_1_href",
              "column_3_link_2_label",
              "column_3_link_2_href"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "service_1": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "service_2": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "service_3": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "copyright": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "newsletter_title": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "newsletter_text": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "newsletter_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_1_heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_1_link_1_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_1_link_2_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_2_heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_2_link_1_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_2_link_2_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_3_heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_3_link_1_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "column_3_link_2_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "back_to_top_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "install_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "install_pending_label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "install_ios_help": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "install_android_help": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "install_browser_help": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "install_connection_notice": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_header": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "header"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "brand": {
                "type": "string",
                "maxLength": 80,
                "minLength": 1
              }
            },
            "required": [
              "brand"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "brand": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_header_options": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "header_options"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "sticky": {
                "type": "string",
                "enum": [
                  "off",
                  "on"
                ]
              },
              "alt": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "logo_width": {
                "type": "integer",
                "minimum": 60,
                "maximum": 280
              },
              "show_assistant": {
                "type": "string",
                "enum": [
                  "on",
                  "off"
                ]
              },
              "show_location": {
                "type": "string",
                "enum": [
                  "on",
                  "off"
                ]
              },
              "image": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "cart_display": {
                "type": "string",
                "enum": [
                  "sidebar_and_page",
                  "page_only"
                ]
              }
            },
            "required": [
              "sticky",
              "alt",
              "logo_width",
              "show_assistant",
              "show_location",
              "image",
              "cart_display"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "alt": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_hero": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "hero"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "text": {
                "type": "string",
                "maxLength": 1000,
                "minLength": 0
              },
              "image": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "alt": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 1
              },
              "href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              }
            },
            "required": [
              "heading",
              "text",
              "image",
              "alt",
              "label",
              "href"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "text": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "alt": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_image": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "image"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "image": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "alt": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              }
            },
            "required": [
              "image",
              "alt"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "alt": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_image_text": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "image_text"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "text": {
                "type": "string",
                "maxLength": 1000,
                "minLength": 0
              },
              "image": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "alt": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "label": {
                "type": "string",
                "maxLength": 80,
                "minLength": 1
              },
              "href": {
                "type": "string",
                "maxLength": 2000,
                "minLength": 0
              },
              "eyebrow": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "image_side": {
                "type": "string",
                "enum": [
                  "left",
                  "right"
                ]
              }
            },
            "required": [
              "heading",
              "text",
              "image",
              "alt",
              "label",
              "href",
              "eyebrow",
              "image_side"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "text": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 1000,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "alt": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "label": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "eyebrow": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_navigation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "navigation"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_presentation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "presentation"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "style": {
                "type": "string",
                "enum": [
                  "standard",
                  "editorial",
                  "heritage",
                  "showcase"
                ]
              }
            },
            "required": [
              "style"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_product_collection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "product_collection"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              },
              "query": {
                "type": "string",
                "maxLength": 200,
                "minLength": 0
              },
              "category": {
                "type": "string",
                "maxLength": 100,
                "minLength": 0
              }
            },
            "required": [
              "heading",
              "limit",
              "query",
              "category"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "category": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 100,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 100,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_product_detail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "product_detail"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_product_grid": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "product_grid"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {},
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_recommendations": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "recommendations"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 12
              }
            },
            "required": [
              "heading",
              "limit"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "ThemeSection_rich_text": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80
          },
          "component": {
            "type": "string",
            "enum": [
              "rich_text"
            ]
          },
          "version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "settings": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "text": {
                "type": "string",
                "maxLength": 5000,
                "minLength": 0
              }
            },
            "required": [
              "heading",
              "text"
            ],
            "additionalProperties": false
          },
          "translations": {
            "type": "object",
            "maxProperties": 32,
            "additionalProperties": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 200,
                      "minLength": 1
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                },
                "text": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string",
                      "maxLength": 5000,
                      "minLength": 0
                    },
                    "value": {
                      "type": "string",
                      "maxLength": 5000,
                      "minLength": 0
                    }
                  },
                  "required": [
                    "source",
                    "value"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "description": "Canonical language[-Script][-REGION] locale keys. Plain-text overrides with reviewed source snapshots; source changes require review before publication."
          }
        },
        "required": [
          "id",
          "component",
          "version",
          "enabled",
          "settings"
        ],
        "additionalProperties": false
      },
      "Verify": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        },
        "required": [
          "identifier",
          "token"
        ],
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "customerBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Customer access token issued by this storefront's sign-in flow. No public merchant API keys are currently documented."
      },
      "customerRefresh": {
        "type": "apiKey",
        "in": "cookie",
        "name": "customer_refresh",
        "description": "HttpOnly storefront refresh cookie managed by the browser. It is not a token to paste into documentation."
      },
      "inboxGuest": {
        "type": "apiKey",
        "in": "cookie",
        "name": "inbox_guest",
        "description": "Opaque HttpOnly inbox cookie issued by GET /v1/notifications. It persists read history for public guest announcements in the issuing installation; it never grants access to personal customer messages."
      },
      "guestCart": {
        "type": "apiKey",
        "in": "cookie",
        "name": "guest_cart",
        "description": "Opaque HttpOnly guest cart cookie issued by POST /v1/cart. Treat it as a credential; never share it."
      },
      "supportGuest": {
        "type": "apiKey",
        "in": "cookie",
        "name": "support_guest",
        "description": "HttpOnly guest support cookie issued by POST /v1/support/session. It is separate from the guest cart cookie; retain it only for the issuing installation."
      }
    }
  }
}
