{
  "openapi": "3.1.1",
  "info": {
    "title": "TripStub API",
    "description": "# TripStub API\n\nThe complete REST surface for the TripStub booking platform — used by the\noperator admin app, the public marketplace, and any third-party integration\nthat wants to read or write inventory through it.\n\n## Authentication\n\nMost endpoints require a JWT bearer token issued by `POST /api/auth/login`,\n`POST /api/auth/register`, or `POST /api/auth/social/{provider}`. Send it as\n`Authorization: Bearer <token>`.\n\nTokens are short-lived. Pair every access token with the matching refresh\ntoken returned in the same response and rotate via `POST /api/auth/refresh`\nbefore the access token expires. Refresh tokens are single-use; reusing a\nrotated token revokes the entire session as a compromise signal.\n\n## Workspaces\n\nEvery authenticated request is scoped to one workspace. The token determines\nthe workspace, and the API guarantees you can only see and modify data\nbelonging to it. To work across workspaces, switch sessions.\n\n## Permissions\n\nWorkspaces have an owner plus zero or more members. Members are granted\nbundles of permissions through roles. The token carries the resolved\npermission set; endpoints respond `403 Forbidden` when a required permission\nis missing.\n\n## Idempotency\n\nMutating endpoints (`POST`, `PUT`, `PATCH`, `DELETE`) accept an\n`Idempotency-Key` header — any client-chosen string up to 128 characters.\nRepeating a request with the same key returns the original response verbatim,\nso it's safe to retry on network failure. Reusing a key with a different\nrequest body returns `409 Conflict`.\n\n## Errors\n\nErrors follow [RFC 7807 Problem Details](https://datatracker.ietf.org/doc/html/rfc7807):\n\n```json\n{\n  \"type\": \"https://tools.ietf.org/html/rfc7231#section-6.5.1\",\n  \"title\": \"InvalidInput\",\n  \"status\": 400,\n  \"detail\": \"Tenant slug is required (≤64 chars).\"\n}\n```\n\nThe `title` is a short stable code suitable for client-side branching; the\n`detail` is human-readable copy that may change without notice.\n\n## Rate limits\n\nPublic endpoints (contact form, anonymous SEO routes) are rate-limited per\nclient IP. Authenticated endpoints aren't currently rate-limited but may be\nin the future; clients should handle `429 Too Many Requests` with a\n`Retry-After` header.\n\n## Versioning\n\nOne stable major version (`v1`). Breaking changes ship under a new major;\nthe previous version is supported for at least 12 months past the new major's\nrelease. Backwards-compatible additions (new endpoints, new optional fields)\nship into `v1` continuously.",
    "contact": {
      "name": "TripStub Support",
      "url": "https://tripstub.com/contact",
      "email": "hello@tripstub.com"
    },
    "license": {
      "name": "Proprietary — TripStub Terms of Service",
      "url": "https://tripstub.com/about"
    },
    "version": "v1"
  },
  "servers": [
    {
      "url": "http://localhost:5046",
      "description": "Local development"
    },
    {
      "url": "https://api.tripstub.com",
      "description": "Production (planned)"
    }
  ],
  "paths": {
    "/api/wristbands": {
      "get": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/issue": {
      "post": {
        "tags": [
          "Wristbands"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IssueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/{id}": {
      "get": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/{id}/transactions": {
      "get": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/scan": {
      "post": {
        "tags": [
          "Wristbands"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ScanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/{id}/spend": {
      "post": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SpendRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SpendRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SpendRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/{id}/load": {
      "post": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoadRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LoadRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LoadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/{id}/deactivate": {
      "post": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/DeactivateRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/DeactivateRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/DeactivateRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/reconcile": {
      "get": {
        "tags": [
          "Wristbands"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/readers": {
      "get": {
        "tags": [
          "Wristbands"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Wristbands"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReaderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReaderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReaderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/readers/{id}/rotate-token": {
      "post": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/readers/{id}/deactivate": {
      "post": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/wristbands/readers/{id}/heartbeat": {
      "post": {
        "tags": [
          "Wristbands"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/HeartbeatRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/HeartbeatRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/HeartbeatRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhooks/square": {
      "post": {
        "tags": [
          "SquareWebhook"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhooks/stripe/{tenantSlug}": {
      "post": {
        "tags": [
          "StripeWebhook"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhooks/twilio/{tenantSlug}/inbound": {
      "post": {
        "tags": [
          "TwilioWebhook"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "form": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValuePairOfstringAndStringValues"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhooks/twilio/{tenantSlug}/status": {
      "post": {
        "tags": [
          "TwilioWebhook"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "form": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/KeyValuePairOfstringAndStringValues"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhook-events": {
      "get": {
        "tags": [
          "WebhookEvents"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/WebhookEventStatus"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEventPage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEventPage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEventPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/webhook-events/{id}/retry": {
      "post": {
        "tags": [
          "WebhookEvents"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEventDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEventDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEventDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/webhook-subscriptions": {
      "get": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookSubscriptionDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookSubscriptionDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookSubscriptionDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookSubscriptionBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookSubscriptionBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookSubscriptionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionCreatedDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionCreatedDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionCreatedDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/webhook-subscriptions/events": {
      "get": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/webhook-subscriptions/{id}": {
      "put": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookSubscriptionBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookSubscriptionBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookSubscriptionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhook-subscriptions/{id}/rotate-secret": {
      "post": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RotateSecretDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateSecretDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateSecretDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/webhook-subscriptions/{id}/deliveries": {
      "get": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookDeliveryDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookDeliveryDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookDeliveryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/webhook-subscriptions/{id}/deliveries/{deliveryId}/retry": {
      "post": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhook-subscriptions/{id}/test": {
      "post": {
        "tags": [
          "WebhookSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhooks/easypost/{tenantSlug}": {
      "post": {
        "tags": [
          "EasyPostWebhook"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/webhooks/shippo/{tenantSlug}": {
      "post": {
        "tags": [
          "ShippoWebhook"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/waivers/{token}": {
      "get": {
        "tags": [
          "PublicWaiver"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PublicWaiverResolveDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicWaiverResolveDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicWaiverResolveDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/waivers/{token}/sign": {
      "post": {
        "tags": [
          "PublicWaiver"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicWaiverSignBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicWaiverSignBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicWaiverSignBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PublicWaiverSignedDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicWaiverSignedDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicWaiverSignedDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/waivers/signatures": {
      "get": {
        "tags": [
          "WaiverSignatures"
        ],
        "parameters": [
          {
            "name": "reservationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "templateId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signerEmail",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signedFrom",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "signedTo",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignaturePage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignaturePage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignaturePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/waivers/signatures/{id}": {
      "get": {
        "tags": [
          "WaiverSignatures"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignatureDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignatureDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignatureDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/waivers/signatures/{id}/pdf": {
      "get": {
        "tags": [
          "WaiverSignatures"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/waivers/signatures/{id}/resend-link": {
      "post": {
        "tags": [
          "WaiverSignatures"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignatureDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignatureDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverSignatureDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/waivers/templates": {
      "get": {
        "tags": [
          "WaiverTemplates"
        ],
        "parameters": [
          {
            "name": "includeInactive",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WaiverTemplateDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WaiverTemplateDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WaiverTemplateDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "WaiverTemplates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWaiverTemplateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWaiverTemplateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWaiverTemplateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/waivers/templates/{id}": {
      "get": {
        "tags": [
          "WaiverTemplates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "WaiverTemplates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWaiverTemplateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWaiverTemplateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWaiverTemplateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/waivers/templates/{id}/revise": {
      "post": {
        "tags": [
          "WaiverTemplates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviseWaiverTemplateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviseWaiverTemplateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReviseWaiverTemplateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaiverTemplateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/vouchers/redeem": {
      "post": {
        "tags": [
          "VoucherRedemption"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherRedeemBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherRedeemBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherRedeemBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherRedeemResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherRedeemResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherRedeemResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/vouchers": {
      "get": {
        "tags": [
          "VouchersAdmin"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VoucherDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VoucherDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VoucherDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "VouchersAdmin"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueVoucherBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueVoucherBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IssueVoucherBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/vouchers/{id}": {
      "get": {
        "tags": [
          "VouchersAdmin"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/vouchers/by-code/{code}": {
      "get": {
        "tags": [
          "VouchersAdmin"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/vouchers/{id}/redeem": {
      "post": {
        "tags": [
          "VouchersAdmin"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemVoucherBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemVoucherBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemVoucherBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherRedemptionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherRedemptionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherRedemptionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/vouchers/{id}/cancel": {
      "post": {
        "tags": [
          "VouchersAdmin"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/VoidVoucherBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/VoidVoucherBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/VoidVoucherBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/vouchers/{id}/void": {
      "post": {
        "tags": [
          "VouchersAdmin"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/VoidVoucherBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/VoidVoucherBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/VoidVoucherBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/vouchers/{id}/adjust": {
      "post": {
        "tags": [
          "VouchersAdmin"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustVoucherBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustVoucherBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustVoucherBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/transfer/availability": {
      "get": {
        "tags": [
          "TransferBooking"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "routeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferAvailabilityItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferAvailabilityItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferAvailabilityItem"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/transfer/hold": {
      "post": {
        "tags": [
          "TransferBooking"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferHoldBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferHoldBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TransferHoldBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TransferHoldResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferHoldResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferHoldResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/transfer/slots/{slotId}/manifest": {
      "get": {
        "tags": [
          "TransferBooking"
        ],
        "parameters": [
          {
            "name": "slotId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TransferManifestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferManifestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferManifestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/transfer/routes": {
      "get": {
        "tags": [
          "TransferRoutes"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferRouteDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferRouteDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferRouteDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TransferRoutes"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferRouteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferRouteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TransferRouteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TransferRouteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferRouteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferRouteDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/transfer/routes/{routeId}": {
      "put": {
        "tags": [
          "TransferRoutes"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferRouteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferRouteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TransferRouteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TransferRouteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferRouteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferRouteDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "TransferRoutes"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/transfer/routes/{routeId}/stops": {
      "get": {
        "tags": [
          "TransferStops"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferStopDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferStopDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferStopDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TransferStops"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferStopRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferStopRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TransferStopRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TransferStopDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferStopDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferStopDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/transfer/routes/{routeId}/stops/{stopId}": {
      "put": {
        "tags": [
          "TransferStops"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "stopId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferStopRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferStopRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TransferStopRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TransferStopDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferStopDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferStopDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "TransferStops"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "stopId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/transfer/vehicle-classes": {
      "get": {
        "tags": [
          "VehicleClasses"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VehicleClassDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VehicleClassDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VehicleClassDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "VehicleClasses"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VehicleClassRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VehicleClassRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VehicleClassRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VehicleClassDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VehicleClassDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VehicleClassDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/transfer/vehicle-classes/{vehicleClassId}": {
      "put": {
        "tags": [
          "VehicleClasses"
        ],
        "parameters": [
          {
            "name": "vehicleClassId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VehicleClassRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VehicleClassRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VehicleClassRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VehicleClassDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VehicleClassDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VehicleClassDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "VehicleClasses"
        ],
        "parameters": [
          {
            "name": "vehicleClassId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/tenants/current/custom-domain": {
      "get": {
        "tags": [
          "CustomDomain"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CustomDomain"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomDomainPostBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomDomainPostBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomDomainPostBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/tenants/current/custom-domain/{domainId}": {
      "delete": {
        "tags": [
          "CustomDomain"
        ],
        "parameters": [
          {
            "name": "domainId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/tenants/current/custom-domain/{domainId}/verify": {
      "post": {
        "tags": [
          "CustomDomain"
        ],
        "parameters": [
          {
            "name": "domainId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/tenant-hierarchy/ancestors": {
      "get": {
        "tags": [
          "TenantHierarchy"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AncestorDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AncestorDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AncestorDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tenant-hierarchy/subtree": {
      "get": {
        "tags": [
          "TenantHierarchy"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SubtreeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubtreeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubtreeDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/tenant-hierarchy/visible-rate-plans": {
      "get": {
        "tags": [
          "TenantHierarchy"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InheritedRatePlanDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InheritedRatePlanDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InheritedRatePlanDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tenant-hierarchy/parent": {
      "put": {
        "tags": [
          "TenantHierarchy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetParentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetParentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetParentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SetParentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetParentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetParentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/tenants/current": {
      "get": {
        "tags": [
          "TenantSettings"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "TenantSettings"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantSettingsUpdate"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantSettingsUpdate"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TenantSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/tax-jurisdictions": {
      "get": {
        "tags": [
          "TaxJurisdictions"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaxJurisdictionDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaxJurisdictionDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaxJurisdictionDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TaxJurisdictions"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxJurisdictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxJurisdictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxJurisdictionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TaxJurisdictionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxJurisdictionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxJurisdictionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/tax-jurisdictions/{id}": {
      "put": {
        "tags": [
          "TaxJurisdictions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxJurisdictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxJurisdictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxJurisdictionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TaxJurisdictionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxJurisdictionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxJurisdictionDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "TaxJurisdictions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/tax-rules": {
      "get": {
        "tags": [
          "TaxRules"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaxRuleDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaxRuleDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaxRuleDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TaxRules"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/tax-rules/{id}": {
      "get": {
        "tags": [
          "TaxRules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "TaxRules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRuleDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "TaxRules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/tax-rules/{id}/preview": {
      "post": {
        "tags": [
          "TaxRules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TaxBreakdown"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxBreakdown"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxBreakdown"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/lookup-sso": {
      "post": {
        "tags": [
          "AuthSsoLookup"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SsoLookupBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SsoLookupBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SsoLookupBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/saml/sp/{tenantSlug}/metadata": {
      "get": {
        "tags": [
          "SamlSp"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/xml": { }
            }
          }
        }
      }
    },
    "/saml/sp/{tenantSlug}/login": {
      "get": {
        "tags": [
          "SamlSp"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "returnTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/saml/sp/{tenantSlug}/acs": {
      "post": {
        "tags": [
          "SamlSp"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "SAMLResponse": {
                        "type": "string"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "RelayState": {
                        "type": "string"
                      }
                    }
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/saml/sp/{tenantSlug}/slo": {
      "post": {
        "tags": [
          "SamlSp"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/tenant/sso/config": {
      "get": {
        "tags": [
          "TenantSsoConfig"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "TenantSsoConfig"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantSsoConfigUpsert"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantSsoConfigUpsert"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TenantSsoConfigUpsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "TenantSsoConfig"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/sms-campaigns": {
      "get": {
        "tags": [
          "SmsCampaigns"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsCampaignDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsCampaignDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsCampaignDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "SmsCampaigns"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCampaignBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCampaignBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCampaignBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sms-campaigns/{id}": {
      "get": {
        "tags": [
          "SmsCampaigns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "SmsCampaigns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCampaignBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCampaignBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCampaignBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SmsCampaigns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/sms-campaigns/{id}/start": {
      "post": {
        "tags": [
          "SmsCampaigns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sms-campaigns/{id}/cancel": {
      "post": {
        "tags": [
          "SmsCampaigns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsCampaignDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sms-campaigns/{id}/deliveries": {
      "get": {
        "tags": [
          "SmsCampaigns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsCampaignDeliveryDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsCampaignDeliveryDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsCampaignDeliveryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sms/messages": {
      "get": {
        "tags": [
          "SmsMessages"
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "purpose",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SmsPurpose"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SmsMessageStatus"
            }
          },
          {
            "name": "phone",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SmsMessagePage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsMessagePage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsMessagePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/sms/suppressions": {
      "get": {
        "tags": [
          "SmsMessages"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsSuppressionDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsSuppressionDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SmsSuppressionDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sms/suppressions/{id}": {
      "delete": {
        "tags": [
          "SmsMessages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/sms-account": {
      "get": {
        "tags": [
          "TenantSmsAccount"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantSmsAccountDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantSmsAccountDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantSmsAccountDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TenantSmsAccount"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertSmsAccountBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertSmsAccountBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertSmsAccountBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantSmsAccountDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantSmsAccountDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantSmsAccountDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "TenantSmsAccount"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/sms-account/test": {
      "post": {
        "tags": [
          "TenantSmsAccount"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSmsBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSmsBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TestSmsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TestSmsResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestSmsResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestSmsResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/shipping/zones": {
      "get": {
        "tags": [
          "ShippingZones"
        ],
        "parameters": [
          {
            "name": "includeArchived",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShippingZone"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShippingZone"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShippingZone"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ShippingZones"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShippingZoneRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShippingZoneRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShippingZoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/shipping/zones/{id}": {
      "get": {
        "tags": [
          "ShippingZones"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "ShippingZones"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingZoneRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingZoneRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingZoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingZone"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ShippingZones"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/shipping/zones/{id}/rates": {
      "get": {
        "tags": [
          "ShippingZones"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShippingRate"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShippingRate"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShippingRate"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ShippingZones"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShippingRateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShippingRateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShippingRateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingRate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingRate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingRate"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/shipping/zones/{id}/rates/{rateId}": {
      "patch": {
        "tags": [
          "ShippingZones"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "rateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingRateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingRateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingRateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingRate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingRate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingRate"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ShippingZones"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "rateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/settings/modules": {
      "get": {
        "tags": [
          "Modules"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModuleDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModuleDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModuleDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/settings/modules/{key}": {
      "put": {
        "tags": [
          "Modules"
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetModuleBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetModuleBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetModuleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ModuleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModuleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModuleDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/settings/tip-policy": {
      "get": {
        "tags": [
          "TenantTipPolicy"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantTipPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantTipPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantTipPolicyDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "TenantTipPolicy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantTipPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantTipPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TenantTipPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantTipPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantTipPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantTipPolicyDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/seating/slots/{slotId}/seats": {
      "get": {
        "tags": [
          "SeatAvailability"
        ],
        "summary": "Returns the seat availability snapshot for a slot. Anonymous — guest seat picker\ncalls this before authentication. Returns an empty list when no SlotSeat rows\nexist for the slot (uninitialized seat map or GA-only slot).",
        "parameters": [
          {
            "name": "slotId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatAvailabilityItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatAvailabilityItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatAvailabilityItem"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/seating/hold": {
      "post": {
        "tags": [
          "SeatAvailability"
        ],
        "summary": "Atomically holds one or more seats for an authenticated user. Sorted-id conditional\nUPDATE per seat in a single transaction — any seat already taken returns 409.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatHoldBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatHoldBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SeatHoldBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatHoldResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatHoldResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatHoldResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/seating/map": {
      "get": {
        "tags": [
          "SeatMaps"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatMapDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatMapDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatMapDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "SeatMaps"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatMapRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatMapRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SeatMapRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatMapDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatMapDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatMapDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SeatMaps"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/seating/maps/{mapId}/zones": {
      "get": {
        "tags": [
          "SeatZones"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatZoneDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatZoneDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatZoneDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "SeatZones"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatZoneRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatZoneRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SeatZoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/seating/maps/{mapId}/zones/{zoneId}": {
      "get": {
        "tags": [
          "SeatZones"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "zoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "SeatZones"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "zoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatZoneRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatZoneRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SeatZoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatZoneDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SeatZones"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "zoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/seating/maps/{mapId}/seats": {
      "get": {
        "tags": [
          "Seats"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Seats"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SeatRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/seating/maps/{mapId}/seats/{seatId}": {
      "get": {
        "tags": [
          "Seats"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "seatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Seats"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "seatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SeatRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeatDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Seats"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "seatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/seating/maps/{mapId}/seats/bulk": {
      "post": {
        "tags": [
          "Seats"
        ],
        "parameters": [
          {
            "name": "mapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatBulkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SeatBulkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SeatBulkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SeatDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ReviewStatus"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "rating",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/summary/{productId}": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewSummary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewSummary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewSummary"
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/{id}/approve": {
      "post": {
        "tags": [
          "Reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/{id}/reject": {
      "post": {
        "tags": [
          "Reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/{id}/hide": {
      "post": {
        "tags": [
          "Reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/{id}/respond": {
      "post": {
        "tags": [
          "Reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewResponseBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewResponseBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewResponseBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/reviews/{id}": {
      "delete": {
        "tags": [
          "Reviews"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/exports/bookings.csv": {
      "get": {
        "tags": [
          "Exports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/exports/payments.csv": {
      "get": {
        "tags": [
          "Exports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/exports/refunds.csv": {
      "get": {
        "tags": [
          "Exports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reports/pricing/revenue-by-rate-plan": {
      "get": {
        "tags": [
          "PricingReports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RevenueByRatePlanRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RevenueByRatePlanRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RevenueByRatePlanRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reports/pricing/discount-uptake": {
      "get": {
        "tags": [
          "PricingReports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiscountUptakeRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiscountUptakeRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiscountUptakeRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reports/pricing/modifier-impact": {
      "get": {
        "tags": [
          "PricingReports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModifierImpactRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModifierImpactRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModifierImpactRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reports/revenue": {
      "get": {
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RevenueReport"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevenueReport"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevenueReport"
                }
              }
            }
          }
        }
      }
    },
    "/api/reports/occupancy": {
      "get": {
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OccupancyReport"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupancyReport"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccupancyReport"
                }
              }
            }
          }
        }
      }
    },
    "/api/reports/top-products": {
      "get": {
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductRevenueRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductRevenueRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductRevenueRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/rental/availability": {
      "get": {
        "tags": [
          "RentalBooking"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "unitTypeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "startsAt",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endsAt",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RentalAvailabilityResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalAvailabilityResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalAvailabilityResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/rental/hold": {
      "post": {
        "tags": [
          "RentalBooking"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalHoldRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalHoldRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RentalHoldRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RentalHoldResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalHoldResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalHoldResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/rental/hold/{holdId}/confirm": {
      "post": {
        "tags": [
          "RentalBooking"
        ],
        "parameters": [
          {
            "name": "holdId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/rental/reservations/{rentalReservationId}/pickup": {
      "post": {
        "tags": [
          "RentalBooking"
        ],
        "parameters": [
          {
            "name": "rentalReservationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PickupBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/rental/reservations/{rentalReservationId}/return": {
      "post": {
        "tags": [
          "RentalBooking"
        ],
        "parameters": [
          {
            "name": "rentalReservationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReturnBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReturnBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReturnBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/rental/unit-types": {
      "get": {
        "tags": [
          "RentalUnitTypes"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitTypeDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitTypeDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitTypeDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "RentalUnitTypes"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitTypeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitTypeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitTypeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitTypeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitTypeDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rental/unit-types/{typeId}": {
      "put": {
        "tags": [
          "RentalUnitTypes"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "typeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitTypeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitTypeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitTypeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitTypeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitTypeDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "RentalUnitTypes"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "typeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/rental/unit-types/{typeId}/units": {
      "get": {
        "tags": [
          "RentalUnits"
        ],
        "parameters": [
          {
            "name": "typeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "RentalUnits"
        ],
        "parameters": [
          {
            "name": "typeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/rental/unit-types/{typeId}/units/bulk": {
      "post": {
        "tags": [
          "RentalUnits"
        ],
        "parameters": [
          {
            "name": "typeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitBulkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitBulkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitBulkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RentalUnitDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/rental/unit-types/{typeId}/units/{unitId}": {
      "put": {
        "tags": [
          "RentalUnits"
        ],
        "parameters": [
          {
            "name": "typeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "unitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RentalUnitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalUnitDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "RentalUnits"
        ],
        "parameters": [
          {
            "name": "typeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "unitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/badge-login": {
      "post": {
        "tags": [
          "BadgeLogin"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KioskBadgeLoginBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KioskBadgeLoginBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KioskBadgeLoginBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/KioskBadgeLoginResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KioskBadgeLoginResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/KioskBadgeLoginResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/branding": {
      "get": {
        "tags": [
          "Branding"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/rss.xml": {
      "get": {
        "tags": [
          "ChangelogRss"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/render/{slug}": {
      "get": {
        "tags": [
          "CmsRender"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "themeDraft",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/theme-assets/{path}": {
      "get": {
        "tags": [
          "CmsThemeAsset"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "v",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/contact": {
      "post": {
        "tags": [
          "Contact"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactSubmitRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactSubmitRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ContactSubmitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/crew/login": {
      "post": {
        "tags": [
          "CrewPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMagicLinkBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMagicLinkBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMagicLinkBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/crew/token/{magicToken}": {
      "get": {
        "tags": [
          "CrewPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "magicToken",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewPortalTokenDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewPortalTokenDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewPortalTokenDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/login": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MagicLinkBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MagicLinkBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MagicLinkBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/token/{magicToken}": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "magicToken",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/profile": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalProfileDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalProfileDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalProfileDto"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalProfileUpdateBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalProfileUpdateBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalProfileUpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalProfileDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalProfileDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalProfileDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/bookings": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalBookingDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalBookingDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalBookingDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/orders": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalOrderRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalOrderRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalOrderRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/emails": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "List the active session's customer emails. Filters: optional\n    from/to (CreatedAt window) + kind (NotificationKind enum string).\n    Pagination: 1-based page, max 100 per page. Body is intentionally\n    omitted from the list shape — the per-row detail endpoint returns\n    the rendered HTML on demand.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalEmailListDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalEmailListDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalEmailListDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/emails/{id}": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Fetch the rendered HTML body for one email. 404 when the row\n    doesn't belong to the active session's customer (don't confirm row\n    existence to other customers). Single-use tokens + PAN-shaped digit\n    runs are redacted in the returned HTML before it leaves the\n    server.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalEmailDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalEmailDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalEmailDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/logout": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/login/password": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Phase E2 — password login on the customer portal. Mints a\n    portal session identical in shape to the magic-link redemption.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordLoginBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordLoginBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordLoginBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/register": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Self-serve customer registration. Creates a Customer with\n    email + password (hashed) and mints a portal session in one shot —\n    no separate \"now log in\" round-trip. Returns 409 with a clear\n    message when the email is already taken (the registration surface\n    is OK to leak existence; the natural next step is \"log in instead\").",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalRegisterBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalRegisterBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalRegisterBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/password-reset/request": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Phase E2 — request a password-reset email. Always 202;\n    silent on no-match per spec §3.4.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/password-reset/complete": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Phase E2 — complete a password reset by redeeming the token.\n    On 200 returns a fresh portal session so the SPA can drop the user\n    straight into the bookings page.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetCompleteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetCompleteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetCompleteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/oauth/{provider}/start": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Phase E3 — start an OAuth sign-in. 302s the customer to\n    Google with a PKCE-protected state cookie. The cookie carries the\n    PKCE verifier, the opaque state, the tenant slug, and the original\n    `redirectTo`. Returns 400 when the provider isn't configured.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "redirectTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/oauth/{provider}/callback": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Phase E3 — OAuth callback. Validates state, exchanges the\n     code, verifies the id_token, then either 302s with a fresh session\n     in the query (logged-in path) OR 302s to the \"complete registration\"\n     URL (existing email but no OAuth identity — spec §4.4).\n\n     NOT rate-limited at our layer — Google decides which callbacks are\n     valid. The state cookie + token-endpoint verification are the\n     security gates.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "error",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/set-password": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Phase E2 — set or change the password on the customer\n    behind the active portal session. Used by the storefront UI when\n    a magic-link customer wants to graduate to a password, AND by the\n    \"change password\" flow for an already-password-bearing customer.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalSetPasswordBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalSetPasswordBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalSetPasswordBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/external-logins": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Phase E3 — list the OAuth providers linked to the\n    authenticated customer. Returns an empty array when nothing is\n    linked. The opaque per-provider Subject is intentionally not\n    surfaced — the SPA only needs provider name + the email captured\n    at link time + timestamps for the \"Linked accounts\" UI.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerExternalLoginInfo"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerExternalLoginInfo"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerExternalLoginInfo"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/external-logins/{provider}": {
      "delete": {
        "tags": [
          "CustomerPortal"
        ],
        "summary": "Phase E3 — unlink the given OAuth provider from the\n    authenticated customer. Idempotent: removing a provider that\n    isn't linked is a 204 (no error surface in the SPA). After this,\n    the next OAuth round-trip with the same provider will treat the\n    customer as a fresh sign-in (re-create-on-first-sign-in).",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/mfa/enroll/start": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MfaEnrollStartResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MfaEnrollStartResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MfaEnrollStartResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/mfa/enroll/verify": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaCodeBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaCodeBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MfaCodeBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/mfa/challenge/start": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordLoginBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordLoginBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordLoginBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MfaChallengeStartResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MfaChallengeStartResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MfaChallengeStartResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/mfa/challenge/verify": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaChallengeVerifyBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaChallengeVerifyBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MfaChallengeVerifyBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSessionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/mfa": {
      "delete": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaDisableBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaDisableBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MfaDisableBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/bookings/{bookingRef}/cancel": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/bookings/{bookingRef}/addons": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalAddOnPurchaseBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalAddOnPurchaseBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalAddOnPurchaseBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/bookings/{bookingRef}/reschedule": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalRescheduleBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalRescheduleBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalRescheduleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/account/promote": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPromoteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPromoteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPromoteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalPromoteResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalPromoteResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalPromoteResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/payment-methods": {
      "get": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedPaymentMethodDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedPaymentMethodDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedPaymentMethodDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/payment-methods/setup-intent": {
      "post": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentBootstrapDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentBootstrapDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentBootstrapDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/payment-methods/{paymentMethodId}": {
      "delete": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentMethodId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/payment-methods/{paymentMethodId}/default": {
      "patch": {
        "tags": [
          "CustomerPortal"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentMethodId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/feeds/google-things-to-do/{tenantSlug}.xml": {
      "get": {
        "tags": [
          "GoogleThingsToDoFeed"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/xml": { }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/kiosk/roster": {
      "get": {
        "tags": [
          "Kiosk"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KioskRosterRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KioskRosterRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KioskRosterRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/kiosk/punch": {
      "post": {
        "tags": [
          "Kiosk"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KioskPunchBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KioskPunchBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KioskPunchBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/KioskPunchResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KioskPunchResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/KioskPunchResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/kiosk/badge-login": {
      "post": {
        "tags": [
          "Kiosk"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KioskBadgeLoginBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/KioskBadgeLoginBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/KioskBadgeLoginBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/KioskBadgeLoginResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KioskBadgeLoginResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/KioskBadgeLoginResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/loyalty/account": {
      "get": {
        "tags": [
          "LoyaltyPortal"
        ],
        "summary": "Phase 4 / Slice 7 — current customer's account summary: balance,\nlifetime earned, tier + benefits, next-tier threshold + progress.\nReturns 404 when the tenant has no Published program OR\n`Features:Loyalty` is off.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/loyalty/ledger": {
      "get": {
        "tags": [
          "LoyaltyPortal"
        ],
        "summary": "Phase 4 / Slice 7 — paginated ledger history for the signed-in\ncustomer. Cursor-based (descending occurred-at timestamp); each\ncursor token is the row's `CreatedAt` ISO-8601 string +\nrow-id pair so two rows at the same instant don't dedupe.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/loyalty/rewards": {
      "get": {
        "tags": [
          "LoyaltyPortal"
        ],
        "summary": "Phase 4 / Slice 7 — rewards the customer can redeem RIGHT NOW.\nServer-side filter: `IsActive=true`, program is Published,\ncustomer-balance &gt;= PointsCost, tier-gate satisfied\n(`MinimumTierId` per Slice 4). Sort by PointsCost ascending.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/loyalty/rewards/all": {
      "get": {
        "tags": [
          "LoyaltyPortal"
        ],
        "summary": "Phase 4 / Slice 7 — full reward catalog for the browse view. Each\nrow carries a `customerEligibility` sub-object describing why\n(or why not) the customer can redeem it, so the UI can render\ngreyed-out cards with tooltips without a second round-trip.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/loyalty/rewards/{rewardId}/redeem": {
      "post": {
        "tags": [
          "LoyaltyPortal"
        ],
        "summary": "Phase 4 / Slice 7 — initiates a redemption against an open cart by\nforwarding to the existing Slice 4 cart-attachment plumbing.",
        "description": "    This endpoint does NOT debit points or mint vouchers in v1; the\nactual debit happens at order-paid time via the existing\nTask&lt;LedgerResult&gt; ILoyaltyLedgerService.RedeemAsync(Guid tenantId, Guid customerId, RedeemRequest request, CancellationToken ct) path. We only\nreserve the redemption on the cart by writing\nLoyaltyRedemptionAttachment — the same write the existing\nPOST /cart/loyalty-redemption performs. The catalog-page\nendpoint is kept distinct so the SPA can call it without having to\nknow about the Cart-Session header (the cart-controller\npath requires it; this one looks up the cart by customer ownership\ninstead and rejects if none is supplied).\n    Returns 400 when no targetCartId is supplied — wallet-style\nstandalone redemptions are deferred (per slice scope: REQUIRE the\ncart attachment path; if no cart, the UI surfaces a toast).",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rewardId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/RedeemRewardBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/RedeemRewardBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/RedeemRewardBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/newsletter": {
      "post": {
        "tags": [
          "Newsletter"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewsletterSubscribeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NewsletterSubscribeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NewsletterSubscribeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/newsletter/unsubscribe": {
      "post": {
        "tags": [
          "Newsletter"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewsletterUnsubscribeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NewsletterUnsubscribeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NewsletterUnsubscribeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/addresses": {
      "get": {
        "tags": [
          "PortalAddresses"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "PortalAddresses"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerAddressBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerAddressBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerAddressBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/addresses/{addressId}": {
      "get": {
        "tags": [
          "PortalAddresses"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "addressId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "PortalAddresses"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "addressId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerAddressBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerAddressBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerAddressBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "PortalAddresses"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "addressId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/privacy/request": {
      "post": {
        "tags": [
          "PortalPrivacy"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPrivacyRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPrivacyRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPrivacyRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/returns/eligibility": {
      "get": {
        "tags": [
          "PortalReturns"
        ],
        "summary": "Customer-facing eligibility check for a specific order. The SPA\nuses this on the order detail page to decide whether to show the\n\"Request return\" button + on the request-return page to render\nthe per-line returnable-quantity form.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderRef",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/returns": {
      "post": {
        "tags": [
          "PortalReturns"
        ],
        "summary": "Customer-initiated RMA creation. Body matches the operator surface\n(Task 8) one-for-one so the frontend submission shape is portable.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreatePortalReturnBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreatePortalReturnBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreatePortalReturnBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "PortalReturns"
        ],
        "summary": "Customer's list of their own RMAs. Drives the\n`AccountReturnsListBlock` on the portal home.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/returns/{rmaNumber}": {
      "get": {
        "tags": [
          "PortalReturns"
        ],
        "summary": "Customer-facing detail. Looked up by `RmaNumber` so deep-link\nURLs don't expose Guid internals; the cross-customer guard rejects\nany RMA whose `CustomerId` doesn't match the session.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rmaNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/returns/{rmaNumber}/cancel": {
      "post": {
        "tags": [
          "PortalReturns"
        ],
        "summary": "Customer-side cancel from ReturnOrderStatus.Requested.\nService-side state-machine guard rejects cancels once the package\nis in transit (409); we surface that conflict so the SPA can refresh\nits status badge.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rmaNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelPortalReturnBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelPortalReturnBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelPortalReturnBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/returns/{rmaNumber}/mark-shipped": {
      "post": {
        "tags": [
          "PortalReturns"
        ],
        "summary": "Customer-pays \"I shipped it\" tracking entry. The customer self-\nreports the tracking number + carrier name; the service transitions\nthe RMA from ReturnOrderStatus.Approved /\nReturnOrderStatus.LabelIssued to\nReturnOrderStatus.Shipped.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rmaNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/MarkShippedBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/MarkShippedBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/MarkShippedBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/account": {
      "get": {
        "tags": [
          "PublicAccountCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/analytics/events": {
      "post": {
        "tags": [
          "PublicAnalytics"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AnalyticsEventBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AnalyticsEventBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AnalyticsEventBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/analytics/events/batch": {
      "post": {
        "tags": [
          "PublicAnalytics"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AnalyticsBatchBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AnalyticsBatchBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AnalyticsBatchBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/confirmation": {
      "get": {
        "tags": [
          "PublicBookingCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/manage": {
      "get": {
        "tags": [
          "PublicBookingCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/products/{slug}/availability": {
      "get": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/quotes": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "displayCurrency",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicQuoteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicQuoteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicQuoteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bundle-quotes": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicBundleQuoteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicBundleQuoteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicBundleQuoteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/holds": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicHoldBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicHoldBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicHoldBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/holds/{holdId}/checkout": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "holdId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCheckoutBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCheckoutBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCheckoutBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bookings/{reservationId}/payments/square": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reservationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SquarePaymentBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SquarePaymentBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SquarePaymentBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bookings/{bookingRef}": {
      "get": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bookings/{bookingRef}/refund-quote": {
      "get": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PublicRefundQuoteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicRefundQuoteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicRefundQuoteDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bookings/{bookingRef}/cancel": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCancelBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCancelBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCancelBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bookings/{bookingRef}/customer-info": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCustomerInfoBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCustomerInfoBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicCustomerInfoBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bookings/{bookingRef}/addons": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAddOnPurchaseBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAddOnPurchaseBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAddOnPurchaseBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bookings/{bookingRef}/reschedule": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicRescheduleBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicRescheduleBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicRescheduleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/bookings/{bookingRef}/pay-balance": {
      "post": {
        "tags": [
          "PublicBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPayBalanceBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPayBalanceBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPayBalanceBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/buyouts/accept/{token}": {
      "get": {
        "tags": [
          "PublicBuyout"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutAcceptQuoteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutAcceptQuoteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutAcceptQuoteDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/buyouts/accept/{token}/deposit-intent": {
      "post": {
        "tags": [
          "PublicBuyout"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutDepositIntentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutDepositIntentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutDepositIntentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/cart": {
      "get": {
        "tags": [
          "PublicCartCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cart/payment-config": {
      "get": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cart/lines": {
      "post": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddLineRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddLineRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddLineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cart/lines/{lineId}": {
      "patch": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLineQuantityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLineQuantityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLineQuantityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cart/quote": {
      "post": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cart/shipping-options": {
      "post": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShippingOptionsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ShippingOptionsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ShippingOptionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cart/shipping-options/select": {
      "post": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SelectShippingOptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SelectShippingOptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SelectShippingOptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cart/loyalty-redemption": {
      "post": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachLoyaltyRedemptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachLoyaltyRedemptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachLoyaltyRedemptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cart/checkout": {
      "post": {
        "tags": [
          "PublicCart"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/checkout": {
      "get": {
        "tags": [
          "PublicCheckoutCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productSlug",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/home": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/pages": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/pages/by-path": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "path",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/pages/{slug}": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/preview/{token}": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/menus/{code}": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/legal": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/legal/{kind}": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/settings": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/blocks/published": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/global-slots": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/blog": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/blog/{blogSlug}": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "blogSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 10
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "author",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/blog/{blogSlug}/{postSlug}": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "blogSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "postSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/blog/authors/{authorSlug}": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "authorSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/blog/{blogSlug}/{postSlug}/comments": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "blogSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "postSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "blogSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "postSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitCommentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitCommentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitCommentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/blog/comments/confirm/{token}": {
      "get": {
        "tags": [
          "PublicCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/cms/media/{mediaId}/{width}.webp": {
      "get": {
        "tags": [
          "PublicCmsMedia"
        ],
        "parameters": [
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "width",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/pages/{slug}/og-image.png": {
      "get": {
        "tags": [
          "PublicCmsOgImage"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/features": {
      "get": {
        "tags": [
          "PublicFeatureFlags"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/gift-cards/quote": {
      "post": {
        "tags": [
          "PublicGiftCard"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardQuoteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardQuoteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardQuoteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardQuoteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardQuoteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardQuoteDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/gift-cards/purchase": {
      "post": {
        "tags": [
          "PublicGiftCard"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardPurchaseBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardPurchaseBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardPurchaseBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardPurchaseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardPurchaseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardPurchaseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/gift-cards/balance": {
      "get": {
        "tags": [
          "PublicGiftCard"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardBalanceDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardBalanceDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardBalanceDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/groups/inquiry": {
      "post": {
        "tags": [
          "PublicGroups"
        ],
        "parameters": [
          {
            "name": "tenant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InquiryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InquiryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InquiryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/groups/quotes/{token}": {
      "get": {
        "tags": [
          "PublicGroups"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/groups/quotes/{token}/accept": {
      "post": {
        "tags": [
          "PublicGroups"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptQuoteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptQuoteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptQuoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships": {
      "get": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "tenant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships/{slug}": {
      "get": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "tenant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships/{slug}/checkout": {
      "post": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "tenant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships/{slug}/confirm": {
      "post": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "tenant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships/mine": {
      "get": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "tenant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships/enrollments/{id}/auto-renew": {
      "post": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "tenant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAutoRenewRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAutoRenewRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAutoRenewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships/enrollments/{id}/cancel": {
      "post": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "tenant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCancelMembershipRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCancelMembershipRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCancelMembershipRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships/renewals/{token}": {
      "get": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/memberships/renewals/{token}/opt-out": {
      "post": {
        "tags": [
          "PublicMemberships"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/merch-confirmation/{orderRef}": {
      "get": {
        "tags": [
          "PublicMerchConfirmationCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/orders/{orderRef}": {
      "get": {
        "tags": [
          "PublicOrders"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/packages/{productId}/components": {
      "get": {
        "tags": [
          "PublicPackages"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/packages/{productId}/availability": {
      "get": {
        "tags": [
          "PublicPackages"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "pax",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "topN",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/packages/{productId}/reserve": {
      "post": {
        "tags": [
          "PublicPackages"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPackageReserveBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPackageReserveBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPackageReserveBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/packages/{productId}/confirm": {
      "post": {
        "tags": [
          "PublicPackages"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPackageConfirmBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPackageConfirmBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicPackageConfirmBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/products/{slug}/booking": {
      "get": {
        "tags": [
          "PublicProductBooking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/products/{productSlug}": {
      "get": {
        "tags": [
          "PublicProductCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/products": {
      "get": {
        "tags": [
          "PublicProducts"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 120
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "default"
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categories",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "priceMinMinor",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "priceMaxMinor",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/products/search": {
      "get": {
        "tags": [
          "PublicProducts"
        ],
        "summary": "Phase B (Search) — full-text product search backed by the\n`products.search_vector` generated column + GIN index added in\nmigration 20260518000002. Returns the same envelope shape as\nTask&lt;IActionResult&gt; PublicProductsController.ListProducts(string tenantSlug, int limit = 120, string sort = \"default\", string? category = null, string[]? categories = null, string[]? tags = null, long? priceMinMinor = null, long? priceMaxMinor = null, CancellationToken ct = default(CancellationToken)) so the existing storefront `product-listing`\nblock renders search results without modification.",
        "description": "    Query semantics:\n      * Empty / whitespace q → fall back to ordinary listing semantics\n              (same response shape as Task&lt;IActionResult&gt; PublicProductsController.ListProducts(string tenantSlug, int limit = 120, string sort = \"default\", string? category = null, string[]? categories = null, string[]? tags = null, long? priceMinMinor = null, long? priceMaxMinor = null, CancellationToken ct = default(CancellationToken))).\n* len(q) &lt; 3 → ILIKE on Name (a single FTS lexeme would be\n              too coarse — a 1-2 char query like \"kg\" rarely yields useful matches\n              and the trigram-less ILIKE comes through faster anyway).\n* Otherwise → websearch_to_tsquery('simple', q) against\n              search_vector, ranked by ts_rank_cd.\n    The query string is always passed as a parameter, never concatenated, so\n    SQL injection isn't a concern even with the raw DatabaseFacade DbContext.Database\n    access path.\n    Tenant isolation: the SQL filters on \"TenantId\" = :tid in addition\n    to the ITenantScoped query filters that EF would normally apply,\n    because the FTS path uses raw SQL and doesn't pick up the global filter.",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categories",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "priceMinMinor",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "priceMaxMinor",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "relevance"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/products/facets": {
      "get": {
        "tags": [
          "PublicProducts"
        ],
        "summary": "Phase C (Faceted Sidebar) — facet aggregation for the storefront sidebar.\nReturns category + tag + price counts/range/histogram against the current\nfilter context so operators can see what's available to refine.",
        "description": "Uses the standard \"non-self\" facet pattern: a facet's counts reflect\nwhat would happen if the user picked any of its values, NOT what's left\nafter applying it. So the categories facet excludes the active\ncategories filter; the tags facet excludes the active tags filter;\nprice-range excludes the active price filter. Filters that aren't being\nfaceted DO apply (so picking \"tours\" then opening the tags accordion\nshows tag counts within tours).\nTags are capped at 20 — a sidebar with 100 tag rows is unusable;\noperators looking for the long tail can search instead.\nPrice bins are 5 fixed-width buckets across the observed price\nrange. We don't quantile — fixed-width bins are easier to read on the\nhistogram and easier to reason about (\"$0–$50, $50–$100, ...\").",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categories",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "priceMinMinor",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "priceMaxMinor",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/product-categories": {
      "get": {
        "tags": [
          "PublicProducts"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categories",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/product-categories/{slug}": {
      "get": {
        "tags": [
          "PublicProducts"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/products/{slug}": {
      "get": {
        "tags": [
          "PublicProducts"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/sitemap.xml": {
      "get": {
        "tags": [
          "PublicProducts"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/xml": { }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/robots.txt": {
      "get": {
        "tags": [
          "PublicProducts"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": { }
            }
          }
        }
      }
    },
    "/api/public/rental/unit-types": {
      "get": {
        "tags": [
          "PublicRental"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PublicUnitTypeDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PublicUnitTypeDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PublicUnitTypeDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/public/rental/availability": {
      "get": {
        "tags": [
          "PublicRental"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "unitTypeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "startsAt",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endsAt",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RentalAvailabilityResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalAvailabilityResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalAvailabilityResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/rental/hold": {
      "post": {
        "tags": [
          "PublicRental"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicRentalHoldBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicRentalHoldBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicRentalHoldBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RentalHoldResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalHoldResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalHoldResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/rental/hold/{holdId}/confirm": {
      "post": {
        "tags": [
          "PublicRental"
        ],
        "parameters": [
          {
            "name": "holdId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/products/{slug}/reviews": {
      "get": {
        "tags": [
          "PublicReviews"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/reviews": {
      "post": {
        "tags": [
          "PublicReviews"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitReviewBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitReviewBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitReviewBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/search": {
      "get": {
        "tags": [
          "PublicSearchCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/shop": {
      "get": {
        "tags": [
          "PublicShopCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/cms/category/{categorySlug}": {
      "get": {
        "tags": [
          "PublicShopCms"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/subscriptions": {
      "get": {
        "tags": [
          "PublicSubscriptions"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SubscriptionStatus"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "PublicSubscriptions"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreatePortalSubscriptionBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreatePortalSubscriptionBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreatePortalSubscriptionBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/subscriptions/{id}": {
      "get": {
        "tags": [
          "PublicSubscriptions"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/subscriptions/{id}/pause": {
      "post": {
        "tags": [
          "PublicSubscriptions"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/subscriptions/{id}/resume": {
      "post": {
        "tags": [
          "PublicSubscriptions"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/subscriptions/{id}/cancel": {
      "post": {
        "tags": [
          "PublicSubscriptions"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelPortalSubscriptionBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelPortalSubscriptionBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelPortalSubscriptionBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/subscriptions/{id}/shipping-address": {
      "patch": {
        "tags": [
          "PublicSubscriptions"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/UpdatePortalShippingAddressBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/UpdatePortalShippingAddressBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/UpdatePortalShippingAddressBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/transfers/{productId}/routes": {
      "get": {
        "tags": [
          "PublicTransfer"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferRouteDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferRouteDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransferRouteDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/public/transfers/{productId}/availability": {
      "get": {
        "tags": [
          "PublicTransfer"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "routeId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "pax",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "returnDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PublicTransferAvailabilityResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicTransferAvailabilityResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicTransferAvailabilityResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/transfers/{productId}/reserve": {
      "post": {
        "tags": [
          "PublicTransfer"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicTransferReserveBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicTransferReserveBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicTransferReserveBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PublicTransferReserveResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicTransferReserveResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicTransferReserveResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/transfers/{productId}/confirm": {
      "post": {
        "tags": [
          "PublicTransfer"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicTransferConfirmBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicTransferConfirmBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicTransferConfirmBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/vouchers/quote": {
      "post": {
        "tags": [
          "PublicVoucher"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherQuoteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherQuoteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherQuoteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherQuoteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherQuoteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherQuoteDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/vouchers/checkout": {
      "post": {
        "tags": [
          "PublicVoucher"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherCheckoutBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherCheckoutBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VoucherCheckoutBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherCheckoutDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherCheckoutDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherCheckoutDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/roadmap/votes": {
      "get": {
        "tags": [
          "Roadmap"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/roadmap/vote": {
      "post": {
        "tags": [
          "Roadmap"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoadmapVoteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoadmapVoteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoadmapVoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Roadmap"
        ],
        "parameters": [
          {
            "name": "itemId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/site-by-host": {
      "get": {
        "tags": [
          "SiteByHost"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/robots.txt": {
      "get": {
        "tags": [
          "SeoRoot"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "tags": [
          "SeoRoot"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/auth/social-providers": {
      "get": {
        "tags": [
          "SocialProviders"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SocialProvidersResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocialProvidersResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocialProvidersResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/addons": {
      "get": {
        "tags": [
          "AddOns"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddOnDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddOnDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddOnDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AddOns"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddOnRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddOnRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddOnRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/addons/{id}": {
      "put": {
        "tags": [
          "AddOns"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddOnRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddOnRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddOnRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AddOns"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/media": {
      "get": {
        "tags": [
          "ProductMedia"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MediaDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MediaDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MediaDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductMedia"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "file": {
                        "$ref": "#/components/schemas/IFormFile"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string"
                      }
                    }
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/media/from-url": {
      "post": {
        "tags": [
          "ProductMedia"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMediaFromUrlRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMediaFromUrlRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMediaFromUrlRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/media/{mediaId}/raw": {
      "get": {
        "tags": [
          "ProductMedia"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/media/{mediaId}": {
      "patch": {
        "tags": [
          "ProductMedia"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMediaRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMediaRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMediaRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ProductMedia"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/media/order": {
      "patch": {
        "tags": [
          "ProductMedia"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/itinerary": {
      "get": {
        "tags": [
          "ProductItinerary"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItineraryStopDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItineraryStopDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItineraryStopDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductItinerary"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateItineraryStopRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateItineraryStopRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateItineraryStopRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ItineraryStopDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItineraryStopDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItineraryStopDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/itinerary/{stopId}": {
      "patch": {
        "tags": [
          "ProductItinerary"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "stopId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateItineraryStopRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateItineraryStopRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateItineraryStopRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ItineraryStopDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItineraryStopDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItineraryStopDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ProductItinerary"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "stopId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/itinerary/order": {
      "patch": {
        "tags": [
          "ProductItinerary"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/faqs": {
      "get": {
        "tags": [
          "ProductFaq"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FaqDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FaqDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FaqDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductFaq"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FaqRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FaqRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FaqRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FaqDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/faqs/{faqId}": {
      "patch": {
        "tags": [
          "ProductFaq"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "faqId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FaqRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FaqRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FaqRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FaqDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ProductFaq"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "faqId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/faqs/order": {
      "patch": {
        "tags": [
          "ProductFaq"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/questions": {
      "get": {
        "tags": [
          "ProductCustomerQuestions"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerQuestionDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerQuestionDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerQuestionDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductCustomerQuestions"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerQuestionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerQuestionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerQuestionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerQuestionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerQuestionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerQuestionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/questions/{questionId}": {
      "patch": {
        "tags": [
          "ProductCustomerQuestions"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "questionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerQuestionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerQuestionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerQuestionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerQuestionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerQuestionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerQuestionDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ProductCustomerQuestions"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "questionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/questions/order": {
      "patch": {
        "tags": [
          "ProductCustomerQuestions"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/pickup-assignments": {
      "get": {
        "tags": [
          "PickupAssignments"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickupAssignmentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickupAssignmentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickupAssignmentDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PickupAssignments"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupAssignmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupAssignmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PickupAssignmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PickupAssignmentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupAssignmentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupAssignmentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/pickup-assignments/{assignmentId}": {
      "patch": {
        "tags": [
          "PickupAssignments"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupAssignmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupAssignmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PickupAssignmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PickupAssignmentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupAssignmentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupAssignmentDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PickupAssignments"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/pickup-assignments/order": {
      "patch": {
        "tags": [
          "PickupAssignments"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products": {
      "get": {
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Products"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{id}": {
      "get": {
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{id}/transition": {
      "post": {
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransitionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TransitionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TransitionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{parentId}/subproducts": {
      "post": {
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "parentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubproductRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubproductRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubproductRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{parentId}/subproducts/{childId}": {
      "delete": {
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "parentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "childId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/seo": {
      "get": {
        "tags": [
          "ProductSeo"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductSeoDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductSeoDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductSeoDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ProductSeo"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductSeoRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductSeoRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductSeoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductSeoDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductSeoDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductSeoDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/categories": {
      "get": {
        "tags": [
          "ProductTaxonomy"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "ProductTaxonomy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/categories/{id}": {
      "get": {
        "tags": [
          "ProductTaxonomy"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "ProductTaxonomy"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "ProductTaxonomy"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/tags": {
      "get": {
        "tags": [
          "ProductTaxonomy"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "ProductTaxonomy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/tags/{id}": {
      "get": {
        "tags": [
          "ProductTaxonomy"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "ProductTaxonomy"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTagRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTagRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "ProductTaxonomy"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/quote": {
      "post": {
        "tags": [
          "Quote"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PricingQuote"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingQuote"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingQuote"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans": {
      "get": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RatePlanDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RatePlanDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RatePlanDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}": {
      "get": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/publish": {
      "post": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/unpublish": {
      "post": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/clone": {
      "post": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloneRatePlanRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CloneRatePlanRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CloneRatePlanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/pax-tier-configs": {
      "put": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PaxTierConfigRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PaxTierConfigRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PaxTierConfigRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/cancellation-policy": {
      "put": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancellationPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CancellationPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CancellationPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CancellationPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancellationPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancellationPolicyDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/prices": {
      "get": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceListDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceListDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceListDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceListRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceListRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/prices/{priceId}": {
      "delete": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "priceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/modifiers": {
      "post": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingModifierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingModifierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PricingModifierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PricingModifierDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingModifierDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingModifierDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/rate-plans/{ratePlanId}/modifiers/{modifierId}": {
      "put": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "modifierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingModifierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingModifierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PricingModifierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PricingModifierDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingModifierDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingModifierDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "RatePlans"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "modifierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/schedule/rules": {
      "get": {
        "tags": [
          "ScheduleRules"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ScheduleRuleDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ScheduleRuleDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ScheduleRuleDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ScheduleRules"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRuleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRuleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRuleDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/schedule/rules/{ruleId}": {
      "put": {
        "tags": [
          "ScheduleRules"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ruleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRuleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRuleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRuleDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ScheduleRules"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ruleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/schedule/overrides": {
      "get": {
        "tags": [
          "CalendarOverrides"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarOverrideDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarOverrideDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarOverrideDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CalendarOverrides"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarOverrideRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarOverrideRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarOverrideRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarOverrideDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarOverrideDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarOverrideDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/schedule/overrides/{overrideId}": {
      "delete": {
        "tags": [
          "CalendarOverrides"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "overrideId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/schedule/preview": {
      "get": {
        "tags": [
          "SchedulePreview"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ComputedSlot"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ComputedSlot"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ComputedSlot"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/schedule/calendar": {
      "get": {
        "tags": [
          "ScheduleCalendar"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarDay"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarDay"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarDay"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/versions": {
      "get": {
        "tags": [
          "Versions"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductVersionListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductVersionListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductVersionListItem"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/versions/{versionId}": {
      "get": {
        "tags": [
          "Versions"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVersionDetail"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVersionDetail"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVersionDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/versions/{versionId}/restore": {
      "post": {
        "tags": [
          "Versions"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/RestoreRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/RestoreRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/RestoreRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVersionListItem"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVersionListItem"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVersionListItem"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/consent-records": {
      "get": {
        "tags": [
          "ConsentRecords"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "anonymousId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/privacy/export": {
      "get": {
        "tags": [
          "Privacy"
        ],
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/privacy/erase": {
      "delete": {
        "tags": [
          "Privacy"
        ],
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "confirm",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/privacy/requests": {
      "get": {
        "tags": [
          "Privacy"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/privacy/requests/{id}/process": {
      "post": {
        "tags": [
          "Privacy"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ProcessPrivacyRequestBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ProcessPrivacyRequestBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ProcessPrivacyRequestBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenant}/consent": {
      "post": {
        "tags": [
          "PublicConsent"
        ],
        "parameters": [
          {
            "name": "tenant",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordConsentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordConsentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RecordConsentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "PublicConsent"
        ],
        "parameters": [
          {
            "name": "tenant",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "anonymousId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/customer-segments": {
      "get": {
        "tags": [
          "CustomerSegments"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerSegmentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerSegmentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerSegmentDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CustomerSegments"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSegmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSegmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSegmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegmentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegmentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegmentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/customer-segments/{id}": {
      "put": {
        "tags": [
          "CustomerSegments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSegmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSegmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSegmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegmentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegmentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSegmentDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CustomerSegments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/fees": {
      "get": {
        "tags": [
          "Fees"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FeeDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FeeDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FeeDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Fees"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FeeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FeeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/fees/{id}": {
      "put": {
        "tags": [
          "Fees"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FeeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FeeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FeeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeeDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Fees"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pax-tiers": {
      "get": {
        "tags": [
          "PaxTiers"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaxTierDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaxTierDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaxTierDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PaxTiers"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaxTierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaxTierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaxTierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PaxTierDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaxTierDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaxTierDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/pax-tiers/{id}": {
      "put": {
        "tags": [
          "PaxTiers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaxTierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaxTierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaxTierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PaxTierDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaxTierDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaxTierDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaxTiers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/price-changes": {
      "get": {
        "tags": [
          "PriceChangeRequests"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PriceChangeStatus"
            }
          },
          {
            "name": "targetEntityType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceChangeDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceChangeDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceChangeDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PriceChangeRequests"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-changes/{id}": {
      "get": {
        "tags": [
          "PriceChangeRequests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-changes/{id}/approve": {
      "post": {
        "tags": [
          "PriceChangeRequests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-changes/{id}/reject": {
      "post": {
        "tags": [
          "PriceChangeRequests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-changes/{id}/apply": {
      "post": {
        "tags": [
          "PriceChangeRequests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-changes/{id}/cancel": {
      "post": {
        "tags": [
          "PriceChangeRequests"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceChangeDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-lists/bulk": {
      "post": {
        "tags": [
          "PriceListsBulk"
        ],
        "summary": "Upsert a batch of price-list rows. Each row is keyed on the natural\ncomposite `(RatePlanId, PaxTierId, StartDate, EndDate)`; an\nexisting row at that key is updated, otherwise a new row is inserted.",
        "description": "When `Atomic == true` the entire batch runs inside a transaction:\nany per-row failure rolls back every change. This is the strict mode\nfor jobs that can't tolerate partial writes (price-table reloads,\nscheduled republish). When `Atomic == false` (default) invalid\nrows are reported in the response but successful rows still commit —\nmatches how most retry-loop clients prefer to operate.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkPriceListBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkPriceListBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkPriceListBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BulkPriceListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkPriceListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkPriceListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-lists/export": {
      "get": {
        "tags": [
          "PriceListsExport"
        ],
        "summary": "Stream every price-list row visible to the tenant, in\n`(UpdatedAt ASC, Id ASC)` order so the cursor is deterministic.",
        "description": "Date-window filtering treats `StartDate` / `EndDate` as an\nopen-ended interval — null on either side means \"no bound on that side\".\nA row matches a `(from, to)` filter iff its window overlaps the\nrequested window (standard interval-overlap rules with null endpoints\ntreated as ±infinity).",
        "parameters": [
          {
            "name": "ratePlanId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 500
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListExportResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListExportResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListExportResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing-api-tokens": {
      "get": {
        "tags": [
          "PricingApiTokens"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TokenDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TokenDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TokenDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PricingApiTokens"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueTokenBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueTokenBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IssueTokenBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/IssueTokenResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueTokenResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing-api-tokens/{id}/revoke": {
      "post": {
        "tags": [
          "PricingApiTokens"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TokenDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing-api-tokens/{id}": {
      "delete": {
        "tags": [
          "PricingApiTokens"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pricing-audit": {
      "get": {
        "tags": [
          "PricingAudit"
        ],
        "summary": "Lists pricing-audit entries for the current tenant in newest-first\norder. All filters are optional and combinable.",
        "parameters": [
          {
            "name": "entityType",
            "in": "query",
            "description": "\"RatePlan\", \"PricingModifier\", \"PriceList\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "description": "Filter to a single entity's history.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "Inclusive lower bound on ChangedAt (UTC).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "Inclusive upper bound on ChangedAt (UTC).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "Page size; defaults to 100, capped at 500.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AuditDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AuditDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AuditDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing-audit/{id}": {
      "get": {
        "tags": [
          "PricingAudit"
        ],
        "summary": "Full detail for one entry, including before/after JSON.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuditDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing/recommendations": {
      "get": {
        "tags": [
          "PricingRecommender"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ratePlanId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "windowStart",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "windowEnd",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RecommendationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RecommendationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RecommendationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing/recommendations/apply": {
      "post": {
        "tags": [
          "PricingRecommender"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecommendationApplyBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RecommendationApplyBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RecommendationApplyBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RecommendationApplyResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecommendationApplyResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecommendationApplyResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing/reports/revenue-by-rate-plan": {
      "get": {
        "tags": [
          "PricingReports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RevenueByRatePlanRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RevenueByRatePlanRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RevenueByRatePlanRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing/reports/margin-by-rate-plan": {
      "get": {
        "tags": [
          "PricingReports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "minMarginPercentAlert",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MarginByRatePlanRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MarginByRatePlanRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MarginByRatePlanRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing/reports/discount-uptake": {
      "get": {
        "tags": [
          "PricingReports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiscountUptakeRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiscountUptakeRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiscountUptakeRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing/reports/modifier-impact": {
      "get": {
        "tags": [
          "PricingReports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModifierImpactRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModifierImpactRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModifierImpactRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/promo-codes": {
      "get": {
        "tags": [
          "PromoCodes"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PromoCodeDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PromoCodeDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PromoCodeDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PromoCodes"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromoCodeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PromoCodeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PromoCodeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PromoCodeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromoCodeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromoCodeDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/promo-codes/{id}": {
      "put": {
        "tags": [
          "PromoCodes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromoCodeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PromoCodeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PromoCodeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PromoCodeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromoCodeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromoCodeDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PromoCodes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/rate-plans/{ratePlanId}/deposit-policy": {
      "get": {
        "tags": [
          "RatePlanDepositPolicy"
        ],
        "parameters": [
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDepositPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDepositPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDepositPolicyDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "RatePlanDepositPolicy"
        ],
        "parameters": [
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanDepositPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanDepositPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RatePlanDepositPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDepositPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDepositPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RatePlanDepositPolicyDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "RatePlanDepositPolicy"
        ],
        "parameters": [
          {
            "name": "ratePlanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/rate-plans": {
      "get": {
        "tags": [
          "RatePlansAggregate"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RatePlanSummaryDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RatePlanSummaryDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RatePlanSummaryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tenant-pricing-policy": {
      "get": {
        "tags": [
          "TenantPricingPolicy"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantPricingPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantPricingPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantPricingPolicyDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "TenantPricingPolicy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantPricingPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantPricingPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TenantPricingPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantPricingPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantPricingPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantPricingPolicyDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing/what-if": {
      "post": {
        "tags": [
          "WhatIf"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WhatIfBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WhatIfBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WhatIfBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WhatIfSummary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WhatIfSummary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WhatIfSummary"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/pos/carts": {
      "get": {
        "tags": [
          "PosCartsAdmin"
        ],
        "summary": "List POS-bound carts. Filters compose with AND. Default sort:\nmost-recently-touched first (so the actively-being-rung-up cart\nsurfaces above the parked ones).",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "One of `open` (active, last touch within the stale window),\n`stale` (last touch older than the stale window),\n`expired` (past DateTimeOffset Cart.ExpiresAt — the sweeper\nhasn't run yet). Omit for all states.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "Lower bound on `CreatedAt`. UTC.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "Upper bound on `CreatedAt`. UTC.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "staleAfterMinutes",
            "in": "query",
            "description": "Override the 2h stale window.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "1-indexed page.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Capped at int PosCartsAdminController.MaxPageSize.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/pos/carts/{cartId}/abandon": {
      "post": {
        "tags": [
          "PosCartsAdmin"
        ],
        "summary": "Force-abandon a cart. Releases its inventory holds + stock\nreservations and deletes the cart row by piggy-backing the\nexisting sweeper path: we set DateTimeOffset Cart.ExpiresAt to a\npast timestamp, then call Task&lt;int&gt; ICartService.ExpireAsync(DateTimeOffset asOf, CancellationToken ct)\nwhich fans the standard release/delete flow.",
        "parameters": [
          {
            "name": "cartId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sessions/{sessionId}/carts": {
      "post": {
        "tags": [
          "PosCarts"
        ],
        "summary": "Mint an empty cart bound to the given POS session. Returns the\ncreated cart's id so the cashier UI can append lines via the\n`POST .../lines` sibling endpoint, then settle via\n`POST /api/pos/sessions/{sessionId}/sales`.",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sessions/{sessionId}/carts/{cartId}/lines": {
      "post": {
        "tags": [
          "PosCarts"
        ],
        "summary": "Append a merchandise line to a POS cart.",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cartId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPosCartLineRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPosCartLineRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddPosCartLineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sessions/{sessionId}/carts/{cartId}/lines/{lineId}": {
      "patch": {
        "tags": [
          "PosCarts"
        ],
        "summary": "Adjust the qty of a merchandise line on a POS cart.",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cartId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePosCartLineQtyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePosCartLineQtyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePosCartLineQtyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "PosCarts"
        ],
        "summary": "Remove a line from a POS cart.",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cartId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sessions/{sessionId}/carts/{cartId}": {
      "get": {
        "tags": [
          "PosCarts"
        ],
        "summary": "Read a POS cart with its lines + an authoritative quote (totals)\nthe settle endpoint will rebuild server-side. The cashier UI uses\nthis for the \"review the cart before tendering\" surface.",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cartId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sales": {
      "post": {
        "tags": [
          "Pos"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSaleBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSaleBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSaleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/bookings/{bookingId}/add-ons": {
      "post": {
        "tags": [
          "Pos"
        ],
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAddOnBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAddOnBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAddOnBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PosPaymentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosPaymentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosPaymentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/sales/{reservationId}/abandon": {
      "post": {
        "tags": [
          "Pos"
        ],
        "parameters": [
          {
            "name": "reservationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AbandonSaleBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AbandonSaleBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AbandonSaleBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/bookings/{bookingId}/refund": {
      "post": {
        "tags": [
          "Pos"
        ],
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePosRefundBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePosRefundBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePosRefundBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PosRefundResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosRefundResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosRefundResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/reconciliation/batches": {
      "get": {
        "tags": [
          "PosReconciliation"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "PosReconciliation"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PosBatchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PosBatchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PosBatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/reconciliation/daily-summary": {
      "get": {
        "tags": [
          "PosReconciliation"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/reconciliation/batches/{id}": {
      "get": {
        "tags": [
          "PosReconciliation"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/pos/reconciliations": {
      "get": {
        "tags": [
          "PosReconciliations"
        ],
        "parameters": [
          {
            "name": "stationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/pos/reconciliations/{id}": {
      "get": {
        "tags": [
          "PosReconciliations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sales/lookup": {
      "get": {
        "tags": [
          "PosReturns"
        ],
        "summary": "Lookup an original sale for a possible in-person return. Accepts\neither the QR-token query string (preferred — printed on the\nreceipt) or the receipt-number fallback (typed in by the cashier).",
        "parameters": [
          {
            "name": "qr",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "receiptNumber",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleLookupResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleLookupResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleLookupResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/sessions/{sessionId}/refunds": {
      "post": {
        "tags": [
          "PosReturns"
        ],
        "summary": "Issue an in-person refund against an open POS session. The cashier\nhas already picked which lines + qty to refund and the refund\ndestination (original card / cash / gift-card credit). Returns\nPosRefundDetailResponse on success, or a typed 409\nwith `reason: 'original_card_unavailable'` when Stripe\nrejects the original-card refund (the cashier UI re-prompts with\nthe other two destinations enabled).",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundSaleBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundSaleBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RefundSaleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sessions/{sessionId}/sales": {
      "post": {
        "tags": [
          "PosSales"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SettleSaleBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SettleSaleBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SettleSaleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleSettleResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleSettleResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleSettleResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/sales/{saleId}": {
      "get": {
        "tags": [
          "PosSales"
        ],
        "parameters": [
          {
            "name": "saleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleSettleResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleSettleResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSaleSettleResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/stations/{stationId}/sessions": {
      "post": {
        "tags": [
          "PosSessions"
        ],
        "summary": "Open a new cashier session on the given station.",
        "parameters": [
          {
            "name": "stationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenSessionBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenSessionBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OpenSessionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sessions/{sessionId}/close": {
      "post": {
        "tags": [
          "PosSessions"
        ],
        "summary": "Close the named session — records actual cash and persists variance.",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloseSessionBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CloseSessionBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CloseSessionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sessions/{sessionId}": {
      "get": {
        "tags": [
          "PosSessions"
        ],
        "summary": "Detail for a single session, including running totals.",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/sessions/mine": {
      "get": {
        "tags": [
          "PosSessions"
        ],
        "summary": "Sessions belonging to the current operator. Drives the cashier landing banner.",
        "parameters": [
          {
            "name": "includeClosed",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pos/terminal/config": {
      "get": {
        "tags": [
          "TerminalConfig"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "TerminalConfig"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTerminalConfigBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTerminalConfigBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTerminalConfigBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/terminal/config/location": {
      "post": {
        "tags": [
          "TerminalConfig"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLocationBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLocationBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLocationBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalConfigResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/terminal/config/readers": {
      "get": {
        "tags": [
          "TerminalConfig"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TerminalReaderInfo"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TerminalReaderInfo"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TerminalReaderInfo"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TerminalConfig"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterReaderBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterReaderBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterReaderBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalReaderInfo"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalReaderInfo"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalReaderInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/terminal/config/public": {
      "get": {
        "tags": [
          "TerminalConfig"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalPublicConfigResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalPublicConfigResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalPublicConfigResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/terminal/connection-token": {
      "post": {
        "tags": [
          "Terminal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionTokenResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionTokenResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/terminal/payment-intents": {
      "post": {
        "tags": [
          "Terminal"
        ],
        "summary": "Phase 3 audit follow-up — mint a card-present PaymentIntent for an\nin-house POS sale with a known minor-unit amount. The cashier UI's\ncard-row hits this before pushing the resulting client secret to\nthe browser SDK / reader. Returns the intent id so the eventual\nsettle call can verify the captured amount.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTerminalPaymentIntentBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTerminalPaymentIntentBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTerminalPaymentIntentBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalPaymentIntentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalPaymentIntentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalPaymentIntentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/terminal/payment-intents/{paymentIntentId}/sync": {
      "post": {
        "tags": [
          "Terminal"
        ],
        "parameters": [
          {
            "name": "paymentIntentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PosSyncResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSyncResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PosSyncResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/terminal/readers/{readerId}/process-payment-intent": {
      "post": {
        "tags": [
          "Terminal"
        ],
        "parameters": [
          {
            "name": "readerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessPaymentIntentBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessPaymentIntentBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProcessPaymentIntentBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalReaderActionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalReaderActionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalReaderActionResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/pos/terminal/readers/{readerId}/cancel": {
      "post": {
        "tags": [
          "Terminal"
        ],
        "parameters": [
          {
            "name": "readerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pricing-playbooks": {
      "get": {
        "tags": [
          "PricingPlaybooks"
        ],
        "parameters": [
          {
            "name": "includeInactive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlaybookDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlaybookDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlaybookDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PricingPlaybooks"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlaybookRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PlaybookRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PlaybookRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing-playbooks/{id}": {
      "get": {
        "tags": [
          "PricingPlaybooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "PricingPlaybooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlaybookRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PlaybookRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PlaybookRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PricingPlaybooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pricing-playbooks/{id}/entries": {
      "post": {
        "tags": [
          "PricingPlaybooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EntryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EntryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookEntryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookEntryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookEntryDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing-playbooks/{id}/entries/{entryId}": {
      "put": {
        "tags": [
          "PricingPlaybooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "entryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EntryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EntryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookEntryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookEntryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookEntryDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PricingPlaybooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "entryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pricing-playbooks/{id}/apply": {
      "post": {
        "tags": [
          "PricingPlaybooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookApplyResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookApplyResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaybookApplyResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/platform/features": {
      "get": {
        "tags": [
          "FeatureFlags"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/platform/session": {
      "post": {
        "tags": [
          "PlatformSession"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "PlatformSession"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/platform/tenants": {
      "get": {
        "tags": [
          "PlatformTenants"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/platform/tenants/{slug}": {
      "get": {
        "tags": [
          "PlatformTenants"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "PlatformTenants"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantUpdateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantUpdateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TenantUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/platform/tenants/{slug}/feature-flags": {
      "get": {
        "tags": [
          "PlatformTenants"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/platform/tenants/{slug}/feature-flags/{key}": {
      "post": {
        "tags": [
          "PlatformTenants"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeatureFlagToggleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FeatureFlagToggleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FeatureFlagToggleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/platform/stats": {
      "get": {
        "tags": [
          "PlatformStats"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/pickup-locations": {
      "get": {
        "tags": [
          "PickupLocations"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickupLocationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickupLocationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickupLocationDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PickupLocations"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupLocationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupLocationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PickupLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/pickup-locations/{id}": {
      "get": {
        "tags": [
          "PickupLocations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "PickupLocations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupLocationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PickupLocationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PickupLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PickupLocationDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PickupLocations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/payment-accounts/stripe/onboarding-link": {
      "post": {
        "tags": [
          "PaymentAccounts"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StripeOnboardingBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StripeOnboardingBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StripeOnboardingBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StripeOnboardingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StripeOnboardingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StripeOnboardingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/payment-accounts/stripe/refresh-status": {
      "post": {
        "tags": [
          "PaymentAccounts"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/payment-accounts": {
      "get": {
        "tags": [
          "PaymentAccounts"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaymentAccountDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaymentAccountDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaymentAccountDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/payment-accounts/{id}/priority": {
      "put": {
        "tags": [
          "PaymentAccounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPriorityBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPriorityBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetPriorityBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/payment-accounts/stripe": {
      "post": {
        "tags": [
          "PaymentAccounts"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectStripeBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectStripeBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectStripeBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/payment-accounts/square": {
      "post": {
        "tags": [
          "PaymentAccounts"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectSquareBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectSquareBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectSquareBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentAccountDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/payment-accounts/{id}/disable": {
      "post": {
        "tags": [
          "PaymentAccounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/payment-accounts/{id}": {
      "delete": {
        "tags": [
          "PaymentAccounts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/payments": {
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "Tenant-scoped, paginated payment ledger feeding the admin\nPaymentsAuditPage. Joins through Reservation→Customer so the row\ncarries enough context (booking ref + customer name/email +\nprocessor info) to triage incidents without bouncing into the\nbooking detail page first.\n\nThe legacy mobile-manager comp-audit view used to call this with\n`method=comp` + `limit=50`; both flags still work — when\n`limit` is set the response short-circuits pagination and\nreturns a flat list, mirroring the original wire shape so we\ndon't break the device.",
        "parameters": [
          {
            "name": "method",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PaymentStatus"
            }
          },
          {
            "name": "processor",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PaymentProviderKind"
            }
          },
          {
            "name": "bookingId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerEmail",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/payments.csv": {
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "CSV export of the tenant-wide payment ledger. Honors the same\nfilter set as Task&lt;ActionResult&gt; PaymentsController.ListAll(string? method, PaymentStatus? status, PaymentProviderKind? processor, Guid? bookingId, string? customerEmail, string? search, DateTimeOffset? from, DateTimeOffset? to, int? limit, int page = 1, int pageSize = 50, CancellationToken ct = default(CancellationToken)); pagination is intentionally\nignored — exports are always the full filtered set, capped at\n50,000 rows so a misclick can't OOM the server.",
        "parameters": [
          {
            "name": "method",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PaymentStatus"
            }
          },
          {
            "name": "processor",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PaymentProviderKind"
            }
          },
          {
            "name": "bookingId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerEmail",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/bookings/{bookingId}/payments": {
      "get": {
        "tags": [
          "Payments"
        ],
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaymentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaymentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaymentDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Payments"
        ],
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordManualPaymentBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordManualPaymentBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RecordManualPaymentBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/bookings/{bookingId}/refunds": {
      "get": {
        "tags": [
          "Payments"
        ],
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Payments"
        ],
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRefundBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRefundBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRefundBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RefundDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/refunds": {
      "get": {
        "tags": [
          "RefundReconciliation"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "processor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bookingId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RefundReconciliationPage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundReconciliationPage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundReconciliationPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/refunds/{id}/retry": {
      "post": {
        "tags": [
          "RefundReconciliation"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RefundReconciliationRow"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundReconciliationRow"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundReconciliationRow"
                }
              }
            }
          }
        }
      }
    },
    "/api/parity/observations": {
      "post": {
        "tags": [
          "Parity"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ObservationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ObservationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ObservationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ObservationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObservationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObservationResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "channelId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ObservationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ObservationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ObservationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/parity/observations/bulk-template": {
      "get": {
        "tags": [
          "Parity"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/parity/observations/bulk": {
      "post": {
        "tags": [
          "Parity"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BulkObservationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkObservationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkObservationResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/parity/violations": {
      "get": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ParityViolationStatus"
            }
          },
          {
            "name": "channelId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ViolationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ViolationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ViolationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/parity/violations/{id}": {
      "put": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ViolationUpdateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ViolationUpdateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ViolationUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ViolationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ViolationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ViolationDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/parity/policies": {
      "get": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "includeInactive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParityPolicyDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParityPolicyDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParityPolicyDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Parity"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ParityPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ParityPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ParityPolicyDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/parity/policies/{id}": {
      "put": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ParityPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ParityPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ParityPolicyDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/parity/feeds": {
      "get": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "includeInactive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CompetitorFeedDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CompetitorFeedDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CompetitorFeedDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Parity"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FeedRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitorFeedDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitorFeedDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitorFeedDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/parity/feeds/{id}": {
      "put": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FeedRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitorFeedDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitorFeedDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitorFeedDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/parity/feeds/{id}/ingest": {
      "post": {
        "tags": [
          "Parity"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedIngestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedIngestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FeedIngestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/IngestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/packages/hold": {
      "post": {
        "tags": [
          "PackageBooking"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageHoldBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageHoldBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PackageHoldBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PackageHoldResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackageHoldResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackageHoldResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/packages/{parentReservationId}/cancel": {
      "post": {
        "tags": [
          "PackageBooking"
        ],
        "parameters": [
          {
            "name": "parentReservationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PackageCancelBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PackageCancelBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PackageCancelBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/packages/legs/{legReservationId}/cancel": {
      "post": {
        "tags": [
          "PackageBooking"
        ],
        "parameters": [
          {
            "name": "legReservationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PackageCancelBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PackageCancelBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PackageCancelBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/packages/availability": {
      "get": {
        "tags": [
          "PackageBooking"
        ],
        "parameters": [
          {
            "name": "packageProductId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "topN",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PackageAvailabilityCombo"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PackageAvailabilityCombo"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PackageAvailabilityCombo"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/packages": {
      "get": {
        "tags": [
          "PackageOperator"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PackageDefinitionDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PackageDefinitionDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PackageDefinitionDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PackageOperator"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageDefinitionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageDefinitionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PackageDefinitionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PackageDefinitionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackageDefinitionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackageDefinitionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/packages/{id}": {
      "put": {
        "tags": [
          "PackageOperator"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageDefinitionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageDefinitionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PackageDefinitionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PackageDefinitionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackageDefinitionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackageDefinitionDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PackageOperator"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/email/messages": {
      "get": {
        "tags": [
          "EmailMessages"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/EmailMessageStatus"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EmailMessagePage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailMessagePage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailMessagePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/email/stats": {
      "get": {
        "tags": [
          "EmailMessages"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EmailStatsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailStatsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailStatsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/email/account": {
      "get": {
        "tags": [
          "EmailMessages"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantEmailAccountDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantEmailAccountDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantEmailAccountDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "EmailMessages"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertEmailAccountBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertEmailAccountBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertEmailAccountBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantEmailAccountDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantEmailAccountDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantEmailAccountDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "EmailMessages"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/email/account/test": {
      "post": {
        "tags": [
          "EmailMessages"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestEmailBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TestEmailBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TestEmailBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TestEmailResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestEmailResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestEmailResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/email-templates": {
      "get": {
        "tags": [
          "EmailTemplates"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/email-templates/{kind}/{locale}": {
      "get": {
        "tags": [
          "EmailTemplates"
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "EmailTemplates"
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailTemplateUpsertRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailTemplateUpsertRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmailTemplateUpsertRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "EmailTemplates"
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/email-templates/{kind}/{locale}/preview": {
      "post": {
        "tags": [
          "EmailTemplates"
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailTemplatePreviewRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailTemplatePreviewRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EmailTemplatePreviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/inventory/locations": {
      "get": {
        "tags": [
          "InventoryLocations"
        ],
        "parameters": [
          {
            "name": "includeArchived",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InventoryLocation"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InventoryLocation"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InventoryLocation"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "InventoryLocations"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInventoryLocationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInventoryLocationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInventoryLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/inventory/locations/{id}": {
      "get": {
        "tags": [
          "InventoryLocations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "InventoryLocations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInventoryLocationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInventoryLocationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInventoryLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLocation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "InventoryLocations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/merchandise/variants/by-sku/{sku}": {
      "get": {
        "tags": [
          "MerchandiseVariantsBySku"
        ],
        "summary": "Tenant-scoped lookup by SKU, used by the cashier scan input.",
        "parameters": [
          {
            "name": "sku",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 with the variant + product join when exactly one row matches;\n404 when nothing matches the SKU within this tenant; 409 when the\nSKU somehow matches more than one variant (the unique index makes\nthis impossible in steady state, but the guard prevents silently\nreturning the wrong one if the index is dropped)."
          }
        }
      }
    },
    "/api/admin/merchandise/variants/{variantId}": {
      "patch": {
        "tags": [
          "MerchandiseVariantsBySku"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetSubscriptionPlanBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetSubscriptionPlanBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetSubscriptionPlanBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/merchandise/products/{productId}/variants": {
      "get": {
        "tags": [
          "MerchandiseVariants"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductVariant"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductVariant"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductVariant"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "MerchandiseVariants"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductVariantRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductVariantRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProductVariantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/merchandise/products/{productId}/variants/{variantId}": {
      "get": {
        "tags": [
          "MerchandiseVariants"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "MerchandiseVariants"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductVariantRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductVariantRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductVariantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MerchandiseVariants"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/inventory/levels": {
      "get": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockLevel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockLevel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockLevel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/inventory/adjust": {
      "post": {
        "tags": [
          "Stock"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustStockRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustStockRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustStockRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StockMovement"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockMovement"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockMovement"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/inventory/movements": {
      "get": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locationIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "kinds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/StockMovementKind"
              }
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockMovement"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockMovement"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockMovement"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/inventory/levels/{variantId}/{locationId}": {
      "patch": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetReorderThresholdsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetReorderThresholdsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetReorderThresholdsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StockLevel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockLevel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockLevel"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/inventory/transfers": {
      "get": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/StockTransferStatus"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockTransfer"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockTransfer"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockTransfer"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Stock"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTransferRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTransferRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTransferRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/inventory/transfers/{id}/receive": {
      "post": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/inventory/transfers/{id}/cancel": {
      "post": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockTransfer"
                }
              }
            }
          }
        }
      }
    },
    "/api/memberships": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Memberships"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipPlanRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipPlanRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipPlanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/memberships/{id}": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipPlanRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipPlanRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipPlanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/memberships/{id}/enrollments": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipEnrollmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipEnrollmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipEnrollmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/memberships/enrollments/{id}": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/memberships/renewals/upcoming": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/memberships/renewals/recent-charges": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/memberships/enrollments/{id}/auto-renew": {
      "post": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetAutoRenewRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetAutoRenewRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetAutoRenewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/memberships/enrollments/{id}/cancel": {
      "post": {
        "tags": [
          "Memberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reciprocal/networks": {
      "get": {
        "tags": [
          "Reciprocal"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reciprocal/validate": {
      "post": {
        "tags": [
          "Reciprocal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reciprocal/audit": {
      "get": {
        "tags": [
          "Reciprocal"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agent/conversations": {
      "get": {
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConversationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConversationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConversationDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Agent"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreateConversationBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreateConversationBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreateConversationBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent/conversations/{id}/messages": {
      "post": {
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agent/conversations/{id}": {
      "get": {
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDetailDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agent/settings": {
      "get": {
        "tags": [
          "AgentSettings"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentSettingsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentSettingsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentSettingsDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AgentSettings"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAgentSettingsBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAgentSettingsBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAgentSettingsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentSettingsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentSettingsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentSettingsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent/settings/tools": {
      "get": {
        "tags": [
          "AgentSettings"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ToolStateDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ToolStateDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ToolStateDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/agent/settings/tools/{name}": {
      "put": {
        "tags": [
          "AgentSettings"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetToolBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetToolBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetToolBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/agent/conversations": {
      "get": {
        "tags": [
          "CustomerAgent"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConversationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConversationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConversationDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CustomerAgent"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreateConversationBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreateConversationBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CreateConversationBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/agent/conversations/{id}/messages": {
      "post": {
        "tags": [
          "CustomerAgent"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/{tenantSlug}/portal/agent/conversations/{id}": {
      "get": {
        "tags": [
          "CustomerAgent"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationDetailDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CustomerAgent"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "session",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/mcp-api-tokens": {
      "get": {
        "tags": [
          "McpApiTokens"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/McpTokenDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/McpTokenDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/McpTokenDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "McpApiTokens"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueMcpTokenBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueMcpTokenBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IssueMcpTokenBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/IssueMcpTokenResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueMcpTokenResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueMcpTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/mcp-api-tokens/{id}/revoke": {
      "post": {
        "tags": [
          "McpApiTokens"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/McpTokenDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpTokenDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpTokenDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/mcp-api-tokens/{id}": {
      "delete": {
        "tags": [
          "McpApiTokens"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "tags": [
          "Mcp"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRpcRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRpcRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRpcRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/debug/mcp/tools": {
      "get": {
        "tags": [
          "McpDebug"
        ],
        "parameters": [
          {
            "name": "scope",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/McpScope"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DebugToolDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DebugToolDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DebugToolDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/debug/mcp/tools/{name}/schema": {
      "get": {
        "tags": [
          "McpDebug"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/availability": {
      "get": {
        "tags": [
          "Availability"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SlotDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SlotDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SlotDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/holds": {
      "post": {
        "tags": [
          "Holds"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateHoldBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateHoldBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateHoldBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/HoldDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoldDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoldDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/holds/{holdId}": {
      "get": {
        "tags": [
          "Holds"
        ],
        "parameters": [
          {
            "name": "holdId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/HoldDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoldDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoldDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Holds"
        ],
        "parameters": [
          {
            "name": "holdId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reservations": {
      "get": {
        "tags": [
          "Reservations"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "slotId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReservationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReservationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReservationDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Reservations"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReservationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReservationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReservationDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/reservations/{id}": {
      "get": {
        "tags": [
          "Reservations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReservationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReservationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReservationDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/reservations/{id}/cancel": {
      "post": {
        "tags": [
          "Reservations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/waitlist": {
      "get": {
        "tags": [
          "Waitlist"
        ],
        "parameters": [
          {
            "name": "slotId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WaitlistEntryDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WaitlistEntryDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WaitlistEntryDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Waitlist"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JoinWaitlistBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JoinWaitlistBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JoinWaitlistBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WaitlistEntryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaitlistEntryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WaitlistEntryDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/waitlist/{id}": {
      "delete": {
        "tags": [
          "Waitlist"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/slots/{slotId}/manifest": {
      "get": {
        "tags": [
          "Manifest"
        ],
        "parameters": [
          {
            "name": "slotId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SlotManifestDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SlotManifestDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SlotManifestDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/resource-pools": {
      "get": {
        "tags": [
          "ResourcePools"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourcePoolDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourcePoolDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourcePoolDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ResourcePools"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourcePoolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourcePoolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ResourcePoolRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/resource-pools/{id}": {
      "get": {
        "tags": [
          "ResourcePools"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ResourcePools"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourcePoolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourcePoolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ResourcePoolRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePoolDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ResourcePools"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/resource-bindings": {
      "get": {
        "tags": [
          "ProductResourceBindings"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductResourceBindingDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductResourceBindingDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductResourceBindingDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductResourceBindings"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductResourceBindingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductResourceBindingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductResourceBindingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResourceBindingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResourceBindingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResourceBindingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/resource-bindings/{bindingId}": {
      "put": {
        "tags": [
          "ProductResourceBindings"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "bindingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductResourceBindingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductResourceBindingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductResourceBindingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResourceBindingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResourceBindingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResourceBindingDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ProductResourceBindings"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "bindingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/integrations/altru/status": {
      "get": {
        "tags": [
          "Altru"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/integrations/altru/connect": {
      "post": {
        "tags": [
          "Altru"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/integrations/altru": {
      "delete": {
        "tags": [
          "Altru"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/integrations/altru/field-mappings": {
      "get": {
        "tags": [
          "Altru"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Altru"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MappingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MappingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MappingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/integrations/altru/field-mappings/{id}": {
      "delete": {
        "tags": [
          "Altru"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/integrations/altru/sync-log": {
      "get": {
        "tags": [
          "Altru"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/integrations/altru/sync-log/{id}/retry": {
      "post": {
        "tags": [
          "Altru"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/imports": {
      "get": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "entity",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ImportEntityKind"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ImportJobDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ImportJobDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ImportJobDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Imports"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateImportJobRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateImportJobRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateImportJobRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/{id}": {
      "get": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/presets": {
      "get": {
        "tags": [
          "Imports"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ImportPresetDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ImportPresetDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ImportPresetDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/template": {
      "get": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "entity",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ImportEntityKind"
            }
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "default": 1,
              "$ref": "#/components/schemas/ImportFileFormat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/imports/{id}/upload": {
      "post": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "force",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "$ref": "#/components/schemas/IFormFile"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/{id}/preview": {
      "post": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ImportPreviewDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportPreviewDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportPreviewDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/{id}/mapping": {
      "put": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ColumnMapping"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ColumnMapping"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ColumnMapping"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/{id}/start": {
      "post": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "dryRun",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/{id}/cancel": {
      "post": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJobDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/saved-presets": {
      "get": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "entity",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ImportEntityKind"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedImportPresetDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedImportPresetDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedImportPresetDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Imports"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SaveImportMappingPresetRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SaveImportMappingPresetRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SaveImportMappingPresetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SavedImportPresetDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedImportPresetDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedImportPresetDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/saved-presets/{id}": {
      "put": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameSavedPresetRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameSavedPresetRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RenameSavedPresetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SavedImportPresetDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedImportPresetDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedImportPresetDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/imports/{id}/retry-failed-rows": {
      "post": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RetryFailedRowsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetryFailedRowsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetryFailedRowsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/imports/{id}/errors.csv": {
      "get": {
        "tags": [
          "Imports"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/buyouts": {
      "get": {
        "tags": [
          "Buyout"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/group-inquiries/{inquiryId}/buyout": {
      "post": {
        "tags": [
          "Buyout"
        ],
        "parameters": [
          {
            "name": "inquiryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBuyoutBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBuyoutBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBuyoutBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyoutDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/buyouts/{id}/quote": {
      "post": {
        "tags": [
          "Buyout"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/buyouts/{id}/lock": {
      "post": {
        "tags": [
          "Buyout"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/buyouts/{id}/release": {
      "post": {
        "tags": [
          "Buyout"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ReleaseBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ReleaseBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ReleaseBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/buyouts/{id}/send-quote-link": {
      "post": {
        "tags": [
          "Buyout"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SendQuoteLinkResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendQuoteLinkResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendQuoteLinkResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/buyouts/{id}/mark-deposit-paid": {
      "post": {
        "tags": [
          "Buyout"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkDepositPaidBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkDepositPaidBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MarkDepositPaidBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/groups/inquiries": {
      "get": {
        "tags": [
          "Groups"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/groups/inquiries/{id}": {
      "get": {
        "tags": [
          "Groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/groups/inquiries/{id}/quote": {
      "post": {
        "tags": [
          "Groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/groups/invoices/{id}/mark-paid": {
      "post": {
        "tags": [
          "Groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkPaidRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkPaidRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MarkPaidRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/groups/invoices": {
      "get": {
        "tags": [
          "Groups"
        ],
        "parameters": [
          {
            "name": "paid",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/gift-cards/redeem": {
      "post": {
        "tags": [
          "GiftCardRedemption"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemGiftCardsBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemGiftCardsBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemGiftCardsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/gift-cards": {
      "get": {
        "tags": [
          "GiftCards"
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "GiftCards"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardManualIssueBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardManualIssueBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardManualIssueBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/gift-cards/{id}": {
      "get": {
        "tags": [
          "GiftCards"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/gift-cards/{id}/void": {
      "post": {
        "tags": [
          "GiftCards"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardVoidBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardVoidBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardVoidBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/gift-cards/{id}/adjust": {
      "post": {
        "tags": [
          "GiftCards"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardAdjustBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardAdjustBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardAdjustBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/fx-rates": {
      "get": {
        "tags": [
          "FxRates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FxRateDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FxRateDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FxRateDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "FxRates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertFxRateBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertFxRateBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertFxRateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FxRateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FxRateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FxRateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/fx-rates/{id}": {
      "delete": {
        "tags": [
          "FxRates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/fx-rates/convert": {
      "get": {
        "tags": [
          "FxRates"
        ],
        "parameters": [
          {
            "name": "amount",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FxConversionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FxConversionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FxConversionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/exports/customers": {
      "get": {
        "tags": [
          "Exports"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "schema": {
              "default": 0,
              "$ref": "#/components/schemas/ExportFormat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/exports/products": {
      "get": {
        "tags": [
          "Exports"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "schema": {
              "default": 0,
              "$ref": "#/components/schemas/ExportFormat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/exports/reservations": {
      "get": {
        "tags": [
          "Exports"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "schema": {
              "default": 0,
              "$ref": "#/components/schemas/ExportFormat"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/exports/promo-codes": {
      "get": {
        "tags": [
          "Exports"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "schema": {
              "default": 0,
              "$ref": "#/components/schemas/ExportFormat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/exports/tax-rules": {
      "get": {
        "tags": [
          "Exports"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "schema": {
              "default": 0,
              "$ref": "#/components/schemas/ExportFormat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/price-experiments": {
      "get": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PriceExperimentStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExperimentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExperimentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExperimentDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PriceExperiments"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-experiments/{id}": {
      "get": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/price-experiments/{id}/start": {
      "post": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-experiments/{id}/conclude": {
      "post": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExperimentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-experiments/{id}/variants": {
      "get": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VariantDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VariantDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VariantDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VariantRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VariantRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VariantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VariantDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VariantDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VariantDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/price-experiments/{id}/variants/{variantId}": {
      "put": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VariantRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VariantRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VariantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/VariantDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VariantDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VariantDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PriceExperiments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/entry-policies": {
      "get": {
        "tags": [
          "EntryPolicies"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EntryPolicyDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EntryPolicyDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EntryPolicyDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "EntryPolicies"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntryPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EntryPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EntryPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/entry-policies/{id}": {
      "get": {
        "tags": [
          "EntryPolicies"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "EntryPolicies"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntryPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EntryPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EntryPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPolicyDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "EntryPolicies"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/entry/passes/{code}": {
      "get": {
        "tags": [
          "Entry"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPassDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPassDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPassDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/entry/reservations/{reservationId}/pass": {
      "get": {
        "tags": [
          "Entry"
        ],
        "parameters": [
          {
            "name": "reservationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPassDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPassDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryPassDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/entry/validate": {
      "post": {
        "tags": [
          "Entry"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EntryScanOutcomeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryScanOutcomeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryScanOutcomeDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/entry/scan": {
      "post": {
        "tags": [
          "Entry"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ScanBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EntryScanOutcomeDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryScanOutcomeDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryScanOutcomeDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/entry/stations": {
      "get": {
        "tags": [
          "EntryStations"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GateStationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GateStationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GateStationDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "EntryStations"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GateStationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GateStationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GateStationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GateStationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GateStationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GateStationDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/entry/stations/{id}": {
      "put": {
        "tags": [
          "EntryStations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GateStationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GateStationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GateStationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GateStationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GateStationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GateStationDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "EntryStations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/health/live": {
      "get": {
        "tags": [
          "Health"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/health/ready": {
      "get": {
        "tags": [
          "Health"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/_whoami": {
      "get": {
        "tags": [
          "WhoAmI"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/dashboard/summary": {
      "get": {
        "tags": [
          "Dashboard"
        ],
        "summary": "Bundled dashboard analytics for the authenticated workspace.",
        "description": "Aggregates the last `30 days` of confirmed/completed bookings by day, today's\noperational counters, a distribution-channel split (falling back to \"Direct site\"\nwhen no external reference is recorded), top products by booking count, and a\nmerged activity feed spanning reservations, voucher redemptions, gate scans, and\nnew memberships.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardSummaryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardSummaryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardSummaryDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/customer-memberships": {
      "get": {
        "tags": [
          "CustomerMemberships"
        ],
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerMembershipDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerMembershipDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerMembershipDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CustomerMemberships"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMembershipRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMembershipRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMembershipRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/customer-memberships/{id}": {
      "get": {
        "tags": [
          "CustomerMemberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CustomerMemberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMembershipRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMembershipRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMembershipRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMembershipDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CustomerMemberships"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/customers": {
      "get": {
        "tags": [
          "Customers"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Customers"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/customers/{id}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Customers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Customers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/customers/{id}/payment-methods": {
      "get": {
        "tags": [
          "Customers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedPaymentMethodDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedPaymentMethodDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedPaymentMethodDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/customers/{id}/bookings": {
      "get": {
        "tags": [
          "Customers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerBookingDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerBookingDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerBookingDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/customers/{id}/link-user": {
      "post": {
        "tags": [
          "Customers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LinkUserRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LinkUserRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LinkUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Customers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/analytics/labor-vs-revenue": {
      "get": {
        "tags": [
          "CrewAnalytics"
        ],
        "summary": "Returns per-day labor cost vs revenue for the requested window.\nBoth `from` and `to` are ISO 8601 DateTimeOffset strings.\n`to` must be after `from` or a 400 is returned.\nResults are cached for 60 seconds per (tenant, from, to, productId).",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/LaborVsRevenueSeries"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaborVsRevenueSeries"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaborVsRevenueSeries"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/analytics/per-slot-labor-cost": {
      "get": {
        "tags": [
          "CrewAnalytics"
        ],
        "summary": "Returns the aggregated labor cost for a single slot.\nReturns 404 if the slot does not exist within the current tenant.\nResults are NOT cached (single-slot queries are cheap).",
        "parameters": [
          {
            "name": "slotId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PerSlotLaborCostDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PerSlotLaborCostDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PerSlotLaborCostDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/availability": {
      "get": {
        "tags": [
          "CrewAvailability"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewAvailabilityDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewAvailabilityDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewAvailabilityDto"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CrewAvailability"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutAvailabilityBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PutAvailabilityBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PutAvailabilityBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewAvailabilityDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewAvailabilityDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewAvailabilityDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/import": {
      "post": {
        "tags": [
          "CrewBulkImport"
        ],
        "parameters": [
          {
            "name": "dryRun",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "$ref": "#/components/schemas/IFormFile"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BulkImportResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkImportResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkImportResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/certifications": {
      "get": {
        "tags": [
          "CrewCertifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CertificationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CertificationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CertificationDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CrewCertifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CertificationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CertificationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificationDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/certifications/{certId}": {
      "put": {
        "tags": [
          "CrewCertifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "certId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CertificationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CertificationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CertificationDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificationDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CertificationDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CrewCertifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "certId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew-members/{id}/certifications/{certId}/document": {
      "post": {
        "tags": [
          "CrewCertifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "certId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "$ref": "#/components/schemas/IFormFile"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "CrewCertifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "certId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/certifications": {
      "get": {
        "tags": [
          "CrewCertifications"
        ],
        "parameters": [
          {
            "name": "expiringWithinDays",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "crewMemberId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantCertificationDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantCertificationDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantCertificationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/certifications/expiring": {
      "get": {
        "tags": [
          "CrewCertifications"
        ],
        "parameters": [
          {
            "name": "within",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExpiringCertDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExpiringCertDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExpiringCertDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members": {
      "get": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "includeInactive",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewMemberDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewMemberDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewMemberDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Crew"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMemberRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}": {
      "get": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CrewMemberRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewMemberDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew-members/{id}/invite": {
      "post": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteCrewBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteCrewBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InviteCrewBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewInviteResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewInviteResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewInviteResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/photo": {
      "post": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "$ref": "#/components/schemas/IFormFile"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew-members/{id}/revoke-pin": {
      "post": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew-members/{id}/unlink-user": {
      "post": {
        "tags": [
          "Crew"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/slots/{slotId}/assignments": {
      "get": {
        "tags": [
          "SlotAssignments"
        ],
        "parameters": [
          {
            "name": "slotId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SlotAssignmentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SlotAssignmentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SlotAssignmentDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "SlotAssignments"
        ],
        "parameters": [
          {
            "name": "slotId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignCrewBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignCrewBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AssignCrewBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SlotAssignmentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SlotAssignmentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SlotAssignmentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/slots/{slotId}/assignments/{assignmentId}": {
      "delete": {
        "tags": [
          "SlotAssignments"
        ],
        "parameters": [
          {
            "name": "slotId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew-members/{id}/punches": {
      "get": {
        "tags": [
          "CrewPunches"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PunchDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PunchDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PunchDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CrewPunches"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdminPunchBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AdminPunchBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AdminPunchBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/punches/{punchId}": {
      "put": {
        "tags": [
          "CrewPunches"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "punchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdminPunchBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AdminPunchBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AdminPunchBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/summary": {
      "get": {
        "tags": [
          "CrewPunches"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PunchSummaryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchSummaryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchSummaryDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/punches.csv": {
      "get": {
        "tags": [
          "CrewPunches"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/compliance-report": {
      "get": {
        "tags": [
          "CrewPunches"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewComplianceRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewComplianceRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewComplianceRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/shifts/{shiftId}/open-for-claim": {
      "get": {
        "tags": [
          "CrewShiftMarketplace"
        ],
        "parameters": [
          {
            "name": "shiftId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftSummaryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftSummaryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftSummaryDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CrewShiftMarketplace"
        ],
        "parameters": [
          {
            "name": "shiftId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetOpenForClaimBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetOpenForClaimBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetOpenForClaimBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftSummaryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftSummaryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftSummaryDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/shift-claims": {
      "get": {
        "tags": [
          "CrewShiftMarketplace"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ShiftClaimStatus"
            }
          },
          {
            "name": "shiftId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftClaimDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftClaimDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftClaimDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/shift-claims/{claimId}/decide": {
      "post": {
        "tags": [
          "CrewShiftMarketplace"
        ],
        "parameters": [
          {
            "name": "claimId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketplaceDecideBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketplaceDecideBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MarketplaceDecideBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/shift-swaps": {
      "get": {
        "tags": [
          "CrewShiftMarketplace"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ShiftSwapStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftSwapDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftSwapDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftSwapDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/shift-swaps/{swapId}/decide": {
      "post": {
        "tags": [
          "CrewShiftMarketplace"
        ],
        "parameters": [
          {
            "name": "swapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketplaceDecideBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketplaceDecideBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MarketplaceDecideBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/shifts": {
      "get": {
        "tags": [
          "CrewShifts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "includeDrafts",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewShiftDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewShiftDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewShiftDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CrewShifts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertShiftBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertShiftBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertShiftBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/shifts/{shiftId}": {
      "put": {
        "tags": [
          "CrewShifts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "shiftId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertShiftBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertShiftBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertShiftBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewShiftDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CrewShifts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "shiftId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/schedule": {
      "get": {
        "tags": [
          "CrewShifts"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "includeDrafts",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewScheduleRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewScheduleRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewScheduleRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/schedule/copy-week": {
      "post": {
        "tags": [
          "CrewShifts"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CopyWeekBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CopyWeekBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CopyWeekBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CopyWeekResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CopyWeekResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CopyWeekResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/schedule/publish": {
      "post": {
        "tags": [
          "CrewShifts"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublishBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PublishResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/shift-templates": {
      "get": {
        "tags": [
          "CrewShiftTemplates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftTemplateDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftTemplateDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftTemplateDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CrewShiftTemplates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTemplateBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTemplateBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTemplateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftTemplateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftTemplateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftTemplateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/shift-templates/{id}": {
      "put": {
        "tags": [
          "CrewShiftTemplates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTemplateBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTemplateBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTemplateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftTemplateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftTemplateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftTemplateDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CrewShiftTemplates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/shift-templates/{id}/apply": {
      "post": {
        "tags": [
          "CrewShiftTemplates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyTemplateBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyTemplateBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyTemplateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApplyTemplateResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplyTemplateResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplyTemplateResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/time-off": {
      "get": {
        "tags": [
          "CrewTimeOff"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/CrewTimeOffStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CrewTimeOff"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitTimeOffBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitTimeOffBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitTimeOffBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/time-off": {
      "get": {
        "tags": [
          "CrewTimeOff"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/CrewTimeOffStatus"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "crewMemberId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantCrewTimeOffRequestDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantCrewTimeOffRequestDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantCrewTimeOffRequestDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/time-off": {
      "post": {
        "tags": [
          "CrewTimeOff"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitTimeOffBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitTimeOffBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitTimeOffBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "MyCrew"
        ],
        "summary": "Caller's time-off requests, newest first. Useful both for the\n\"what did I submit\" review and for surfacing approved time-off\nalongside the schedule.",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/CrewTimeOffStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyTimeOffDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyTimeOffDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyTimeOffDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/time-off/{reqId}/decide": {
      "post": {
        "tags": [
          "CrewTimeOff"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reqId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DecideBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DecideBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DecideBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew-members/{id}/time-off/{reqId}/cancel": {
      "post": {
        "tags": [
          "CrewTimeOff"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reqId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewTimeOffRequestDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/labor-rules": {
      "get": {
        "tags": [
          "LaborRules"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/LaborRulesDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaborRulesDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaborRulesDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "LaborRules"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LaborRulesBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LaborRulesBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LaborRulesBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/LaborRulesDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaborRulesDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaborRulesDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/shifts": {
      "get": {
        "tags": [
          "MyCrew"
        ],
        "summary": "Caller's published shifts in the supplied window. Defaults to\n\"today through 14 days out\" so the mobile crew tab can render\nthe next two weeks without an explicit date picker on first\nopen. Drafts (Scheduled with PublishedAt == null) are filtered\n— crew shouldn't see in-progress schedules until a manager\npublishes the week.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyShiftDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyShiftDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyShiftDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/hours-summary": {
      "get": {
        "tags": [
          "MyCrew"
        ],
        "summary": "Hours rollup — today + the rolling 7-day window — so the mobile\ncrew tab can render a \"this week\" summary without trying to\nreconstruct it from raw punches client-side. Returns\npre-computed minutes; converting to hours is a render concern.\nClosed punches only; an in-progress punch's running time is\nsurfaced separately in MyPunchStateDto.todayMinutesWorked.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MyHoursSummaryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyHoursSummaryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyHoursSummaryDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/marketplace/open-shifts": {
      "get": {
        "tags": [
          "MyMarketplace"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpenShiftDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpenShiftDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpenShiftDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/marketplace/claim": {
      "post": {
        "tags": [
          "MyMarketplace"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitClaimBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitClaimBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitClaimBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/marketplace/my-claims": {
      "get": {
        "tags": [
          "MyMarketplace"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ShiftClaimStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftClaimDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftClaimDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftClaimDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/marketplace/claim/{claimId}/cancel": {
      "post": {
        "tags": [
          "MyMarketplace"
        ],
        "parameters": [
          {
            "name": "claimId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftClaimDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/marketplace/my-swaps": {
      "get": {
        "tags": [
          "MyMarketplace"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftSwapDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftSwapDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShiftSwapDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/marketplace/swap": {
      "post": {
        "tags": [
          "MyMarketplace"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitSwapBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitSwapBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitSwapBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/marketplace/swap/{swapId}/cancel": {
      "post": {
        "tags": [
          "MyMarketplace"
        ],
        "parameters": [
          {
            "name": "swapId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSwapDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/current": {
      "get": {
        "tags": [
          "MyPunch"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MyPunchStateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPunchStateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPunchStateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/punch-in": {
      "post": {
        "tags": [
          "MyPunch"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PunchInBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PunchInBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PunchInBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/punch-out": {
      "post": {
        "tags": [
          "MyPunch"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PunchOutBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PunchOutBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PunchOutBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/break-start": {
      "post": {
        "tags": [
          "MyPunch"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/me/break-end": {
      "post": {
        "tags": [
          "MyPunch"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PunchDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/crew/payroll/gusto/status": {
      "get": {
        "tags": [
          "PayrollIntegrations"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/gusto/oauth/start": {
      "get": {
        "tags": [
          "PayrollIntegrations"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/gusto/oauth/callback": {
      "get": {
        "tags": [
          "PayrollIntegrations"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/gusto": {
      "delete": {
        "tags": [
          "PayrollIntegrations"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/quickbooks/status": {
      "get": {
        "tags": [
          "PayrollIntegrations"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/quickbooks/oauth/start": {
      "get": {
        "tags": [
          "PayrollIntegrations"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/quickbooks/oauth/callback": {
      "get": {
        "tags": [
          "PayrollIntegrations"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "realmId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/quickbooks": {
      "delete": {
        "tags": [
          "PayrollIntegrations"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/sync": {
      "post": {
        "tags": [
          "PayrollSync"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/crew/payroll/history": {
      "get": {
        "tags": [
          "PayrollSync"
        ],
        "parameters": [
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/placements": {
      "get": {
        "tags": [
          "CmsBlockPlacements"
        ],
        "parameters": [
          {
            "name": "slot",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsBlockPlacements"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePlacementDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePlacementDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePlacementDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/placements/{id}": {
      "put": {
        "tags": [
          "CmsBlockPlacements"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePlacementDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePlacementDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePlacementDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsBlockPlacements"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/placements/reorder": {
      "post": {
        "tags": [
          "CmsBlockPlacements"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderPlacementsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderPlacementsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderPlacementsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blocks": {
      "get": {
        "tags": [
          "CmsBlocks"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsBlocks"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCmsBlockDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCmsBlockDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCmsBlockDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blocks/reserved-codes": {
      "get": {
        "tags": [
          "CmsBlocks"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blocks/{id}": {
      "get": {
        "tags": [
          "CmsBlocks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "CmsBlocks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCmsBlockDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCmsBlockDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCmsBlockDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsBlocks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blocks/{id}/publish": {
      "post": {
        "tags": [
          "CmsBlocks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blocks/{id}/unpublish": {
      "post": {
        "tags": [
          "CmsBlocks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blocks/{id}/duplicate": {
      "post": {
        "tags": [
          "CmsBlocks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-authors": {
      "get": {
        "tags": [
          "CmsBlogAuthors"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsBlogAuthors"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-authors/{id}": {
      "get": {
        "tags": [
          "CmsBlogAuthors"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "CmsBlogAuthors"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsBlogAuthors"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-comments": {
      "get": {
        "tags": [
          "CmsBlogComments"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "blogId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "postId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-comments/{id}": {
      "get": {
        "tags": [
          "CmsBlogComments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsBlogComments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-comments/{id}/approve": {
      "post": {
        "tags": [
          "CmsBlogComments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-comments/{id}/reject": {
      "post": {
        "tags": [
          "CmsBlogComments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-comments/{id}/restore": {
      "post": {
        "tags": [
          "CmsBlogComments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-comments/approve-bulk": {
      "post": {
        "tags": [
          "CmsBlogComments"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-comments/reject-bulk": {
      "post": {
        "tags": [
          "CmsBlogComments"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blog-comments/delete-bulk": {
      "post": {
        "tags": [
          "CmsBlogComments"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/posts": {
      "get": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBlogPostRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBlogPostRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBlogPostRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/posts/{id}": {
      "get": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBlogPostRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBlogPostRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBlogPostRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/posts/{id}/publish": {
      "post": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/BlogPostPublishRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/BlogPostPublishRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/BlogPostPublishRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/posts/{id}/schedule": {
      "post": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlogPostScheduleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BlogPostScheduleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BlogPostScheduleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/posts/{id}/trash": {
      "post": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/posts/{id}/restore": {
      "post": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/posts/{id}/slug-history": {
      "get": {
        "tags": [
          "CmsBlogPosts"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs": {
      "get": {
        "tags": [
          "CmsBlogs"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsBlogs"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBlogRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBlogRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBlogRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{id}": {
      "get": {
        "tags": [
          "CmsBlogs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "CmsBlogs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBlogRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBlogRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBlogRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsBlogs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/categories": {
      "get": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/categories/{id}": {
      "get": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/tags": {
      "get": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/blogs/{blogId}/tags/{id}": {
      "get": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsBlogTaxonomy"
        ],
        "parameters": [
          {
            "name": "blogId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/seed-demo": {
      "post": {
        "tags": [
          "CmsDemoSeed"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/legal": {
      "get": {
        "tags": [
          "CmsLegalDocuments"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/legal/{kind}": {
      "put": {
        "tags": [
          "CmsLegalDocuments"
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalDocumentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalDocumentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LegalDocumentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/links/check": {
      "post": {
        "tags": [
          "CmsLinks"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckLinksRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckLinksRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CheckLinksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/media": {
      "get": {
        "tags": [
          "CmsMedia"
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/media/upload": {
      "post": {
        "tags": [
          "CmsMedia"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "$ref": "#/components/schemas/IFormFile"
                  },
                  "Tags": {
                    "maxLength": 500,
                    "minLength": 0,
                    "type": "string"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/media/{id}/raw": {
      "get": {
        "tags": [
          "CmsMedia"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/media/{id}": {
      "put": {
        "tags": [
          "CmsMedia"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMediaRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMediaRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMediaRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsMedia"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/menus": {
      "get": {
        "tags": [
          "CmsMenus"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsMenus"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MenuRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MenuRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MenuRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/menus/{id}": {
      "put": {
        "tags": [
          "CmsMenus"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MenuRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MenuRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MenuRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsMenus"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/menus/{id}/items": {
      "post": {
        "tags": [
          "CmsMenus"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MenuItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MenuItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MenuItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/menus/items/{itemId}": {
      "put": {
        "tags": [
          "CmsMenus"
        ],
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MenuItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MenuItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MenuItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsMenus"
        ],
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/menus/validate-target": {
      "get": {
        "tags": [
          "CmsMenus"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ref",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/menus/{menuId}/health": {
      "get": {
        "tags": [
          "CmsMenus"
        ],
        "parameters": [
          {
            "name": "menuId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/menus/{id}/reorder": {
      "post": {
        "tags": [
          "CmsMenus"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsPages"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/reserved-slugs": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/page-types": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/trash": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCmsPageDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCmsPageDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCmsPageDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/seed-defaults": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeedDefaultsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SeedDefaultsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SeedDefaultsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/restore": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/publish": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PublishRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PublishRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/PublishRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/unpublish": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/versions": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/versions/{versionId}": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/revert/{versionId}": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/duplicate": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/preview-token": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/references": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "productSlug",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSlug",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/admin/rebuild-references": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/change-type": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePageTypeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePageTypeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePageTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/pages/{id}/schedule-unpublish": {
      "post": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleUnpublishRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleUnpublishRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleUnpublishRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/search": {
      "get": {
        "tags": [
          "CmsPages"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/settings": {
      "get": {
        "tags": [
          "CmsSiteSettings"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "CmsSiteSettings"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteSettingsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteSettingsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SiteSettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/templates": {
      "get": {
        "tags": [
          "CmsTemplates"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/themes/{id}/preview-token": {
      "post": {
        "tags": [
          "CmsThemePreview"
        ],
        "summary": "Issues the `ts-theme-preview` cookie for id.\nReturns 204 No Content on success.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/themes": {
      "get": {
        "tags": [
          "CmsThemes"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "CmsThemes"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateThemeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateThemeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateThemeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        }
      }
    },
    "/api/cms/themes/{id}": {
      "get": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeDetailDto"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateThemeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateThemeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateThemeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/themes/{id}/files": {
      "put": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutFileRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PutFileRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PutFileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "path",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/themes/{id}/files/asset": {
      "get": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "path",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/themes/{id}/publish": {
      "post": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishThemeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishThemeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublishThemeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "pattern": "^-?(?:0|[1-9]\\d*)$",
                  "type": [
                    "integer",
                    "string"
                  ],
                  "format": "int32"
                }
              },
              "application/json": {
                "schema": {
                  "pattern": "^-?(?:0|[1-9]\\d*)$",
                  "type": [
                    "integer",
                    "string"
                  ],
                  "format": "int32"
                }
              },
              "text/json": {
                "schema": {
                  "pattern": "^-?(?:0|[1-9]\\d*)$",
                  "type": [
                    "integer",
                    "string"
                  ],
                  "format": "int32"
                }
              }
            }
          }
        }
      }
    },
    "/api/cms/themes/activate": {
      "post": {
        "tags": [
          "CmsThemes"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateThemeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateThemeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateThemeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/themes/{id}/versions": {
      "get": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ThemeVersionDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ThemeVersionDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ThemeVersionDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/cms/themes/{id}/restore-version": {
      "post": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RestoreVersionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RestoreVersionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RestoreVersionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/themes/{id}/export": {
      "get": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/cms/themes/{id}/import": {
      "post": {
        "tags": [
          "CmsThemes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "$ref": "#/components/schemas/IFormFile"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/class-series": {
      "get": {
        "tags": [
          "ClassSeriesOperator"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClassSeriesDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClassSeriesDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClassSeriesDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ClassSeriesOperator"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSeriesCreateBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSeriesCreateBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSeriesCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSeriesDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSeriesDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSeriesDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/class-series/{seriesId}/cancel": {
      "post": {
        "tags": [
          "ClassSeriesOperator"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "seriesId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ClassSeriesCancelBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ClassSeriesCancelBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ClassSeriesCancelBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/class-series/{seriesId}/purchase": {
      "post": {
        "tags": [
          "ClassSeriesBooking"
        ],
        "parameters": [
          {
            "name": "seriesId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSeriesPurchaseBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSeriesPurchaseBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSeriesPurchaseBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSeriesPurchaseResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSeriesPurchaseResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSeriesPurchaseResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/class-series/purchases/{parentHoldId}/cancel": {
      "post": {
        "tags": [
          "ClassSeriesBooking"
        ],
        "parameters": [
          {
            "name": "parentHoldId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ClassSeriesCancelBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ClassSeriesCancelBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ClassSeriesCancelBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/channels": {
      "get": {
        "tags": [
          "Channels"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Channels"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/channels/{id}": {
      "get": {
        "tags": [
          "Channels"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Channels"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Channels"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/channels/sync-status": {
      "get": {
        "tags": [
          "Channels"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelSyncStatusRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelSyncStatusRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelSyncStatusRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/channels/{id}/sync-status": {
      "get": {
        "tags": [
          "Channels"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelSyncStatusRow"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelSyncStatusRow"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelSyncStatusRow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/channels/{id}/resync": {
      "post": {
        "tags": [
          "Channels"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/channel-listings": {
      "get": {
        "tags": [
          "ProductChannelListings"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductChannelListingDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductChannelListingDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductChannelListingDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductChannelListings"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductChannelListingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductChannelListingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductChannelListingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProductChannelListingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductChannelListingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductChannelListingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{productId}/channel-listings/{id}": {
      "delete": {
        "tags": [
          "ProductChannelListings"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/products/{productId}/channel-listings/{id}/resync": {
      "post": {
        "tags": [
          "ProductChannelListings"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/external-references": {
      "get": {
        "tags": [
          "ExternalReferences"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "channelId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalReferenceDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalReferenceDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalReferenceDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ExternalReferences"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalReferenceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalReferenceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalReferenceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalReferenceDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalReferenceDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalReferenceDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/external-references/{id}": {
      "delete": {
        "tags": [
          "ExternalReferences"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/bookings": {
      "get": {
        "tags": [
          "Bookings"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BookingPage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingPage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/bookings/{id}": {
      "get": {
        "tags": [
          "Bookings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/bookings/by-ref/{bookingRef}": {
      "get": {
        "tags": [
          "Bookings"
        ],
        "parameters": [
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/bookings/{id}/no-show": {
      "post": {
        "tags": [
          "Bookings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/bookings/{id}/complete": {
      "post": {
        "tags": [
          "Bookings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/bookings/{id}/cancel": {
      "post": {
        "tags": [
          "Bookings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBookingBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBookingBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBookingBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/bookings/{id}/reschedule": {
      "post": {
        "tags": [
          "Bookings"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OperatorRescheduleBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OperatorRescheduleBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OperatorRescheduleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorRescheduleResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorRescheduleResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorRescheduleResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/group-quotes": {
      "post": {
        "tags": [
          "GroupQuotes"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGroupQuoteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGroupQuoteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGroupQuoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "GroupQuotes"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "customerEmail",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GroupQuoteDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GroupQuoteDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GroupQuoteDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/group-quotes/{id}": {
      "get": {
        "tags": [
          "GroupQuotes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/group-quotes/{id}/approve": {
      "post": {
        "tags": [
          "GroupQuotes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/group-quotes/{id}/cancel": {
      "post": {
        "tags": [
          "GroupQuotes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/group-quotes/{id}/convert": {
      "post": {
        "tags": [
          "GroupQuotes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConvertGroupQuoteResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConvertGroupQuoteResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConvertGroupQuoteResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/group-quotes/bulk-convert": {
      "post": {
        "tags": [
          "GroupQuotes"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkConvertGroupQuotesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkConvertGroupQuotesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkConvertGroupQuotesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BulkConvertGroupQuotesResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkConvertGroupQuotesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkConvertGroupQuotesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/group-quotes/analytics": {
      "get": {
        "tags": [
          "GroupQuotes"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteAnalyticsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteAnalyticsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupQuoteAnalyticsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/refund-schedules": {
      "get": {
        "tags": [
          "RefundSchedules"
        ],
        "parameters": [
          {
            "name": "includeInactive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundScheduleDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundScheduleDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundScheduleDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "RefundSchedules"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundScheduleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundScheduleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RefundScheduleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/refund-schedules/{id}": {
      "get": {
        "tags": [
          "RefundSchedules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "RefundSchedules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundScheduleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundScheduleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RefundScheduleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "RefundSchedules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/refund-schedules/{id}/bands": {
      "get": {
        "tags": [
          "RefundSchedules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundScheduleBandDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundScheduleBandDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RefundScheduleBandDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "RefundSchedules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BandRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BandRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleBandDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleBandDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleBandDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/refund-schedules/{id}/bands/{bandId}": {
      "put": {
        "tags": [
          "RefundSchedules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "bandId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BandRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BandRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleBandDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleBandDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundScheduleBandDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "RefundSchedules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "bandId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agents": {
      "get": {
        "tags": [
          "Agents"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgentDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Agents"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/agents/{id}": {
      "get": {
        "tags": [
          "Agents"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDetailDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDetailDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDetailDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Agents"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Agents"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/agents/{agentId}/contracts": {
      "get": {
        "tags": [
          "Agents"
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgentContractDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgentContractDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgentContractDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Agents"
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentContractRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentContractRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentContractRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentContractDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentContractDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentContractDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/agents/{agentId}/contracts/{contractId}": {
      "put": {
        "tags": [
          "Agents"
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "contractId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentContractRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentContractRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentContractRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentContractDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentContractDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentContractDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Agents"
        ],
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "contractId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/members": {
      "get": {
        "tags": [
          "Members"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MemberDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MemberDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MemberDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Members"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InviteMemberRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MemberDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/members/{membershipId}": {
      "patch": {
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "name": "membershipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MemberDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "name": "membershipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/members/{membershipId}/roles": {
      "post": {
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "name": "membershipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignRoleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignRoleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AssignRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/members/{membershipId}/roles/{roleId}": {
      "delete": {
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "name": "membershipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "roleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/roles": {
      "get": {
        "tags": [
          "Roles"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Roles"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/roles/{id}": {
      "put": {
        "tags": [
          "Roles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRoleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRoleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Roles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/permissions": {
      "get": {
        "tags": [
          "Roles"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tenant-api-keys": {
      "get": {
        "tags": [
          "TenantApiKeys"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantApiKeyDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantApiKeyDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantApiKeyDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TenantApiKeys"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueTenantApiKeyBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueTenantApiKeyBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IssueTenantApiKeyBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/IssueTenantApiKeyResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueTenantApiKeyResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueTenantApiKeyResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/tenant-api-keys/eligible-users": {
      "get": {
        "tags": [
          "TenantApiKeys"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EligibleUserDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EligibleUserDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EligibleUserDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tenant-api-keys/{id}/revoke": {
      "post": {
        "tags": [
          "TenantApiKeys"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantApiKeyDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantApiKeyDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantApiKeyDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/tenant-api-keys/{id}": {
      "delete": {
        "tags": [
          "TenantApiKeys"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/register": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/login": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LoginBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/social/{provider}": {
      "post": {
        "tags": [
          "Auth"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SocialLoginBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SocialLoginBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SocialLoginBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/login/begin": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BeginLoginBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BeginLoginBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BeginLoginBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BeginLoginResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BeginLoginResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BeginLoginResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/login/select": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SelectTenantBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SelectTenantBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SelectTenantBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/refresh": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/logout": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/password-reset/request": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/forgot-password": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/password-reset/complete": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetCompleteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetCompleteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetCompleteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordResetCompleteResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordResetCompleteResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordResetCompleteResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/reset-password": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetCompleteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetCompleteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetCompleteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordResetCompleteResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordResetCompleteResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasswordResetCompleteResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/step-up": {
      "post": {
        "tags": [
          "StepUp"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StepUpBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StepUpBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StepUpBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StepUpResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StepUpResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StepUpResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/whoami": {
      "get": {
        "tags": [
          "WhoAmI"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workspaces": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkspaceDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkspaceDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkspaceDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Workspaces"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWorkspaceBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWorkspaceBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWorkspaceBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/workspaces/switch": {
      "post": {
        "tags": [
          "Workspaces"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SwitchWorkspaceBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SwitchWorkspaceBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SwitchWorkspaceBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/audit-log": {
      "get": {
        "tags": [
          "AuditLog"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "action",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/AuditAction"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuditLogPage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditLogPage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditLogPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/audit-log/entity-types": {
      "get": {
        "tags": [
          "AuditLog"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/audit/pricing": {
      "get": {
        "tags": [
          "PricingAudit"
        ],
        "summary": "Returns a paginated, tenant-scoped audit trail for pricing entities.\nAll parameters are optional and combinable.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Inclusive lower bound on CreatedAt (UTC).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "Inclusive upper bound on CreatedAt (UTC).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "entityType",
            "in": "query",
            "description": "One of: RatePlan, PriceList, PricingModifier, PromoCode, Fee, AddOn.\nOmit to return all pricing entity types.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "description": "Filter to a single entity's history.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "1-based page number (default 1).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Rows per page, 1–200 (default 50).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PricingAuditPage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingAuditPage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingAuditPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/analytics/storefront-overview": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "granularity",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "day"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StorefrontOverviewResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorefrontOverviewResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorefrontOverviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/analytics/page-performance": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "pageSlug",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PagePerformanceResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagePerformanceResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagePerformanceResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/analytics/checkout-funnel": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutFunnelResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutFunnelResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutFunnelResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/analytics/addon-revenue": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnRevenueResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnRevenueResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddOnRevenueResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/analytics/top": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "metric",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "range",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAnalyticsRowDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAnalyticsRowDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAnalyticsRowDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/analytics/summary": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "range",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAnalyticsSummaryDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAnalyticsSummaryDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAnalyticsSummaryDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/api-keys": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ApiKeyDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ApiKeyDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ApiKeyDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AffiliatePortal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyCreateResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyCreateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyCreateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/api-keys/{id}": {
      "delete": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-api/v1/products": {
      "get": {
        "tags": [
          "AffiliateApi"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/V1ProductDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/V1ProductDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/V1ProductDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-api/v1/products/{slug}/availability": {
      "get": {
        "tags": [
          "AffiliateApi"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/V1SlotDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/V1SlotDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/V1SlotDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-api/v1/quotes": {
      "post": {
        "tags": [
          "AffiliateApi"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V1QuoteBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/V1QuoteBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/V1QuoteBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PricingQuote"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingQuote"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingQuote"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-api/v1/bookings": {
      "post": {
        "tags": [
          "AffiliateApi"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V1BookingBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/V1BookingBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/V1BookingBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/V1BookingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V1BookingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/V1BookingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-api/v1/bookings/{bookingRef}/cancel": {
      "post": {
        "tags": [
          "AffiliateApi"
        ],
        "parameters": [
          {
            "name": "bookingRef",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V1CancelBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/V1CancelBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/V1CancelBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-assets": {
      "get": {
        "tags": [
          "AffiliateAssets"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAssetDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAssetDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAssetDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AffiliateAssets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetUpsertRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetUpsertRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetUpsertRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-assets/{id}": {
      "get": {
        "tags": [
          "AffiliateAssets"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AffiliateAssets"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetUpsertRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetUpsertRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetUpsertRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AffiliateAssets"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-assets/performance": {
      "get": {
        "tags": [
          "AffiliateAssets"
        ],
        "parameters": [
          {
            "name": "range",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "30d"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorAssetPerformanceDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorAssetPerformanceDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorAssetPerformanceDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-assets/bulk": {
      "post": {
        "tags": [
          "AffiliateAssets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetsBulkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetsBulkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateAssetsBulkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-assets/{id}/variants": {
      "post": {
        "tags": [
          "AffiliateAssets"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "$ref": "#/components/schemas/IFormFile"
                  },
                  "Label": {
                    "maxLength": 120,
                    "minLength": 0,
                    "type": "string"
                  },
                  "Width": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "Height": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SortOrder": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetVariantDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetVariantDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAssetVariantDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-assets/{id}/variants/{variantId}": {
      "delete": {
        "tags": [
          "AffiliateAssets"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-portal/assets/{assetId}/shares": {
      "post": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShareRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShareRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShareRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SharePostResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharePostResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharePostResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/affiliates/attribute": {
      "post": {
        "tags": [
          "AffiliateAttributionPostback"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributionPostbackRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributionPostbackRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AttributionPostbackRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/affiliate-auth/signup": {
      "post": {
        "tags": [
          "AffiliateAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateSignupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateSignupRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateSignupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/affiliate-auth/login": {
      "post": {
        "tags": [
          "AffiliateAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLoginRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLoginRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/affiliate-auth/refresh": {
      "post": {
        "tags": [
          "AffiliateAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateRefreshRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateRefreshRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateRefreshRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateAuthResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/affiliate-auth/logout": {
      "post": {
        "tags": [
          "AffiliateAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateRefreshRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateRefreshRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateRefreshRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/affiliate-auth/forgot": {
      "post": {
        "tags": [
          "AffiliateAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateForgotPasswordRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateForgotPasswordRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateForgotPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/affiliate-auth/reset": {
      "post": {
        "tags": [
          "AffiliateAuth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateResetPasswordRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateResetPasswordRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateResetPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-branding": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Affiliates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantBrandingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantBrandingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TenantBrandingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-branding/logo": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "variant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "$ref": "#/components/schemas/IFormFile"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantBrandingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-custom-domains": {
      "get": {
        "tags": [
          "AffiliateCustomDomains"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateCustomDomainsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateCustomDomainsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateCustomDomainsDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AffiliateCustomDomains"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateCustomDomainPostBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateCustomDomainPostBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateCustomDomainPostBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-custom-domains/{id}/verify": {
      "post": {
        "tags": [
          "AffiliateCustomDomains"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-custom-domains/{id}": {
      "delete": {
        "tags": [
          "AffiliateCustomDomains"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliates/{id}/fraud-signals": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateFraudSignalDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateFraudSignalDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateFraudSignalDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/fraud-signals/{id}/resolve": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FraudSignalResolveRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FraudSignalResolveRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FraudSignalResolveRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudSignalDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudSignalDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudSignalDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/fraud-rules": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudRulesDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudRulesDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudRulesDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Affiliates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateFraudRulesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateFraudRulesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateFraudRulesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudRulesDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudRulesDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateFraudRulesDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}/ledger": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LedgerEntryDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LedgerEntryDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LedgerEntryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}/ledger/pending-approvable-count": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PendingApprovableDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PendingApprovableDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PendingApprovableDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}/clicks": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "before",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateClickRowDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateClickRowDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateClickRowDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}/attributions": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "before",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAttributionRowDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAttributionRowDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAttributionRowDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}/payouts": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayoutDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayoutDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayoutDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}/ledger/approve": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliates/{id}/payouts/run": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PayoutRunResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayoutRunResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayoutRunResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-payouts/{id}/mark-paid": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkPaidRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkPaidRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MarkPaidRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-portal/branding": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EffectiveBrandingDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EffectiveBrandingDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EffectiveBrandingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/branding/me": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AffiliatePortal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateBrandingOverrideRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateBrandingOverrideRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateBrandingOverrideRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/branding/me/logo": {
      "post": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "variant",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "$ref": "#/components/schemas/IFormFile"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateBrandingOverrideDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/me": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalProfileDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalProfileDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalProfileDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AffiliatePortal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAffiliateProfileRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAffiliateProfileRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAffiliateProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalProfileDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalProfileDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalProfileDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/me/change-password": {
      "post": {
        "tags": [
          "AffiliatePortal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeAffiliatePasswordRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeAffiliatePasswordRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeAffiliatePasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-portal/clicks": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateClickDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateClickDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateClickDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/attributions": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAttributionDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAttributionDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateAttributionDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/links": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateLinkDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateLinkDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateLinkDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/earnings": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateEarningsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateEarningsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateEarningsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/payouts": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalPayoutDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalPayoutDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalPayoutDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/stripe-onboarding-link": {
      "post": {
        "tags": [
          "AffiliatePortal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StripeOnboardingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StripeOnboardingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StripeOnboardingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StripeOnboardingLinkDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StripeOnboardingLinkDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StripeOnboardingLinkDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/dashboard/timeseries": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "range",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "30d"
            }
          },
          {
            "name": "granularity",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "day"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeSeriesPointDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeSeriesPointDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeSeriesPointDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/assets": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalAssetDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalAssetDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalAssetDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/assets/performance": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "range",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "30d"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssetPerformanceDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssetPerformanceDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssetPerformanceDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/assets/{assetId}/download": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-portal/assets/{assetId}/download/{variantId}": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-portal/tax-forms": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AffiliatePortal"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "File": {
                    "$ref": "#/components/schemas/IFormFile"
                  },
                  "Kind": {
                    "type": "string"
                  },
                  "EffectiveYear": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PortalAffiliateTaxFormDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalAffiliateTaxFormDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalAffiliateTaxFormDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/custom-domains": {
      "get": {
        "tags": [
          "AffiliatePortal"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalCustomDomainsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalCustomDomainsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliatePortalCustomDomainsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AffiliatePortal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliatePortalCustomDomainRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliatePortalCustomDomainRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliatePortalCustomDomainRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-portal/custom-domains/{domainId}/verify": {
      "post": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "domainId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-portal/custom-domains/{domainId}": {
      "delete": {
        "tags": [
          "AffiliatePortal"
        ],
        "parameters": [
          {
            "name": "domainId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/public/affiliate-program/{tenantSlug}": {
      "get": {
        "tags": [
          "AffiliateProgramPublic"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateProgramInfoDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateProgramInfoDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateProgramInfoDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/affiliate-programs": {
      "get": {
        "tags": [
          "AffiliateProgramPublic"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateProgramSearchResultDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateProgramSearchResultDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateProgramSearchResultDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-programs": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProgramDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProgramDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProgramDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Affiliates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProgramRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProgramRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProgramRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-programs/{id}": {
      "put": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProgramRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProgramRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProgramRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliate-programs/{id}/postbacks": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PostbackDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PostbackDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PostbackDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-program-postbacks/{id}/redispatch": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliates": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Affiliates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateCreateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateCreateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateUpdateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateUpdateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/affiliates/{id}/suspend": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}/approve": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/approve-pending": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BulkApproveResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkApproveResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkApproveResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{id}/send-invite": {
      "post": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SendInviteResultDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendInviteResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendInviteResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-settings": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateSettingsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateSettingsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateSettingsDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Affiliates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateSettingsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateSettingsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateSettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateSettingsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateSettingsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateSettingsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-portal/auth/step-up": {
      "post": {
        "tags": [
          "AffiliateStepUp"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateStepUpBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateStepUpBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateStepUpBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateStepUpResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateStepUpResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateStepUpResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/{affiliateId}/tax-forms": {
      "get": {
        "tags": [
          "AffiliateTaxForms"
        ],
        "parameters": [
          {
            "name": "affiliateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTaxFormDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTaxFormDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTaxFormDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/tax-forms/{formId}/verify": {
      "post": {
        "tags": [
          "AffiliateTaxForms"
        ],
        "parameters": [
          {
            "name": "formId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliates/tax-forms/{formId}/reject": {
      "post": {
        "tags": [
          "AffiliateTaxForms"
        ],
        "parameters": [
          {
            "name": "formId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RejectTaxFormRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RejectTaxFormRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RejectTaxFormRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTaxFormDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-tiers": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTierDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTierDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTierDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Affiliates"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateTierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateTierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateTierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTierDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTierDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTierDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-tiers/usage": {
      "get": {
        "tags": [
          "Affiliates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTierUsageDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTierUsageDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AffiliateTierUsageDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/affiliate-tiers/{id}": {
      "put": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateTierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateTierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateTierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTierDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTierDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateTierDto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Affiliates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/r/{tenantSlug}/{affiliateSlug}": {
      "get": {
        "tags": [
          "AffiliateTracking"
        ],
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "affiliateSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "d",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_source",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_medium",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_campaign",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_content",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_term",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "s",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/r/{affiliateSlug}": {
      "get": {
        "tags": [
          "AffiliateTracking"
        ],
        "parameters": [
          {
            "name": "affiliateSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "d",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_source",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_medium",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_campaign",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_content",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "utm_term",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "s",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/analytics/events": {
      "get": {
        "tags": [
          "AdminAnalyticsEvents"
        ],
        "parameters": [
          {
            "name": "eventType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AdminAnalyticsEventsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminAnalyticsEventsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminAnalyticsEventsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/capacity/backfill/{tenantId}": {
      "post": {
        "tags": [
          "CapacityAdmin"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/capacity/enable-v2/{tenantId}": {
      "post": {
        "tags": [
          "CapacityAdmin"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/capacity/disable-v2/{tenantId}": {
      "post": {
        "tags": [
          "CapacityAdmin"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/capacity/v2-status/{tenantId}": {
      "get": {
        "tags": [
          "CapacityAdmin"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/dashboard/widgets": {
      "get": {
        "tags": [
          "Dashboard"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardWidgetsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardWidgetsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardWidgetsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/loyalty/accounts": {
      "get": {
        "tags": [
          "LoyaltyAccountsAdmin"
        ],
        "summary": "Phase 4 / Slice 10 — search loyalty accounts by customer email or\ndisplay name. Cursor-paginated descending on `LastActivityAt`\n(NULLS LAST → falls back to `CreatedAt` so newly-enrolled\naccounts without activity still surface).",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/accounts/{accountId}": {
      "get": {
        "tags": [
          "LoyaltyAccountsAdmin"
        ],
        "summary": "Phase 4 / Slice 10 — full account detail: customer card, balance +\nlifetime counters, current tier + program tier ladder, and the\nmost recent 50 ledger entries (operator can see whole history;\npagination via the separate /ledger endpoint).",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/accounts/{accountId}/ledger": {
      "get": {
        "tags": [
          "LoyaltyAccountsAdmin"
        ],
        "summary": "Phase 4 / Slice 10 — cursor-paginated full ledger. Same shape as\nthe customer-portal ledger endpoint but the admin DTO DOES surface\n`AdjustedByUserId` + the operator display name. PII boundary\nis the controller, not the entity — operator-id is in the row\neither way; only the public DTO strips it.",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/accounts/{accountId}/adjustments": {
      "post": {
        "tags": [
          "LoyaltyAccountsAdmin"
        ],
        "summary": "Phase 4 / Slice 10 — manual balance adjustment. Heavier permission\ngate (`loyalty.adjust` default audience: owners +\ntenant-admin only). Reason is REQUIRED (min 10 / max 500 chars) —\nthe audit trail IS the operator's documentation; a missing reason\nis a 400 not a defaulted \"no reason given\" row.",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AdjustLoyaltyAccountRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AdjustLoyaltyAccountRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/AdjustLoyaltyAccountRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/migration/dry-run": {
      "post": {
        "tags": [
          "LoyaltyMigration"
        ],
        "summary": "Returns the candidate row list (each `CustomerMembership`\nin the tenant + the inferred mapping into the loyalty shape)\nplus the same `BackfillReport` that a live run would\nproduce. No writes occur — safe to call repeatedly.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/migration/run": {
      "post": {
        "tags": [
          "LoyaltyMigration"
        ],
        "summary": "Executes the backfill. Idempotent — re-running after the first\nsuccess yields a report with every counter at 0 (except\n`CustomerMembershipsScanned` and\n`AccountsSkippedAlreadyExists`).",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/program": {
      "get": {
        "tags": [
          "LoyaltyProgram"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "LoyaltyProgram"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertLoyaltyProgramRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertLoyaltyProgramRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertLoyaltyProgramRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/program/publish": {
      "post": {
        "tags": [
          "LoyaltyProgram"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/program/disable": {
      "post": {
        "tags": [
          "LoyaltyProgram"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/program/tiers": {
      "get": {
        "tags": [
          "LoyaltyProgram"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/loyalty/program/tiers/{tierId}": {
      "put": {
        "tags": [
          "LoyaltyProgram"
        ],
        "parameters": [
          {
            "name": "tierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "LoyaltyProgram"
        ],
        "parameters": [
          {
            "name": "tierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/pos/stations": {
      "get": {
        "tags": [
          "PosStations"
        ],
        "parameters": [
          {
            "name": "includeInactive",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "PosStations"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePosStationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePosStationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePosStationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/pos/stations/{id}": {
      "get": {
        "tags": [
          "PosStations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "PosStations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePosStationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePosStationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePosStationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "PosStations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/schedule/migrate-addslot/{tenantId}": {
      "post": {
        "tags": [
          "ScheduleMigration"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/suppliers": {
      "get": {
        "tags": [
          "Suppliers"
        ],
        "parameters": [
          {
            "name": "includeArchived",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Suppliers"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSupplierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSupplierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSupplierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/suppliers/{id}": {
      "get": {
        "tags": [
          "Suppliers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "Suppliers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSupplierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSupplierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSupplierRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/suppliers/{id}/archive": {
      "post": {
        "tags": [
          "Suppliers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/suppliers/{id}/restore": {
      "post": {
        "tags": [
          "Suppliers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/suppliers/{supplierId}/variants": {
      "get": {
        "tags": [
          "SupplierVariants"
        ],
        "parameters": [
          {
            "name": "supplierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "SupplierVariants"
        ],
        "parameters": [
          {
            "name": "supplierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssociateBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AssociateBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AssociateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/suppliers/{supplierId}/variants/{variantId}": {
      "patch": {
        "tags": [
          "SupplierVariants"
        ],
        "parameters": [
          {
            "name": "supplierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSupplierVariantRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSupplierVariantRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSupplierVariantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "SupplierVariants"
        ],
        "parameters": [
          {
            "name": "supplierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/variants/{variantId}/default-supplier": {
      "post": {
        "tags": [
          "VariantDefaultSupplier"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDefaultBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDefaultBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetDefaultBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/subscriptions": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SubscriptionStatus"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SubscriptionInterval"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubscriptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubscriptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/subscriptions/{id}": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/subscriptions/{id}/pause": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/subscriptions/{id}/resume": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/subscriptions/{id}/cancel": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelSubscriptionBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelSubscriptionBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelSubscriptionBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/subscriptions/{id}/shipping-address": {
      "patch": {
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingAddressBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingAddressBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShippingAddressBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/shipping/carrier-config": {
      "get": {
        "tags": [
          "CarrierConfig"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "CarrierConfig"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCarrierConfigRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCarrierConfigRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertCarrierConfigRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/shipping/carrier-config/test": {
      "post": {
        "tags": [
          "CarrierConfig"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/returns": {
      "get": {
        "tags": [
          "AdminReturns"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/ReturnOrderStatus"
              }
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 25
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnOrderListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnOrderListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnOrderListResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AdminReturns"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReturnOrderBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReturnOrderBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReturnOrderBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/returns/{rmaNumber}": {
      "get": {
        "tags": [
          "AdminReturns"
        ],
        "summary": "Operator detail. Looked up by RmaNumber (the human-readable\n\"RMA-XXXXXXXXXX\" token) so deep-linkable URLs don't expose Guid\ninternals.",
        "parameters": [
          {
            "name": "rmaNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnOrderDetailResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnOrderDetailResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnOrderDetailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/returns/{id}/approve": {
      "post": {
        "tags": [
          "AdminReturns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/returns/{id}/reject": {
      "post": {
        "tags": [
          "AdminReturns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RejectBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RejectBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RejectBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/returns/{id}/cancel": {
      "post": {
        "tags": [
          "AdminReturns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CancelBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/returns/{id}/buy-label": {
      "post": {
        "tags": [
          "AdminReturns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/returns/{id}/mark-received": {
      "post": {
        "tags": [
          "AdminReturns"
        ],
        "summary": "Manual-override transition Shipped → Received OR LabelIssued →\nShipped → Received in two hops via Task IReturnOrderService.MarkShippedAsync(Guid returnOrderId, string trackingNumber, string carrier, CancellationToken ct)\nwhen needed. The operator UI calls this directly when the\ncustomer-pays path lands a package without ever transitioning\nthrough the carrier-webhook handler. When the RMA is already in\nLabelIssued, transition through MarkShippedAsync (with whatever\ntracking the RMA already has) so the audit log is consistent.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/returns/{id}/inspect": {
      "post": {
        "tags": [
          "AdminReturns"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InspectRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InspectRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InspectRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/return-policy": {
      "get": {
        "tags": [
          "ReturnPolicy"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "ReturnPolicy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertReturnPolicyBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertReturnPolicyBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertReturnPolicyBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/{id}/pdf": {
      "get": {
        "tags": [
          "PurchaseOrderPdf"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/{purchaseOrderId}/receipts": {
      "post": {
        "tags": [
          "PurchaseOrderReceipts"
        ],
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordReceiptBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordReceiptBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RecordReceiptBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders": {
      "get": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/PurchaseOrderStatus"
            }
          },
          {
            "name": "supplierId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "expectedAfter",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "expectedBefore",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "PurchaseOrders"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseOrderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseOrderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseOrderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/{id}": {
      "get": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePurchaseOrderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePurchaseOrderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePurchaseOrderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/{id}/lines": {
      "post": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPurchaseOrderLineRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPurchaseOrderLineRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddPurchaseOrderLineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/{id}/lines/{lineId}": {
      "patch": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePurchaseOrderLineRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePurchaseOrderLineRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePurchaseOrderLineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/{id}/submit": {
      "post": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/{id}/approve": {
      "post": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/{id}/cancel": {
      "post": {
        "tags": [
          "PurchaseOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelPurchaseOrderBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelPurchaseOrderBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CancelPurchaseOrderBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/purchase-orders/from-low-stock": {
      "post": {
        "tags": [
          "PurchaseOrders"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuggestFromLowStockBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SuggestFromLowStockBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SuggestFromLowStockBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/settings/purchase-policy": {
      "get": {
        "tags": [
          "PurchasePolicy"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "PurchasePolicy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertPurchasePolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertPurchasePolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertPurchasePolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/orders/{id}/fulfillments": {
      "post": {
        "tags": [
          "AdminOrderFulfillments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFulfillmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFulfillmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFulfillmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OrderShipment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderShipment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderShipment"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/orders/{id}/fulfillments/{shipmentId}": {
      "patch": {
        "tags": [
          "AdminOrderFulfillments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "shipmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFulfillmentStatusRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFulfillmentStatusRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFulfillmentStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OrderShipment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderShipment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderShipment"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/orders/{id}/fulfillments/preview-rates": {
      "post": {
        "tags": [
          "AdminOrderFulfillments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewRatesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewRatesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PreviewRatesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/orders/{id}/fulfillments/validate-address": {
      "post": {
        "tags": [
          "AdminOrderFulfillments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/orders/{id}/fulfillments/buy-label": {
      "post": {
        "tags": [
          "AdminOrderFulfillments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuyOrderLabelRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BuyOrderLabelRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BuyOrderLabelRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/orders/{id}/refunds": {
      "post": {
        "tags": [
          "AdminOrderRefunds"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundOrderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundOrderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RefundOrderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Refund"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Refund"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Refund"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/orders": {
      "get": {
        "tags": [
          "AdminOrders"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/OrderStatus"
              }
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "placedAfter",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "placedBefore",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/OrderKindFilter"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 25
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OrderListResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderListResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderListResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/orders/{id}": {
      "get": {
        "tags": [
          "AdminOrders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDetail"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDetail"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/admin/inventory/analytics/velocity": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/inventory/analytics/abc": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "windowDays",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/inventory/analytics/forecast": {
      "get": {
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/settings/analytics-policy": {
      "get": {
        "tags": [
          "AnalyticsPolicy"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "AnalyticsPolicy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTenantAnalyticsPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTenantAnalyticsPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTenantAnalyticsPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/settings/lot-policy": {
      "get": {
        "tags": [
          "LotPolicy"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "LotPolicy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTenantLotPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTenantLotPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertTenantLotPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/lots": {
      "get": {
        "tags": [
          "Lots"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "expiringWithinDays",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "includeInactive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Lots"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockLotRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockLotRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockLotRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/lots/{id}": {
      "get": {
        "tags": [
          "Lots"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "Lots"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockLotRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockLotRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockLotRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/lots/{id}/deactivate": {
      "post": {
        "tags": [
          "Lots"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/lots/expiring": {
      "get": {
        "tags": [
          "Lots"
        ],
        "parameters": [
          {
            "name": "withinDays",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/serials": {
      "get": {
        "tags": [
          "Serials"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/StockSerialStatus"
            }
          },
          {
            "name": "lotId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "serialNumberSearch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Serials"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockSerialRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockSerialRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockSerialRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/serials/{id}": {
      "get": {
        "tags": [
          "Serials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/serials/{id}/status": {
      "patch": {
        "tags": [
          "Serials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockSerialStatusRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockSerialStatusRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockSerialStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/variants/{variantId}/lot-tracking": {
      "patch": {
        "tags": [
          "VariantLotTracking"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetLotTrackingBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetLotTrackingBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetLotTrackingBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/settings/fraud-policy": {
      "get": {
        "tags": [
          "FraudPolicy"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "patch": {
        "tags": [
          "FraudPolicy"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertFraudPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertFraudPolicyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertFraudPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/fraud/queue": {
      "get": {
        "tags": [
          "FraudReview"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/OrderFraudStatus"
            }
          },
          {
            "name": "minLevel",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/OrderRiskLevel"
            }
          },
          {
            "name": "flaggedAfter",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "flaggedBefore",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/fraud/{orderId}": {
      "get": {
        "tags": [
          "FraudReview"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/fraud/{orderId}/hold": {
      "post": {
        "tags": [
          "FraudReview"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/FraudActionBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/FraudActionBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/FraudActionBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/fraud/{orderId}/release": {
      "post": {
        "tags": [
          "FraudReview"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/FraudActionBody"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/FraudActionBody"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/FraudActionBody"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/fraud/{orderId}/refund": {
      "post": {
        "tags": [
          "FraudReview"
        ],
        "summary": "Operator-driven refund through the fraud surface. Requires BOTH\nstring Permissions.FraudReview (fraud-flow authority) AND\nstring Permissions.OrdersRefund (money-movement authority).\nThe double-gate is intentional — a fraud-only operator can hold /\nrelease without being granted refund authority.",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FraudRefundBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FraudRefundBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FraudRefundBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/accounting/connection": {
      "get": {
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/accounting/{provider}/connect": {
      "get": {
        "tags": [
          "Accounting"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "returnTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/accounting/{provider}/callback": {
      "get": {
        "tags": [
          "Accounting"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "realmId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/accounting/{provider}/disconnect": {
      "post": {
        "tags": [
          "Accounting"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/accounting/accounts": {
      "get": {
        "tags": [
          "Accounting"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/accounting/mapping": {
      "get": {
        "tags": [
          "Accounting"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Accounting"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MappingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MappingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MappingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/accounting/exports": {
      "get": {
        "tags": [
          "Accounting"
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/accounting/exports/backfill": {
      "post": {
        "tags": [
          "Accounting"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AbandonSaleBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AcceptQuoteRequest": {
        "required": [
          "purchaseOrderNumber"
        ],
        "type": "object",
        "properties": {
          "purchaseOrderNumber": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        }
      },
      "ActivateThemeRequest": {
        "required": [
          "themeId"
        ],
        "type": "object",
        "properties": {
          "themeId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "ActivityItemDto": {
        "required": [
          "id",
          "kind",
          "title",
          "detail",
          "at"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AddLineRequest": {
        "required": [
          "kind",
          "currency",
          "variantId",
          "quantity",
          "holdId",
          "productId",
          "slotId",
          "slotStartsAt",
          "ratePlanId",
          "paxBreakdown",
          "addOnIds"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "variantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "holdId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "addOnIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "AddOnDto": {
        "required": [
          "id",
          "productId",
          "name",
          "description",
          "price",
          "appliesPerPax",
          "isRequired",
          "sortOrder",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "price": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "appliesPerPax": {
            "type": "boolean"
          },
          "isRequired": {
            "type": "boolean"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "AddOnRequest": {
        "required": [
          "name",
          "price"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "price": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "appliesPerPax": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isRequired": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "AddOnRevenueResponse": {
        "required": [
          "from",
          "to",
          "productId",
          "totals",
          "byAddOn",
          "series"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "totals": {
            "$ref": "#/components/schemas/AddOnTotalsDto"
          },
          "byAddOn": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddOnRowDto"
            }
          },
          "series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddOnTimeBucketDto"
            }
          }
        }
      },
      "AddOnRowDto": {
        "required": [
          "addOnId",
          "addOnName",
          "productName",
          "count",
          "revenue"
        ],
        "type": "object",
        "properties": {
          "addOnId": {
            "type": "string",
            "format": "uuid"
          },
          "addOnName": {
            "type": "string"
          },
          "productName": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "revenue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "AddOnTimeBucketDto": {
        "required": [
          "bucketStart",
          "revenue",
          "count"
        ],
        "type": "object",
        "properties": {
          "bucketStart": {
            "type": "string",
            "format": "date-time"
          },
          "revenue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AddOnTotalsDto": {
        "required": [
          "totalRevenue",
          "attachmentRate",
          "distinctAddOnsSold",
          "bookingsInWindow"
        ],
        "type": "object",
        "properties": {
          "totalRevenue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "attachmentRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "distinctAddOnsSold": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bookingsInWindow": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AddPosCartLineRequest": {
        "required": [
          "variantId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AddPurchaseOrderLineRequest": {
        "required": [
          "kind",
          "variantId",
          "description",
          "quantity",
          "unitCostCents",
          "notes"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/PurchaseOrderLineKind"
          },
          "variantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "unitCostCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AdjustLoyaltyAccountRequest": {
        "required": [
          "deltaPoints",
          "reason"
        ],
        "type": "object",
        "properties": {
          "deltaPoints": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AdjustStockRequest": {
        "required": [
          "variantId",
          "locationId",
          "delta",
          "reason",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "locationId": {
            "type": "string",
            "format": "uuid"
          },
          "delta": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reason": {
            "type": "string"
          },
          "idempotencyKey": {
            "type": "string"
          }
        }
      },
      "AdjustVoucherBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "paxDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "AdminAnalyticsEventDto": {
        "required": [
          "id",
          "eventType",
          "occurredAt",
          "sessionId",
          "visitorId",
          "productId",
          "pageSlug",
          "propertiesJson",
          "userAgent"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "eventType": {
            "type": "string"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "visitorId": {
            "type": [
              "null",
              "string"
            ]
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "pageSlug": {
            "type": [
              "null",
              "string"
            ]
          },
          "propertiesJson": {
            "type": "string"
          },
          "userAgent": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AdminAnalyticsEventsResponse": {
        "required": [
          "from",
          "to",
          "limit",
          "count",
          "events"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "format": "date-time"
          },
          "limit": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminAnalyticsEventDto"
            }
          }
        }
      },
      "AdminPunchBody": {
        "required": [
          "correctionNote"
        ],
        "type": "object",
        "properties": {
          "punchInAt": {
            "type": "string",
            "format": "date-time"
          },
          "punchOutAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "breakMinutes": {
            "maximum": 1440,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "correctionNote": {
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "tips": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "miles": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "jobTag": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliateAnalyticsRowDto": {
        "required": [
          "affiliateId",
          "affiliateName",
          "slug",
          "value",
          "deltaVsPrevPeriod"
        ],
        "type": "object",
        "properties": {
          "affiliateId": {
            "type": "string",
            "format": "uuid"
          },
          "affiliateName": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "value": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "deltaVsPrevPeriod": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "AffiliateAnalyticsSummaryDto": {
        "required": [
          "totalClicks",
          "totalConversions",
          "totalEarningsApproved",
          "totalEarningsPaid",
          "activeAffiliateCount",
          "clicksDelta",
          "conversionsDelta",
          "earningsApprovedDelta",
          "earningsPaidDelta"
        ],
        "type": "object",
        "properties": {
          "totalClicks": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "totalConversions": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "totalEarningsApproved": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalEarningsPaid": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "activeAffiliateCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "clicksDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "conversionsDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "earningsApprovedDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "earningsPaidDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "AffiliateAssetDto": {
        "required": [
          "id",
          "title",
          "description",
          "kind",
          "mediaId",
          "body",
          "linkTemplate",
          "requiredTierIds",
          "isActive",
          "publishedAt",
          "createdAt",
          "updatedAt",
          "variants"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "kind": {
            "type": "string"
          },
          "mediaId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "body": {
            "type": [
              "null",
              "string"
            ]
          },
          "linkTemplate": {
            "type": [
              "null",
              "string"
            ]
          },
          "requiredTierIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "publishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AffiliateAssetVariantDto"
            }
          }
        }
      },
      "AffiliateAssetsBulkRequest": {
        "required": [
          "ids",
          "action",
          "at"
        ],
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "action": {
            "type": "string"
          },
          "at": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "AffiliateAssetUpsertRequest": {
        "required": [
          "title",
          "description",
          "kind",
          "body",
          "linkTemplate",
          "requiredTierIds",
          "isActive",
          "publish"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "kind": {
            "type": "string"
          },
          "body": {
            "type": [
              "null",
              "string"
            ]
          },
          "linkTemplate": {
            "type": [
              "null",
              "string"
            ]
          },
          "requiredTierIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "publish": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "AffiliateAssetVariantDto": {
        "required": [
          "id",
          "assetId",
          "mediaId",
          "width",
          "height",
          "label",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "assetId": {
            "type": "string",
            "format": "uuid"
          },
          "mediaId": {
            "type": "string",
            "format": "uuid"
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "label": {
            "type": "string"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AffiliateAttributionDto": {
        "required": [
          "id",
          "attributedAt",
          "bookingRef",
          "amount",
          "currency",
          "source"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "attributedAt": {
            "type": "string",
            "format": "date-time"
          },
          "bookingRef": {
            "type": "string"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "source": {
            "type": "string"
          }
        }
      },
      "AffiliateAttributionModel": {
        "enum": [
          "LastClick",
          "FirstClick",
          "Linear",
          "PositionBased4030"
        ]
      },
      "AffiliateAttributionRowDto": {
        "required": [
          "id",
          "attributedAt",
          "reservationId",
          "bookingRef",
          "bookingTotal",
          "currency",
          "confirmedAt",
          "source",
          "weight",
          "position"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "attributedAt": {
            "type": "string",
            "format": "date-time"
          },
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "bookingRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "bookingTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "confirmedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "source": {
            "type": "string"
          },
          "weight": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AffiliateAuthResultDto": {
        "required": [
          "tokens",
          "affiliate"
        ],
        "type": "object",
        "properties": {
          "tokens": {
            "$ref": "#/components/schemas/AffiliateAuthTokens"
          },
          "affiliate": {
            "$ref": "#/components/schemas/AuthenticatedAffiliate"
          }
        }
      },
      "AffiliateAuthTokens": {
        "required": [
          "accessToken",
          "accessTokenExpiresAt",
          "refreshToken",
          "refreshTokenExpiresAt"
        ],
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string"
          },
          "accessTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "refreshToken": {
            "type": "string"
          },
          "refreshTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AffiliateBrandingOverrideDto": {
        "required": [
          "brandName",
          "logoLightUrl",
          "logoDarkUrl",
          "faviconUrl",
          "primaryColorHex",
          "accentColorHex",
          "footerHtml",
          "customCss",
          "hidePoweredBy",
          "supportEmail",
          "whitelabelEnabled"
        ],
        "type": "object",
        "properties": {
          "brandName": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoLightUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoDarkUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "faviconUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "primaryColorHex": {
            "type": [
              "null",
              "string"
            ]
          },
          "accentColorHex": {
            "type": [
              "null",
              "string"
            ]
          },
          "footerHtml": {
            "type": [
              "null",
              "string"
            ]
          },
          "customCss": {
            "type": [
              "null",
              "string"
            ]
          },
          "hidePoweredBy": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "supportEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "whitelabelEnabled": {
            "type": "boolean"
          }
        }
      },
      "AffiliateBrandingOverrideRequest": {
        "required": [
          "brandName",
          "logoLightUrl",
          "logoDarkUrl",
          "faviconUrl",
          "primaryColorHex",
          "accentColorHex",
          "footerHtml",
          "customCss",
          "hidePoweredBy",
          "supportEmail"
        ],
        "type": "object",
        "properties": {
          "brandName": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoLightUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoDarkUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "faviconUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "primaryColorHex": {
            "type": [
              "null",
              "string"
            ]
          },
          "accentColorHex": {
            "type": [
              "null",
              "string"
            ]
          },
          "footerHtml": {
            "type": [
              "null",
              "string"
            ]
          },
          "customCss": {
            "type": [
              "null",
              "string"
            ]
          },
          "hidePoweredBy": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "supportEmail": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliateClickDto": {
        "required": [
          "id",
          "occurredAt",
          "landingPath",
          "referer",
          "utmSource",
          "utmMedium",
          "utmCampaign"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "landingPath": {
            "type": [
              "null",
              "string"
            ]
          },
          "referer": {
            "type": [
              "null",
              "string"
            ]
          },
          "utmSource": {
            "type": [
              "null",
              "string"
            ]
          },
          "utmMedium": {
            "type": [
              "null",
              "string"
            ]
          },
          "utmCampaign": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliateClickRowDto": {
        "required": [
          "id",
          "occurredAt",
          "landingPath",
          "referer",
          "utmSource",
          "utmMedium",
          "utmCampaign",
          "utmContent",
          "utmTerm"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "landingPath": {
            "type": [
              "null",
              "string"
            ]
          },
          "referer": {
            "type": [
              "null",
              "string"
            ]
          },
          "utmSource": {
            "type": [
              "null",
              "string"
            ]
          },
          "utmMedium": {
            "type": [
              "null",
              "string"
            ]
          },
          "utmCampaign": {
            "type": [
              "null",
              "string"
            ]
          },
          "utmContent": {
            "type": [
              "null",
              "string"
            ]
          },
          "utmTerm": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliateCreateRequest": {
        "required": [
          "email",
          "displayName",
          "slug",
          "status",
          "tierId",
          "commissionPercent",
          "website",
          "notes",
          "taxResidencyCountry"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AffiliateStatus"
              }
            ]
          },
          "tierId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "taxResidencyCountry": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliateCustomDomainEntryDto": {
        "required": [
          "id",
          "affiliateId",
          "kind",
          "domain",
          "servedHosts",
          "status",
          "verificationToken",
          "routingRecords",
          "lastCheckedAt",
          "lastError",
          "verifiedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "affiliateId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "kind": {
            "$ref": "#/components/schemas/AffiliateCustomDomainKind"
          },
          "domain": {
            "type": "string"
          },
          "servedHosts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "$ref": "#/components/schemas/CustomDomainStatus"
          },
          "verificationToken": {
            "type": [
              "null",
              "string"
            ]
          },
          "routingRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DnsRecordDto"
            }
          },
          "lastCheckedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "lastError": {
            "type": [
              "null",
              "string"
            ]
          },
          "verifiedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "AffiliateCustomDomainKind": {
        "type": "integer"
      },
      "AffiliateCustomDomainPostBody": {
        "required": [
          "domain",
          "kind",
          "affiliateId"
        ],
        "type": "object",
        "properties": {
          "domain": {
            "type": [
              "null",
              "string"
            ]
          },
          "kind": {
            "$ref": "#/components/schemas/AffiliateCustomDomainKind"
          },
          "affiliateId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "AffiliateCustomDomainsDto": {
        "required": [
          "domains"
        ],
        "type": "object",
        "properties": {
          "domains": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AffiliateCustomDomainEntryDto"
            }
          }
        }
      },
      "AffiliateDto": {
        "required": [
          "id",
          "email",
          "displayName",
          "slug",
          "status",
          "tierId",
          "commissionPercent",
          "website",
          "notes",
          "hasPassword",
          "createdAt",
          "taxResidencyCountry"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/AffiliateStatus"
          },
          "tierId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "hasPassword": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "taxResidencyCountry": {
            "type": "string"
          }
        }
      },
      "AffiliateEarningsDto": {
        "required": [
          "pendingTotal",
          "approvedTotal",
          "paidTotal",
          "currency",
          "entries"
        ],
        "type": "object",
        "properties": {
          "pendingTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "approvedTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "paidTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EarningEntryDto"
            }
          }
        }
      },
      "AffiliateForgotPasswordRequest": {
        "required": [
          "tenantSlug",
          "email"
        ],
        "type": "object",
        "properties": {
          "tenantSlug": {
            "type": "string"
          },
          "email": {
            "type": "string"
          }
        }
      },
      "AffiliateFraudRulesDto": {
        "required": [
          "enabled",
          "maxClicksPerVisitorPerHour",
          "maxClicksPerIpPerHour",
          "maxConversionsPerVisitorPerDay",
          "autoSuspendOnCritical",
          "minConversionAgeSeconds"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "maxClicksPerVisitorPerHour": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxClicksPerIpPerHour": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxConversionsPerVisitorPerDay": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "autoSuspendOnCritical": {
            "type": "boolean"
          },
          "minConversionAgeSeconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AffiliateFraudRulesRequest": {
        "required": [
          "enabled",
          "maxClicksPerVisitorPerHour",
          "maxClicksPerIpPerHour",
          "maxConversionsPerVisitorPerDay",
          "autoSuspendOnCritical",
          "minConversionAgeSeconds"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "maxClicksPerVisitorPerHour": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxClicksPerIpPerHour": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxConversionsPerVisitorPerDay": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "autoSuspendOnCritical": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "minConversionAgeSeconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AffiliateFraudSignalDto": {
        "required": [
          "id",
          "affiliateId",
          "kind",
          "severity",
          "detail",
          "raisedAt",
          "resolvedAt",
          "resolutionNote"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "affiliateId": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "$ref": "#/components/schemas/AffiliateFraudSignalKind"
          },
          "severity": {
            "$ref": "#/components/schemas/AffiliateFraudSignalSeverity"
          },
          "detail": {
            "type": [
              "null",
              "string"
            ]
          },
          "raisedAt": {
            "type": "string",
            "format": "date-time"
          },
          "resolvedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "resolutionNote": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliateFraudSignalKind": {
        "enum": [
          "ClickVelocity",
          "IpRepeat",
          "UserAgentRepeat",
          "ConversionVelocity",
          "LowQualityConversion",
          "AutoSuspend"
        ]
      },
      "AffiliateFraudSignalSeverity": {
        "enum": [
          "Info",
          "Warning",
          "Critical"
        ]
      },
      "AffiliateLinkDto": {
        "required": [
          "trackingPath",
          "label",
          "productSlug"
        ],
        "type": "object",
        "properties": {
          "trackingPath": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "productSlug": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliateLoginRequest": {
        "required": [
          "tenantSlug",
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "tenantSlug": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "AffiliatePortalCustomDomainRequest": {
        "required": [
          "domain"
        ],
        "type": "object",
        "properties": {
          "domain": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliatePortalCustomDomainsResponse": {
        "required": [
          "domains"
        ],
        "type": "object",
        "properties": {
          "domains": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AffiliateCustomDomainEntryDto"
            }
          }
        }
      },
      "AffiliatePortalProfileDto": {
        "required": [
          "id",
          "email",
          "displayName",
          "slug",
          "status",
          "commissionPercent",
          "website",
          "stripeConnectAccountId",
          "stripeConnectPayoutsEnabled",
          "attributionWindowDays"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          },
          "stripeConnectAccountId": {
            "type": [
              "null",
              "string"
            ]
          },
          "stripeConnectPayoutsEnabled": {
            "type": "boolean"
          },
          "attributionWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AffiliateProgramInfoDto": {
        "required": [
          "tenantSlug",
          "tenantName",
          "logoUrl",
          "primaryColor",
          "isAffiliateProgramEnabled",
          "allowSelfSignup",
          "attributionWindowDays"
        ],
        "type": "object",
        "properties": {
          "tenantSlug": {
            "type": "string"
          },
          "tenantName": {
            "type": "string"
          },
          "logoUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "primaryColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "isAffiliateProgramEnabled": {
            "type": "boolean"
          },
          "allowSelfSignup": {
            "type": "boolean"
          },
          "attributionWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AffiliateProgramKind": {
        "enum": [
          "Custom",
          "CommissionJunction",
          "Impact",
          "ShareASale",
          "Awin",
          "Rakuten",
          null
        ]
      },
      "AffiliateProgramSearchResultDto": {
        "required": [
          "tenantSlug",
          "tenantName",
          "logoUrl",
          "isAffiliateProgramEnabled"
        ],
        "type": "object",
        "properties": {
          "tenantSlug": {
            "type": "string"
          },
          "tenantName": {
            "type": "string"
          },
          "logoUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "isAffiliateProgramEnabled": {
            "type": "boolean"
          }
        }
      },
      "AffiliateRefreshRequest": {
        "required": [
          "refreshToken"
        ],
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string"
          }
        }
      },
      "AffiliateResetPasswordRequest": {
        "required": [
          "token",
          "password"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "AffiliateSettingsDto": {
        "required": [
          "isAffiliateProgramEnabled",
          "attributionWindowDays",
          "allowSelfSignup",
          "requireApproval",
          "defaultCommissionPercent",
          "cookieDomain",
          "refundReversalWindowDays",
          "payoutSchedule",
          "attributionModel"
        ],
        "type": "object",
        "properties": {
          "isAffiliateProgramEnabled": {
            "type": "boolean"
          },
          "attributionWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "allowSelfSignup": {
            "type": "boolean"
          },
          "requireApproval": {
            "type": "boolean"
          },
          "defaultCommissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "cookieDomain": {
            "type": [
              "null",
              "string"
            ]
          },
          "refundReversalWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "payoutSchedule": {
            "$ref": "#/components/schemas/PayoutSchedule"
          },
          "attributionModel": {
            "$ref": "#/components/schemas/AffiliateAttributionModel"
          }
        }
      },
      "AffiliateSettingsRequest": {
        "required": [
          "isAffiliateProgramEnabled",
          "attributionWindowDays",
          "allowSelfSignup",
          "requireApproval",
          "defaultCommissionPercent",
          "cookieDomain",
          "refundReversalWindowDays",
          "payoutSchedule",
          "attributionModel"
        ],
        "type": "object",
        "properties": {
          "isAffiliateProgramEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "attributionWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "allowSelfSignup": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "requireApproval": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "defaultCommissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "cookieDomain": {
            "type": [
              "null",
              "string"
            ]
          },
          "refundReversalWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "payoutSchedule": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PayoutSchedule"
              }
            ]
          },
          "attributionModel": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AffiliateAttributionModel"
              }
            ]
          }
        }
      },
      "AffiliateSignupRequest": {
        "required": [
          "tenantSlug",
          "email",
          "password",
          "displayName",
          "website"
        ],
        "type": "object",
        "properties": {
          "tenantSlug": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AffiliateStatus": {
        "enum": [
          "PendingApproval",
          "Active",
          "Suspended"
        ]
      },
      "AffiliateStepUpBody": {
        "required": [
          "password"
        ],
        "type": "object",
        "properties": {
          "password": {
            "type": "string"
          }
        }
      },
      "AffiliateStepUpResponse": {
        "required": [
          "token",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AffiliateTaxFormDto": {
        "required": [
          "id",
          "affiliateId",
          "formKind",
          "status",
          "mediaId",
          "stripeReportingTaxFormUrl",
          "effectiveYear",
          "submittedAt",
          "verifiedAt",
          "expiresAt",
          "rejectionReason",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "affiliateId": {
            "type": "string",
            "format": "uuid"
          },
          "formKind": {
            "$ref": "#/components/schemas/AffiliateTaxFormKind"
          },
          "status": {
            "$ref": "#/components/schemas/AffiliateTaxFormStatus"
          },
          "mediaId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "stripeReportingTaxFormUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "effectiveYear": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "submittedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "verifiedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "rejectionReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AffiliateTaxFormKind": {
        "enum": [
          "W9",
          "W8BEN",
          "W8BENE",
          "Other"
        ]
      },
      "AffiliateTaxFormsResponse": {
        "required": [
          "requiresTaxForm",
          "hasCurrentVerifiedForm",
          "currentFormExpiresAt",
          "forms"
        ],
        "type": "object",
        "properties": {
          "requiresTaxForm": {
            "type": "boolean"
          },
          "hasCurrentVerifiedForm": {
            "type": "boolean"
          },
          "currentFormExpiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PortalAffiliateTaxFormDto"
            }
          }
        }
      },
      "AffiliateTaxFormStatus": {
        "enum": [
          "NotProvided",
          "Submitted",
          "Verified",
          "Expired",
          "Rejected"
        ]
      },
      "AffiliateTierDto": {
        "required": [
          "id",
          "name",
          "description",
          "commissionPercent",
          "defaultPricingModifierPercent"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "defaultPricingModifierPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "AffiliateTierRequest": {
        "required": [
          "name",
          "description",
          "commissionPercent",
          "defaultPricingModifierPercent"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "defaultPricingModifierPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "AffiliateTierUsageDto": {
        "required": [
          "tierId",
          "affiliateCount"
        ],
        "type": "object",
        "properties": {
          "tierId": {
            "type": "string",
            "format": "uuid"
          },
          "affiliateCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AffiliateUpdateRequest": {
        "required": [
          "displayName",
          "status",
          "tierId",
          "commissionPercent",
          "website",
          "notes",
          "taxResidencyCountry"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AffiliateStatus"
              }
            ]
          },
          "tierId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "taxResidencyCountry": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AgentContractDto": {
        "required": [
          "id",
          "agentId",
          "ratePlanId",
          "commissionPercent",
          "netRatePercent",
          "isActive",
          "validFrom",
          "validUntil"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "agentId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "netRatePercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "isActive": {
            "type": "boolean"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time"
          },
          "validUntil": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "AgentContractRequest": {
        "required": [
          "ratePlanId",
          "commissionPercent",
          "netRatePercent",
          "isActive",
          "validFrom",
          "validUntil"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "netRatePercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "validFrom": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "validUntil": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "AgentDetailDto": {
        "required": [
          "id",
          "name",
          "contactEmail",
          "isActive",
          "hasApiKey",
          "contracts"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "contactEmail": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "hasApiKey": {
            "type": "boolean"
          },
          "contracts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgentContractDto"
            }
          }
        }
      },
      "AgentDto": {
        "required": [
          "id",
          "name",
          "contactEmail",
          "isActive",
          "hasApiKey"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "contactEmail": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "hasApiKey": {
            "type": "boolean"
          }
        }
      },
      "AgentRequest": {
        "required": [
          "name",
          "contactEmail",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "AgentSettingsDto": {
        "required": [
          "enabled",
          "customerPortalEnabled",
          "provider",
          "model",
          "hasApiKey",
          "systemPromptOverride",
          "maxTokensPerDay",
          "maxConcurrentSessions"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "customerPortalEnabled": {
            "type": "boolean"
          },
          "provider": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "hasApiKey": {
            "type": "boolean"
          },
          "systemPromptOverride": {
            "type": "string"
          },
          "maxTokensPerDay": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxConcurrentSessions": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AnalyticsBatchBody": {
        "required": [
          "events"
        ],
        "type": "object",
        "properties": {
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalyticsEventBody"
            }
          }
        }
      },
      "AnalyticsEventBody": {
        "required": [
          "eventType",
          "occurredAt",
          "sessionId",
          "visitorId",
          "productId",
          "pageSlug",
          "propertiesJson"
        ],
        "type": "object",
        "properties": {
          "eventType": {
            "type": "string"
          },
          "occurredAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "visitorId": {
            "type": [
              "null",
              "string"
            ]
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "pageSlug": {
            "type": [
              "null",
              "string"
            ]
          },
          "propertiesJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AncestorDto": {
        "required": [
          "id",
          "name",
          "slug",
          "parentTenantId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "parentTenantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "ApiKeyCreateRequest": {
        "required": [
          "name",
          "scopes"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "scopes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ApiKeyCreateResponse": {
        "required": [
          "key",
          "rawKey"
        ],
        "type": "object",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/ApiKeyDto"
          },
          "rawKey": {
            "type": "string"
          }
        }
      },
      "ApiKeyDto": {
        "required": [
          "id",
          "name",
          "prefix",
          "scopes",
          "lastUsedAt",
          "revokedAt",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "prefix": {
            "type": "string"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lastUsedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "revokedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ApplyRequest": {
        "required": [
          "ratePlanIds"
        ],
        "type": "object",
        "properties": {
          "ratePlanIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "ApplyTemplateBody": {
        "type": "object",
        "properties": {
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "ApplyTemplateResult": {
        "required": [
          "createdCount",
          "recurrenceGroupId"
        ],
        "type": "object",
        "properties": {
          "createdCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "recurrenceGroupId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "ApprovalRequirement": {
        "type": "integer"
      },
      "AssetPerformanceChannelCount": {
        "required": [
          "channel",
          "count"
        ],
        "type": "object",
        "properties": {
          "channel": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AssetPerformanceDto": {
        "required": [
          "assetId",
          "title",
          "kind",
          "shares",
          "clicks",
          "conversions",
          "earnings",
          "currency"
        ],
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "shares": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetPerformanceChannelCount"
            }
          },
          "clicks": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "conversions": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "earnings": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "AssignCrewBody": {
        "required": [
          "crewMemberId",
          "role",
          "notes"
        ],
        "type": "object",
        "properties": {
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "role": {
            "$ref": "#/components/schemas/SlotAssignmentRole"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AssignRoleRequest": {
        "required": [
          "roleId"
        ],
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "AssociateBody": {
        "required": [
          "variantId",
          "supplierSku",
          "unitCostCents",
          "minimumOrderQuantity",
          "leadTimeDays",
          "isDefault",
          "notes"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "supplierSku": {
            "type": [
              "null",
              "string"
            ]
          },
          "unitCostCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "minimumOrderQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "leadTimeDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isDefault": {
            "type": "boolean"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AttachLoyaltyRedemptionRequest": {
        "required": [
          "rewardId"
        ],
        "type": "object",
        "properties": {
          "rewardId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "AttributionPostbackRequest": {
        "required": [
          "tenantSlug",
          "bookingRef",
          "visitorId"
        ],
        "type": "object",
        "properties": {
          "tenantSlug": {
            "type": "string"
          },
          "bookingRef": {
            "type": "string"
          },
          "visitorId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AuditAction": {
        "type": "integer"
      },
      "AuditDetailDto": {
        "required": [
          "id",
          "entityType",
          "entityId",
          "changeKind",
          "changedAt",
          "changedById",
          "changedFields",
          "beforeJson",
          "afterJson",
          "authMethod"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "changeKind": {
            "$ref": "#/components/schemas/PricingAuditChangeKind"
          },
          "changedAt": {
            "type": "string",
            "format": "date-time"
          },
          "changedById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "changedFields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "beforeJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "afterJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "authMethod": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AuditDto": {
        "required": [
          "id",
          "entityType",
          "entityId",
          "changeKind",
          "changedAt",
          "changedById",
          "changedFields",
          "authMethod"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "changeKind": {
            "$ref": "#/components/schemas/PricingAuditChangeKind"
          },
          "changedAt": {
            "type": "string",
            "format": "date-time"
          },
          "changedById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "changedFields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "authMethod": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AuditLogPage": {
        "required": [
          "items",
          "page",
          "pageSize",
          "total"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuditLogRowDto"
            }
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AuditLogRowDto": {
        "required": [
          "id",
          "entityType",
          "entityId",
          "action",
          "userId",
          "context",
          "createdAt",
          "changesJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "action": {
            "$ref": "#/components/schemas/AuditAction"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "context": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "changesJson": {
            "type": "string"
          }
        }
      },
      "AuthenticatedAffiliate": {
        "required": [
          "affiliateId",
          "tenantId",
          "tenantSlug",
          "email",
          "displayName",
          "slug",
          "status"
        ],
        "type": "object",
        "properties": {
          "affiliateId": {
            "type": "string",
            "format": "uuid"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "tenantSlug": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "AuthorRequest": {
        "required": [
          "slug",
          "displayName",
          "bio",
          "avatarMediaId",
          "userId",
          "socialLinks"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": [
              "null",
              "string"
            ]
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "bio": {
            "type": [
              "null",
              "string"
            ]
          },
          "avatarMediaId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "socialLinks": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "AuthResponse": {
        "required": [
          "accessToken",
          "accessTokenExpiresAt",
          "refreshToken",
          "refreshTokenExpiresAt",
          "user"
        ],
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string"
          },
          "accessTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "refreshToken": {
            "type": "string"
          },
          "refreshTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/AuthUserDto"
          }
        }
      },
      "AuthUserDto": {
        "required": [
          "userId",
          "email",
          "tenantId",
          "tenantSlug",
          "isTenantOwner",
          "permissions"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "tenantSlug": {
            "type": "string"
          },
          "isTenantOwner": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isPlatformAdmin": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "AvailabilityEntry": {
        "type": "object",
        "properties": {
          "dayOfWeek": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          },
          "endsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          },
          "isUnavailable": {
            "type": "boolean"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BandRequest": {
        "required": [
          "minLeadTimeHours",
          "refundPercent",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "minLeadTimeHours": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "refundPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BeginLoginBody": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "BeginLoginResponse": {
        "required": [
          "auth",
          "tenantSelection"
        ],
        "type": "object",
        "properties": {
          "auth": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AuthResponse"
              }
            ]
          },
          "tenantSelection": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TenantSelectionDto"
              }
            ]
          }
        }
      },
      "BlogPostPublishRequest": {
        "type": "object",
        "properties": {
          "publishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "BlogPostScheduleRequest": {
        "type": "object",
        "properties": {
          "scheduledPublishAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "scheduledUnpublishAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "BookingDto": {
        "required": [
          "id",
          "code",
          "productId",
          "productName",
          "slotId",
          "guestName",
          "guestEmail",
          "status",
          "totalPax",
          "startsAt",
          "totalAmount",
          "currency",
          "customerId",
          "createdAt",
          "cancelledAt",
          "cancellationReason",
          "entryTicket"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "productName": {
            "type": "string"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "guestName": {
            "type": [
              "null",
              "string"
            ]
          },
          "guestEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "cancelledAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "cancellationReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "entryTicket": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EntryTicketDto"
              }
            ]
          },
          "depositAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "balanceAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "balanceDueAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "balanceChargedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "balanceChargeAttempts": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32",
            "default": 0
          }
        }
      },
      "BookingPage": {
        "required": [
          "items",
          "page",
          "pageSize",
          "total"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BookingDto"
            }
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BulkApproveResultDto": {
        "required": [
          "approved"
        ],
        "type": "object",
        "properties": {
          "approved": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BulkConvertGroupQuoteResult": {
        "required": [
          "quoteId",
          "success",
          "reservationId",
          "bookingRef",
          "errorCode",
          "errorMessage"
        ],
        "type": "object",
        "properties": {
          "quoteId": {
            "type": "string",
            "format": "uuid"
          },
          "success": {
            "type": "boolean"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "bookingRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "errorCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "errorMessage": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BulkConvertGroupQuotesRequest": {
        "required": [
          "quoteIds"
        ],
        "type": "object",
        "properties": {
          "quoteIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "BulkConvertGroupQuotesResponse": {
        "required": [
          "total",
          "succeeded",
          "failed",
          "results"
        ],
        "type": "object",
        "properties": {
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "succeeded": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "failed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkConvertGroupQuoteResult"
            }
          }
        }
      },
      "BulkImportError": {
        "required": [
          "row",
          "reason"
        ],
        "type": "object",
        "properties": {
          "row": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "BulkImportResult": {
        "required": [
          "inserted",
          "skippedErrors",
          "errors",
          "wasDryRun"
        ],
        "type": "object",
        "properties": {
          "inserted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "skippedErrors": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkImportError"
            }
          },
          "wasDryRun": {
            "type": "boolean"
          }
        }
      },
      "BulkObservationError": {
        "required": [
          "row",
          "message"
        ],
        "type": "object",
        "properties": {
          "row": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "BulkObservationResponse": {
        "required": [
          "imported",
          "violationsCreated",
          "errors"
        ],
        "type": "object",
        "properties": {
          "imported": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "violationsCreated": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkObservationError"
            }
          }
        }
      },
      "BulkPriceListBody": {
        "required": [
          "rows",
          "atomic"
        ],
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkPriceListRow"
            },
            "description": "The rows to upsert. Capped at 1000 per call."
          },
          "atomic": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "When `true`, the operation is wrapped in a transaction — either ALL\nrows upsert or NONE. When `false` (default), per-row failures are\nreported in the response but successful rows still commit."
          }
        },
        "description": "Bulk price-list upsert request body."
      },
      "BulkPriceListResponse": {
        "required": [
          "totalRows",
          "inserted",
          "updated",
          "deleted",
          "conflicted",
          "failed",
          "results"
        ],
        "type": "object",
        "properties": {
          "totalRows": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "inserted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "updated": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "deleted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "conflicted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "failed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkRowResult"
            }
          }
        },
        "description": "Bulk upsert outcome. The aggregate counters always sum to\nint BulkPriceListResponse.TotalRows; the per-row IReadOnlyList&lt;BulkRowResult&gt; BulkPriceListResponse.Results list is in\ninput order so the client can correlate by index."
      },
      "BulkPriceListRow": {
        "required": [
          "ratePlanId",
          "paxTierId",
          "startDate",
          "endDate",
          "amount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "delete": {
            "type": [
              "null",
              "boolean"
            ]
          }
        },
        "description": "One row in a bulk upsert. Keyed on\n`(RatePlanId, PaxTierId, StartDate, EndDate)` — replays converge."
      },
      "BulkRequest": {
        "required": [
          "ids"
        ],
        "type": "object",
        "properties": {
          "ids": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "BulkRowResult": {
        "required": [
          "index",
          "priceListId",
          "status",
          "reason"
        ],
        "type": "object",
        "properties": {
          "index": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "priceListId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": "One row's outcome. string BulkRowResult.Status is `\"inserted\"`,\n`\"updated\"`, `\"deleted\"`, `\"conflict\"`, or `\"failed\"`.\nGuid? BulkRowResult.PriceListId is populated when the row succeeded;\nstring? BulkRowResult.Reason when it didn't."
      },
      "BuyOrderLabelRequest": {
        "required": [
          "orderLineItemIds",
          "providerRateId"
        ],
        "type": "object",
        "properties": {
          "orderLineItemIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "providerRateId": {
            "type": "string"
          }
        }
      },
      "BuyoutAcceptQuoteDto": {
        "required": [
          "amount",
          "currency",
          "expiresAt",
          "slotStartsAt",
          "capacityConsumed",
          "productName"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "capacityConsumed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "productName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BuyoutDepositIntentDto": {
        "required": [
          "paymentIntentId",
          "clientSecret",
          "publishableKey",
          "connectedAccountId",
          "amount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "paymentIntentId": {
            "type": "string"
          },
          "clientSecret": {
            "type": [
              "null",
              "string"
            ]
          },
          "publishableKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "connectedAccountId": {
            "type": [
              "null",
              "string"
            ]
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "BuyoutDto": {
        "required": [
          "id",
          "slotId",
          "groupInquiryId",
          "capacityConsumed",
          "quotedPrice",
          "depositPaid",
          "status",
          "notes",
          "acceptanceTokenExpiresAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "groupInquiryId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "capacityConsumed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "quotedPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "depositPaid": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "status": {
            "$ref": "#/components/schemas/BuyoutStatus"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "acceptanceTokenExpiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "BuyoutListResponse": {
        "required": [
          "items",
          "totalCount",
          "page",
          "pageSize"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BuyoutDto"
            }
          },
          "totalCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BuyoutStatus": {
        "type": "integer"
      },
      "CalendarDay": {
        "required": [
          "date",
          "slots"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CalendarDaySlot"
            }
          }
        }
      },
      "CalendarDaySlot": {
        "required": [
          "startsAt",
          "durationMinutes",
          "capacity",
          "remainingCapacity",
          "source",
          "sourceRuleId",
          "sourceEntryIndex",
          "conflicts"
        ],
        "type": "object",
        "properties": {
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "remainingCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "source": {
            "$ref": "#/components/schemas/SlotSource"
          },
          "sourceRuleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sourceEntryIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "conflicts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CalendarSlotConflict"
            }
          },
          "kind": {
            "$ref": "#/components/schemas/SlotKind"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "nightsCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "CalendarOverrideAction": {
        "type": "integer"
      },
      "CalendarOverrideDto": {
        "required": [
          "id",
          "date",
          "endDate",
          "action",
          "reason",
          "timeOfDay",
          "ratePlanId",
          "durationMinutes",
          "capacityPerSlot"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "action": {
            "$ref": "#/components/schemas/CalendarOverrideAction"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "timeOfDay": {
            "type": [
              "null",
              "string"
            ]
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacityPerSlot": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "CalendarOverrideRequest": {
        "required": [
          "date",
          "action",
          "reason",
          "timeOfDay",
          "ratePlanId",
          "durationMinutes",
          "capacityPerSlot"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "action": {
            "$ref": "#/components/schemas/CalendarOverrideAction"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "timeOfDay": {
            "type": [
              "null",
              "string"
            ]
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacityPerSlot": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          }
        }
      },
      "CalendarSlotConflict": {
        "required": [
          "withSourceKind",
          "withSourceRuleId",
          "reason"
        ],
        "type": "object",
        "properties": {
          "withSourceKind": {
            "$ref": "#/components/schemas/SlotSource"
          },
          "withSourceRuleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "CancelBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CancelBookingBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CancellationPolicyDto": {
        "required": [
          "isRefundable",
          "freeUntilHoursBefore",
          "refundTiers"
        ],
        "type": "object",
        "properties": {
          "isRefundable": {
            "type": "boolean"
          },
          "freeUntilHoursBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "refundTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundTier"
            }
          }
        }
      },
      "CancellationPolicyRequest": {
        "required": [
          "isRefundable",
          "freeUntilHoursBefore",
          "refundTiers"
        ],
        "type": "object",
        "properties": {
          "isRefundable": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "freeUntilHoursBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "refundTiers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/RefundTier"
            }
          }
        }
      },
      "CancelPortalReturnBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CancelPortalSubscriptionBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CancelPurchaseOrderBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CancelSubscriptionBody": {
        "required": [
          "reason",
          "cancelImmediately"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "cancelImmediately": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CardCaptureMode": {
        "type": "integer"
      },
      "CarrierMarkupKind": {
        "type": "integer"
      },
      "CarrierProvider": {
        "type": "integer"
      },
      "CategoryRequest": {
        "required": [
          "slug",
          "name",
          "description"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CertificationDto": {
        "required": [
          "id",
          "crewMemberId",
          "name",
          "issuingAuthority",
          "issuedAt",
          "expiresAt",
          "hasDocument",
          "notes",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "issuingAuthority": {
            "type": [
              "null",
              "string"
            ]
          },
          "issuedAt": {
            "type": "string",
            "format": "date"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "hasDocument": {
            "type": "boolean"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CertificationRequest": {
        "required": [
          "name",
          "issuingAuthority",
          "issuedAt",
          "expiresAt",
          "notes"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "issuingAuthority": {
            "type": [
              "null",
              "string"
            ]
          },
          "issuedAt": {
            "type": "string",
            "format": "date"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ChangeAffiliatePasswordRequest": {
        "required": [
          "currentPassword",
          "newPassword"
        ],
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": [
              "null",
              "string"
            ]
          },
          "newPassword": {
            "type": "string"
          }
        }
      },
      "ChangePageTypeRequest": {
        "required": [
          "pageType"
        ],
        "type": "object",
        "properties": {
          "pageType": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ChannelDto": {
        "required": [
          "id",
          "name",
          "kind",
          "isActive",
          "configJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/ChannelKind"
          },
          "isActive": {
            "type": "boolean"
          },
          "configJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ChannelKind": {
        "type": "integer"
      },
      "ChannelRequest": {
        "required": [
          "name",
          "kind",
          "isActive",
          "configJson"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChannelKind"
              }
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "configJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ChannelSplitDto": {
        "required": [
          "name",
          "value",
          "color"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "color": {
            "type": "string"
          }
        }
      },
      "ChannelSyncStatusRow": {
        "required": [
          "listingId",
          "productId",
          "productName",
          "channelId",
          "channelName",
          "syncStatus",
          "lastSyncedAt",
          "lastError",
          "lastErrorAt",
          "markup",
          "isVisible"
        ],
        "type": "object",
        "properties": {
          "listingId": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "productName": {
            "type": "string"
          },
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "channelName": {
            "type": "string"
          },
          "syncStatus": {
            "$ref": "#/components/schemas/SyncStatus"
          },
          "lastSyncedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "lastError": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastErrorAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "markup": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "isVisible": {
            "type": "boolean"
          },
          "effectivePrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "effectivePriceCurrency": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CheckLinksRequest": {
        "required": [
          "urls"
        ],
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CheckoutFunnelResponse": {
        "required": [
          "from",
          "to",
          "productId",
          "steps"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FunnelStepDto"
            }
          }
        }
      },
      "CheckoutRequest": {
        "required": [
          "memberEmail"
        ],
        "type": "object",
        "properties": {
          "memberEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "memberName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "isGift": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "autoRenew": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CheckoutRequestBody": {
        "required": [
          "billingAddress",
          "shippingAddress",
          "selectedShippingRateId",
          "promoCode",
          "giftCardId",
          "customerEmail",
          "savedPaymentMethodId"
        ],
        "type": "object",
        "properties": {
          "billingAddress": {
            "$ref": "#/components/schemas/PostalAddress"
          },
          "shippingAddress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PostalAddress"
              }
            ]
          },
          "selectedShippingRateId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "giftCardId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "customerEmail": {
            "type": "string"
          },
          "savedPaymentMethodId": {
            "type": [
              "null",
              "string"
            ]
          },
          "paymentSourceId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ClassSeriesCancelBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ClassSeriesCreateBody": {
        "required": [
          "name",
          "sessionSlotIds",
          "capacity",
          "price",
          "currency"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "sessionSlotIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "capacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "price": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ClassSeriesDto": {
        "required": [
          "id",
          "productId",
          "name",
          "sessionsCount",
          "sessionSlotIds",
          "status",
          "capacity",
          "remainingCapacity",
          "price",
          "currency"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "sessionsCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sessionSlotIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "remainingCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "price": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "ClassSeriesPurchaseBody": {
        "required": [
          "paxBreakdown",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ClassSeriesPurchaseResponse": {
        "required": [
          "parentHoldId",
          "sessionHoldIds"
        ],
        "type": "object",
        "properties": {
          "parentHoldId": {
            "type": "string",
            "format": "uuid"
          },
          "sessionHoldIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "CloneRatePlanRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "CloseSessionBody": {
        "required": [
          "closingActualMinor",
          "closingNotes"
        ],
        "type": "object",
        "properties": {
          "closingActualMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "closingNotes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CmsBlockPlacementScope": {
        "enum": [
          "AllPages",
          "Template",
          "Page"
        ]
      },
      "ColumnMapping": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/FieldRule"
            }
          }
        }
      },
      "CompetitorFeedDto": {
        "required": [
          "id",
          "name",
          "description",
          "channelId",
          "source",
          "lastIngestedAt",
          "lastIngestedRowCount",
          "isActive",
          "ingestCadenceMinutes",
          "nextScheduledIngestAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "source": {
            "type": "string"
          },
          "lastIngestedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "lastIngestedRowCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "ingestCadenceMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "nextScheduledIngestAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "ComputedSlot": {
        "required": [
          "productId",
          "ratePlanId",
          "startsAt",
          "durationMinutes",
          "capacity",
          "perTierCaps",
          "source",
          "sourceRuleId",
          "sourceOverrideId"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perTierCaps": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "source": {
            "$ref": "#/components/schemas/SlotSource"
          },
          "sourceRuleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sourceOverrideId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sourceEntryIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "kind": {
            "$ref": "#/components/schemas/SlotKind"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "nightsCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "transferRouteId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "vehicleClassId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "ConfirmBody": {
        "required": [
          "holdId",
          "totalAmount",
          "currency",
          "ratePlanSnapshotJson",
          "bookingPolicySnapshotJson",
          "customerInfoJson"
        ],
        "type": "object",
        "properties": {
          "holdId": {
            "type": "string",
            "format": "uuid"
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "ratePlanSnapshotJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "bookingPolicySnapshotJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerInfoJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ConfirmRequest": {
        "required": [
          "memberEmail",
          "paymentIntentId"
        ],
        "type": "object",
        "properties": {
          "memberEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "memberName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "paymentIntentId": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string"
          },
          "isGift": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "autoRenew": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "ConnectionTokenResponse": {
        "required": [
          "secret"
        ],
        "type": "object",
        "properties": {
          "secret": {
            "type": "string"
          }
        }
      },
      "ConnectRequest": {
        "required": [
          "credentialsJson"
        ],
        "type": "object",
        "properties": {
          "credentialsJson": {
            "maxLength": 8000,
            "minLength": 0,
            "type": "string"
          },
          "environment": {
            "maxLength": 16,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ConnectSquareBody": {
        "required": [
          "applicationId",
          "locationId",
          "accessToken",
          "environment"
        ],
        "type": "object",
        "properties": {
          "applicationId": {
            "type": "string"
          },
          "locationId": {
            "type": "string"
          },
          "accessToken": {
            "type": "string"
          },
          "environment": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ConnectStripeBody": {
        "required": [
          "accountRef",
          "webhookSecret"
        ],
        "type": "object",
        "properties": {
          "accountRef": {
            "type": "string"
          },
          "webhookSecret": {
            "type": "string"
          }
        }
      },
      "ContactSubmitRequest": {
        "required": [
          "name",
          "email",
          "message"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "topic": {
            "maxLength": 120,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "message": {
            "maxLength": 8000,
            "minLength": 10,
            "type": "string"
          },
          "recaptchaToken": {
            "maxLength": 4096,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ConversationDetailDto": {
        "required": [
          "conversation",
          "messages"
        ],
        "type": "object",
        "properties": {
          "conversation": {
            "$ref": "#/components/schemas/ConversationDto"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageDto"
            }
          }
        }
      },
      "ConversationDto": {
        "required": [
          "id",
          "title",
          "scope",
          "provider",
          "model",
          "totalInputTokens",
          "totalOutputTokens",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "scope": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "totalInputTokens": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "totalOutputTokens": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ConvertGroupQuoteResult": {
        "required": [
          "reservationId",
          "bookingRef"
        ],
        "type": "object",
        "properties": {
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "bookingRef": {
            "type": "string"
          }
        }
      },
      "CopyWeekBody": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time"
          },
          "toStart": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CopyWeekResult": {
        "required": [
          "copiedCount"
        ],
        "type": "object",
        "properties": {
          "copiedCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "CreateAddOnBody": {
        "required": [
          "amount",
          "currency",
          "description",
          "paymentMethod",
          "notes"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/PosPaymentMethod"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "cardCaptureMode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CardCaptureMode"
              }
            ]
          }
        }
      },
      "CreateBlogPostRequest": {
        "required": [
          "slug",
          "title"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "bodyHtml": {
            "type": [
              "null",
              "string"
            ]
          },
          "excerpt": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "featuredImageMediaId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "categoryId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "authorId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "tagIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "seoTitle": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoDescription": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoOgImageUrl": {
            "maxLength": 1024,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoCanonicalUrl": {
            "maxLength": 1024,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoRobots": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateBlogRequest": {
        "required": [
          "slug",
          "title"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateBuyoutBody": {
        "required": [
          "slotId"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "CreateCmsBlockDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "propsJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "translationsJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateConversationBody": {
        "required": [
          "systemPrompt",
          "model"
        ],
        "type": "object",
        "properties": {
          "systemPrompt": {
            "type": [
              "null",
              "string"
            ]
          },
          "model": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateCustomerAddressBody": {
        "required": [
          "label",
          "address",
          "isDefaultBilling",
          "isDefaultShipping"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "$ref": "#/components/schemas/PostalAddress"
          },
          "isDefaultBilling": {
            "type": "boolean"
          },
          "isDefaultShipping": {
            "type": "boolean"
          }
        }
      },
      "CreateFulfillmentRequest": {
        "required": [
          "carrier",
          "service",
          "trackingNumber",
          "labelUrl",
          "initialStatus",
          "lineAllocations"
        ],
        "type": "object",
        "properties": {
          "carrier": {
            "type": [
              "null",
              "string"
            ]
          },
          "service": {
            "type": [
              "null",
              "string"
            ]
          },
          "trackingNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "labelUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "initialStatus": {
            "$ref": "#/components/schemas/OrderShipmentStatus"
          },
          "lineAllocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FulfillmentLineAllocation"
            }
          }
        }
      },
      "CreateGroupQuoteRequest": {
        "required": [
          "productId",
          "ratePlanId",
          "date",
          "paxBreakdown",
          "customerEmail"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "customerEmail": {
            "type": "string"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "addOnIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "channelId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "segmentIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "CreateHoldBody": {
        "required": [
          "slotId",
          "paxBreakdown",
          "ttlMinutes",
          "idempotencyKey",
          "ratePlanId",
          "customerInfoJson"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "ttlMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "customerInfoJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateImportJobRequest": {
        "required": [
          "entityKind",
          "sourceKind",
          "fileFormat",
          "isDryRun",
          "options"
        ],
        "type": "object",
        "properties": {
          "entityKind": {
            "$ref": "#/components/schemas/ImportEntityKind"
          },
          "sourceKind": {
            "$ref": "#/components/schemas/ImportSourceKind"
          },
          "fileFormat": {
            "$ref": "#/components/schemas/ImportFileFormat"
          },
          "isDryRun": {
            "type": "boolean"
          },
          "options": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ImportOptions"
              }
            ]
          },
          "notifyOnComplete": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "CreateInventoryLocationRequest": {
        "required": [
          "name",
          "address",
          "isFulfillable",
          "isPickup",
          "ranking",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/PostalAddress"
          },
          "isFulfillable": {
            "type": "boolean"
          },
          "isPickup": {
            "type": "boolean"
          },
          "ranking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "CreateItineraryStopRequest": {
        "required": [
          "durationMinutes",
          "translations"
        ],
        "type": "object",
        "properties": {
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "CreateLocationBody": {
        "required": [
          "displayName",
          "line1",
          "line2",
          "city",
          "state",
          "postalCode",
          "country"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string"
          },
          "line1": {
            "type": "string"
          },
          "line2": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          }
        }
      },
      "CreateMediaFromUrlRequest": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "kind": {
            "type": [
              "null",
              "string"
            ]
          },
          "contentType": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreatePlacementDto": {
        "type": "object",
        "properties": {
          "blockId": {
            "type": "string",
            "format": "uuid"
          },
          "slot": {
            "type": "string"
          },
          "scopeKind": {
            "$ref": "#/components/schemas/CmsBlockPlacementScope"
          },
          "scopeRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "order": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "enabled": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CreatePortalReturnBody": {
        "required": [
          "orderId",
          "lines",
          "reason",
          "customerNotes"
        ],
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatePortalReturnLineBody"
            }
          },
          "reason": {
            "$ref": "#/components/schemas/ReturnReason"
          },
          "customerNotes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreatePortalReturnLineBody": {
        "required": [
          "orderLineItemId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "orderLineItemId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "CreatePortalSubscriptionBody": {
        "required": [
          "variantId",
          "quantity",
          "interval",
          "billingAddressJson",
          "shippingAddressJson",
          "paymentMethodId"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "interval": {
            "$ref": "#/components/schemas/SubscriptionInterval"
          },
          "billingAddressJson": {
            "type": "string"
          },
          "shippingAddressJson": {
            "type": "string"
          },
          "paymentMethodId": {
            "type": "string"
          }
        },
        "description": "Portal-side subscription create body. Distinct from the operator\n`CreateSubscriptionRequest` because the customer-id, email, and\nname come from the session — not the request body — so the customer\ncan't enroll someone else's account."
      },
      "CreatePosRefundBody": {
        "required": [
          "amount",
          "reason"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreatePosStationRequest": {
        "required": [
          "name",
          "defaultCurrency",
          "openingFloatMinor",
          "notes",
          "terminalReaderId",
          "defaultPrinterIdentifier",
          "defaultPrinterLabel",
          "cashDrawerEnabled",
          "receiptHeaderLines",
          "receiptFooterLines"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "defaultCurrency": {
            "type": "string"
          },
          "openingFloatMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "terminalReaderId": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultPrinterIdentifier": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultPrinterLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "cashDrawerEnabled": {
            "type": "boolean"
          },
          "receiptHeaderLines": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "receiptFooterLines": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CreateProductRequest": {
        "required": [
          "name",
          "slug",
          "description",
          "type",
          "defaultLocale",
          "currency"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ProductType"
              }
            ]
          },
          "defaultLocale": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "parentProductId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "scheduleProfile": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ScheduleProfile"
              }
            ]
          }
        }
      },
      "CreateProductVariantRequest": {
        "required": [
          "productId",
          "sku",
          "barcode",
          "gtin",
          "weightGrams",
          "lengthMm",
          "widthMm",
          "heightMm",
          "priceOverrideCents",
          "compareAtPriceCents",
          "isTaxable",
          "requiresShipping",
          "allowOversell",
          "taxClass",
          "optionValueIds"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string"
          },
          "barcode": {
            "type": [
              "null",
              "string"
            ]
          },
          "gtin": {
            "type": [
              "null",
              "string"
            ]
          },
          "weightGrams": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lengthMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "widthMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "heightMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "priceOverrideCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "compareAtPriceCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "isTaxable": {
            "type": "boolean"
          },
          "requiresShipping": {
            "type": "boolean"
          },
          "allowOversell": {
            "type": "boolean"
          },
          "taxClass": {
            "$ref": "#/components/schemas/TaxClass"
          },
          "optionValueIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "CreatePurchaseOrderRequest": {
        "required": [
          "supplierId",
          "receiveLocationId",
          "expectedReceiveAt",
          "notes"
        ],
        "type": "object",
        "properties": {
          "supplierId": {
            "type": "string",
            "format": "uuid"
          },
          "receiveLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "expectedReceiveAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateReaderRequest": {
        "required": [
          "friendlyName"
        ],
        "type": "object",
        "properties": {
          "friendlyName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "hardwareModel": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "hardwareAddress": {
            "maxLength": 128,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateRefundBody": {
        "required": [
          "amount",
          "reason"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateReturnOrderBody": {
        "required": [
          "orderId",
          "lines",
          "reason",
          "customerNotes"
        ],
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateReturnOrderLineBody"
            }
          },
          "reason": {
            "$ref": "#/components/schemas/ReturnReason"
          },
          "customerNotes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateReturnOrderLineBody": {
        "required": [
          "orderLineItemId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "orderLineItemId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "CreateRoleRequest": {
        "required": [
          "name",
          "description",
          "permissions"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CreateSaleBody": {
        "required": [
          "slotId",
          "ratePlanId",
          "paxBreakdown",
          "totalAmount",
          "currency",
          "paymentMethod",
          "promoCode",
          "customerId",
          "customerName",
          "customerEmail",
          "customerPhone",
          "notes"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/PosPaymentMethod"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "cardCaptureMode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CardCaptureMode"
              }
            ]
          }
        }
      },
      "CreateShareRequest": {
        "required": [
          "channel"
        ],
        "type": "object",
        "properties": {
          "channel": {
            "type": "string"
          }
        }
      },
      "CreateShippingRateRequest": {
        "required": [
          "name",
          "calculation",
          "tiersJson",
          "currency",
          "isActive",
          "position"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "calculation": {
            "$ref": "#/components/schemas/ShippingRateCalculation"
          },
          "tiersJson": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "CreateShippingZoneRequest": {
        "required": [
          "name",
          "countries",
          "regions",
          "postalCodePrefixes",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "postalCodePrefixes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "CreateStockLotRequest": {
        "required": [
          "variantId",
          "locationId",
          "lotNumber",
          "manufacturedAt",
          "expiresAt",
          "quantityReceived",
          "notes"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "lotNumber": {
            "type": "string"
          },
          "manufacturedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "quantityReceived": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateStockSerialRequest": {
        "required": [
          "variantId",
          "serialNumber",
          "lotId",
          "locationId",
          "notes"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "serialNumber": {
            "type": "string"
          },
          "lotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateSubproductRequest": {
        "required": [
          "name",
          "slug",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "$ref": "#/components/schemas/ProductType"
          }
        }
      },
      "CreateSubscriptionRequest": {
        "required": [
          "customerId",
          "variantId",
          "quantity",
          "interval",
          "billingAddressJson",
          "shippingAddressJson",
          "defaultPaymentMethodId",
          "customerEmail",
          "customerName"
        ],
        "type": "object",
        "properties": {
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "interval": {
            "$ref": "#/components/schemas/SubscriptionInterval"
          },
          "billingAddressJson": {
            "type": "string"
          },
          "shippingAddressJson": {
            "type": "string"
          },
          "defaultPaymentMethodId": {
            "type": "string"
          },
          "customerEmail": {
            "type": "string"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateSupplierRequest": {
        "required": [
          "name",
          "contactEmail",
          "contactPhone",
          "address",
          "currency",
          "defaultLeadTimeDays",
          "paymentTerms",
          "notes"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "contactEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SupplierAddressDto"
              }
            ]
          },
          "currency": {
            "type": "string"
          },
          "defaultLeadTimeDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "paymentTerms": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateTerminalPaymentIntentBody": {
        "required": [
          "amountMinor",
          "currency"
        ],
        "type": "object",
        "properties": {
          "amountMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateThemeRequest": {
        "required": [
          "name",
          "slug",
          "description",
          "starterTheme"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "starterTheme": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateTransferRequest": {
        "required": [
          "fromLocationId",
          "toLocationId",
          "lines"
        ],
        "type": "object",
        "properties": {
          "fromLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "toLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransferLineRequest"
            }
          }
        }
      },
      "CreateWaiverTemplateRequest": {
        "required": [
          "name",
          "bodyMarkdown",
          "requiresMinorGuardian"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "bodyMarkdown": {
            "type": "string"
          },
          "requiresMinorGuardian": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CreateWebhookSubscriptionBody": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "url": {
            "maxLength": 2048,
            "minLength": 0,
            "type": "string"
          },
          "events": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CreateWorkspaceBody": {
        "required": [
          "slug",
          "name"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CrewAvailabilityDto": {
        "required": [
          "id",
          "crewMemberId",
          "dayOfWeek",
          "startsAt",
          "endsAt",
          "isUnavailable",
          "notes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "dayOfWeek": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          },
          "endsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          },
          "isUnavailable": {
            "type": "boolean"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CrewClassification": {
        "type": "integer"
      },
      "CrewComplianceRow": {
        "required": [
          "crewMemberId",
          "name",
          "totalWorkedMinutes",
          "totalOvertimeMinutes",
          "mealBreakViolationCount"
        ],
        "type": "object",
        "properties": {
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "totalWorkedMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalOvertimeMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "mealBreakViolationCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "CrewInviteResultDto": {
        "required": [
          "pin",
          "userId"
        ],
        "type": "object",
        "properties": {
          "pin": {
            "type": [
              "null",
              "string"
            ]
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "CrewMagicLinkBody": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 320,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "CrewMemberDto": {
        "required": [
          "id",
          "name",
          "email",
          "phone",
          "roles",
          "userId",
          "isActive",
          "hasPin",
          "pinIssuedAt",
          "hourlyRate",
          "currency",
          "createdAt",
          "hasPhoto",
          "emergencyContactName",
          "emergencyContactPhone",
          "hireDate",
          "classification",
          "gustoEmployeeId",
          "quickBooksEmployeeRef"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "isActive": {
            "type": "boolean"
          },
          "hasPin": {
            "type": "boolean"
          },
          "pinIssuedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "hourlyRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "hasPhoto": {
            "type": "boolean"
          },
          "emergencyContactName": {
            "type": [
              "null",
              "string"
            ]
          },
          "emergencyContactPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "hireDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "classification": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CrewClassification"
              }
            ]
          },
          "gustoEmployeeId": {
            "type": [
              "null",
              "string"
            ]
          },
          "quickBooksEmployeeRef": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CrewMemberRequest": {
        "required": [
          "name",
          "email",
          "phone",
          "roles",
          "userId",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          },
          "roles": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "hourlyRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "emergencyContactName": {
            "type": [
              "null",
              "string"
            ]
          },
          "emergencyContactPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "hireDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "classification": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CrewClassification"
              }
            ]
          },
          "gustoEmployeeId": {
            "type": [
              "null",
              "string"
            ]
          },
          "quickBooksEmployeeRef": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CrewPortalTokenDto": {
        "required": [
          "accessToken",
          "accessTokenExpiresAt",
          "refreshToken",
          "refreshTokenExpiresAt",
          "userId",
          "tenantId",
          "tenantSlug",
          "email",
          "isTenantOwner",
          "permissions"
        ],
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string"
          },
          "accessTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "refreshToken": {
            "type": "string"
          },
          "refreshTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "tenantSlug": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "isTenantOwner": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CrewScheduleRow": {
        "required": [
          "crewMemberId",
          "name",
          "shifts"
        ],
        "type": "object",
        "properties": {
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "shifts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CrewShiftDto"
            }
          },
          "inProgressPunch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/InProgressPunchDto"
              }
            ]
          }
        }
      },
      "CrewShiftDto": {
        "required": [
          "id",
          "crewMemberId",
          "startsAt",
          "endsAt",
          "status",
          "notes",
          "productId",
          "slotId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/ShiftStatus"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "publishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "recurrenceGroupId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reminderSentAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "warnings": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ShiftWarning"
            }
          },
          "isOpenForClaim": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "CrewShiftSummaryDto": {
        "required": [
          "id",
          "isOpenForClaim",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "isOpenForClaim": {
            "type": "boolean"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "CrewTimeOffKind": {
        "type": "integer"
      },
      "CrewTimeOffRequestDto": {
        "required": [
          "id",
          "crewMemberId",
          "startsAt",
          "endsAt",
          "kind",
          "status",
          "reason",
          "decidedByUserId",
          "decidedAt",
          "decisionNote",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "kind": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "decidedByUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "decidedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "decisionNote": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CrewTimeOffStatus": {
        "type": "integer"
      },
      "CustomDomainPostBody": {
        "required": [
          "customDomain"
        ],
        "type": "object",
        "properties": {
          "customDomain": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CustomDomainStatus": {
        "type": "integer"
      },
      "CustomerAutoRenewRequest": {
        "required": [
          "memberEmail"
        ],
        "type": "object",
        "properties": {
          "memberEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "CustomerBookingDto": {
        "required": [
          "id",
          "bookingRef",
          "productId",
          "productName",
          "status",
          "startsAt",
          "totalAmount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "bookingRef": {
            "type": "string"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "productName": {
            "type": "string"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "CustomerCancelMembershipRequest": {
        "required": [
          "memberEmail"
        ],
        "type": "object",
        "properties": {
          "memberEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "CustomerCurrencyView": {
        "required": [
          "currency",
          "net",
          "tax",
          "gross",
          "fxRate",
          "fxRateAt"
        ],
        "type": "object",
        "properties": {
          "currency": {
            "type": "string"
          },
          "net": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "tax": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "gross": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "fxRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "fxRateAt": {
            "type": "string",
            "format": "date-time"
          },
          "tip": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "CustomerDto": {
        "required": [
          "id",
          "email",
          "name",
          "phone",
          "notes",
          "marketingOptIn",
          "smsOptIn",
          "createdAt",
          "userId",
          "linkedUser"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "marketingOptIn": {
            "type": "boolean"
          },
          "smsOptIn": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "linkedUser": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LinkedUserDto"
              }
            ]
          }
        }
      },
      "CustomerExternalLoginInfo": {
        "required": [
          "provider",
          "email",
          "createdAt",
          "lastUsedAt"
        ],
        "type": "object",
        "properties": {
          "provider": {
            "type": "string"
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "lastUsedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CustomerMembershipDto": {
        "required": [
          "id",
          "tenantId",
          "customerEmail",
          "tier",
          "discountPercent",
          "validFrom",
          "validUntil",
          "isActive",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "customerEmail": {
            "type": "string"
          },
          "tier": {
            "type": "string"
          },
          "discountPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time"
          },
          "validUntil": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "isActive": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CustomerMembershipRequest": {
        "required": [
          "customerEmail",
          "tier",
          "discountPercent"
        ],
        "type": "object",
        "properties": {
          "customerEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "tier": {
            "type": [
              "null",
              "string"
            ]
          },
          "discountPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "validFrom": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "validUntil": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CustomerQuestionDto": {
        "required": [
          "id",
          "sortOrder",
          "type",
          "isRequired",
          "askPerPax",
          "options",
          "translations"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/ProductCustomerQuestionType"
          },
          "isRequired": {
            "type": "boolean"
          },
          "askPerPax": {
            "type": "boolean"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "CustomerQuestionRequest": {
        "required": [
          "type",
          "isRequired",
          "askPerPax",
          "options",
          "translations"
        ],
        "type": "object",
        "properties": {
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ProductCustomerQuestionType"
              }
            ]
          },
          "isRequired": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "askPerPax": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "options": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "CustomerRequest": {
        "required": [
          "email",
          "name",
          "phone",
          "notes",
          "marketingOptIn"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "marketingOptIn": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "smsOptIn": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CustomerSegmentDto": {
        "required": [
          "id",
          "name",
          "description",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "CustomerSegmentRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "DashboardSummaryDto": {
        "required": [
          "today",
          "revenueTrend",
          "channels",
          "topProducts",
          "activity"
        ],
        "type": "object",
        "properties": {
          "today": {
            "$ref": "#/components/schemas/TodayStatsDto"
          },
          "revenueTrend": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrendPointDto"
            }
          },
          "channels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChannelSplitDto"
            }
          },
          "topProducts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TopProductDto"
            }
          },
          "activity": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivityItemDto"
            }
          }
        }
      },
      "DashboardWidgetsResponse": {
        "required": [
          "lowStock",
          "pendingFulfillments",
          "recentOrders",
          "stockVelocity"
        ],
        "type": "object",
        "properties": {
          "lowStock": {
            "$ref": "#/components/schemas/LowStockWidgetData"
          },
          "pendingFulfillments": {
            "$ref": "#/components/schemas/PendingFulfillmentsWidgetData"
          },
          "recentOrders": {
            "$ref": "#/components/schemas/RecentOrdersWidgetData"
          },
          "stockVelocity": {
            "$ref": "#/components/schemas/StockVelocityWidgetData"
          }
        }
      },
      "DayOfWeekMask": {
        "type": "integer"
      },
      "DeactivateRequest": {
        "type": "object",
        "properties": {
          "reason": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "location": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "DebugToolDto": {
        "required": [
          "name",
          "scope",
          "description",
          "requiredPermission",
          "isDestructive",
          "defaultEnabled",
          "httpMethod",
          "routePattern"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "requiredPermission": {
            "type": [
              "null",
              "string"
            ]
          },
          "isDestructive": {
            "type": "boolean"
          },
          "defaultEnabled": {
            "type": "boolean"
          },
          "httpMethod": {
            "type": [
              "null",
              "string"
            ]
          },
          "routePattern": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "DecideBody": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "decisionNote": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "DepositKind": {
        "type": "integer"
      },
      "DiscountUptakeRow": {
        "required": [
          "label",
          "count",
          "totalDiscountAbsolute",
          "currency"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalDiscountAbsolute": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "DnsRecordDto": {
        "required": [
          "type",
          "name",
          "value"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "EarningEntryDto": {
        "required": [
          "id",
          "reservationId",
          "bookingTotal",
          "commissionPercent",
          "commissionAmount",
          "currency",
          "status",
          "payoutId",
          "earnedAt",
          "approvedAt",
          "paidAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "bookingTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "commissionAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "payoutId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "earnedAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "paidAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "EffectiveBrandingDto": {
        "required": [
          "brandName",
          "logoLightUrl",
          "logoDarkUrl",
          "faviconUrl",
          "primaryColorHex",
          "accentColorHex",
          "footerHtml",
          "customCss",
          "hidePoweredBy",
          "supportEmail"
        ],
        "type": "object",
        "properties": {
          "brandName": {
            "type": "string"
          },
          "logoLightUrl": {
            "type": "string"
          },
          "logoDarkUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "faviconUrl": {
            "type": "string"
          },
          "primaryColorHex": {
            "type": "string"
          },
          "accentColorHex": {
            "type": "string"
          },
          "footerHtml": {
            "type": [
              "null",
              "string"
            ]
          },
          "customCss": {
            "type": [
              "null",
              "string"
            ]
          },
          "hidePoweredBy": {
            "type": "boolean"
          },
          "supportEmail": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "EligibleUserDto": {
        "required": [
          "userId",
          "email",
          "displayName",
          "isOwner"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "isOwner": {
            "type": "boolean"
          }
        }
      },
      "EmailMessageDto": {
        "required": [
          "id",
          "customerId",
          "reservationId",
          "toAddress",
          "toName",
          "subject",
          "kind",
          "status",
          "provider",
          "providerMessageId",
          "providerError",
          "bodyPreview",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "toAddress": {
            "type": "string"
          },
          "toName": {
            "type": [
              "null",
              "string"
            ]
          },
          "subject": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/EmailMessageStatus"
          },
          "provider": {
            "type": "string"
          },
          "providerMessageId": {
            "type": [
              "null",
              "string"
            ]
          },
          "providerError": {
            "type": [
              "null",
              "string"
            ]
          },
          "bodyPreview": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "EmailMessagePage": {
        "required": [
          "items",
          "page",
          "pageSize",
          "total"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailMessageDto"
            }
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "EmailMessageStatus": {
        "type": "integer"
      },
      "EmailProviderKind": {
        "type": "integer"
      },
      "EmailStatsDto": {
        "required": [
          "total",
          "delivered",
          "failed",
          "complained",
          "byProvider"
        ],
        "type": "object",
        "properties": {
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "delivered": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "failed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "complained": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "byProvider": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProviderStatsDto"
            }
          }
        }
      },
      "EmailTemplatePreviewRequest": {
        "required": [
          "subject",
          "blocksJson",
          "bodyText"
        ],
        "type": "object",
        "properties": {
          "subject": {
            "type": "string"
          },
          "blocksJson": {
            "type": "string"
          },
          "bodyText": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "EmailTemplateUpsertRequest": {
        "required": [
          "subject",
          "bodyText",
          "blocksJson",
          "description"
        ],
        "type": "object",
        "properties": {
          "subject": {
            "type": "string"
          },
          "bodyText": {
            "type": [
              "null",
              "string"
            ]
          },
          "blocksJson": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "EntryPassDto": {
        "required": [
          "id",
          "reservationId",
          "code",
          "status",
          "totalPax",
          "paxAdmitted",
          "issuedAt",
          "voidedAt",
          "voidReason",
          "scans"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/EntryPassStatus"
          },
          "totalPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "paxAdmitted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "issuedAt": {
            "type": "string",
            "format": "date-time"
          },
          "voidedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "voidReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "scans": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntryScanDto"
            }
          }
        }
      },
      "EntryPassStatus": {
        "type": "integer"
      },
      "EntryPolicyDto": {
        "required": [
          "id",
          "productId",
          "ratePlanId",
          "kind",
          "maxEntries",
          "cooldownMinutes",
          "perPeriodEntries",
          "perPeriodHours",
          "validFromOffsetMinutes",
          "validUntilOffsetMinutes",
          "allowGroupSplit"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "kind": {
            "$ref": "#/components/schemas/EntryPolicyKind"
          },
          "maxEntries": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "cooldownMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perPeriodEntries": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perPeriodHours": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "validFromOffsetMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "validUntilOffsetMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "allowGroupSplit": {
            "type": "boolean"
          }
        }
      },
      "EntryPolicyKind": {
        "type": "integer"
      },
      "EntryPolicyRequest": {
        "required": [
          "ratePlanId",
          "kind",
          "maxEntries",
          "cooldownMinutes",
          "perPeriodEntries",
          "perPeriodHours",
          "validFromOffsetMinutes",
          "validUntilOffsetMinutes",
          "allowGroupSplit"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "kind": {
            "$ref": "#/components/schemas/EntryPolicyKind"
          },
          "maxEntries": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "cooldownMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perPeriodEntries": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perPeriodHours": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "validFromOffsetMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "validUntilOffsetMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "allowGroupSplit": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "EntryRequest": {
        "required": [
          "kind",
          "name",
          "sortOrder",
          "config"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/PlaybookEntryKind"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "config": {
            "$ref": "#/components/schemas/JsonElement"
          }
        }
      },
      "EntryScanDto": {
        "required": [
          "id",
          "scannedAt",
          "gateId",
          "operatorId",
          "result",
          "deniedReason",
          "paxScanned",
          "wasForced",
          "notes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "scannedAt": {
            "type": "string",
            "format": "date-time"
          },
          "gateId": {
            "type": [
              "null",
              "string"
            ]
          },
          "operatorId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "result": {
            "$ref": "#/components/schemas/ScanResult"
          },
          "deniedReason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ScanDeniedReason"
              }
            ]
          },
          "paxScanned": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "wasForced": {
            "type": "boolean"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "EntryScanOutcomeDto": {
        "required": [
          "result",
          "deniedReason",
          "paxAdmittedThisScan",
          "paxAdmittedTotal",
          "totalPax",
          "passId",
          "scanId",
          "message"
        ],
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/ScanResult"
          },
          "deniedReason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ScanDeniedReason"
              }
            ]
          },
          "paxAdmittedThisScan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "paxAdmittedTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "passId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "scanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "message": {
            "type": "string"
          },
          "nextOpenBandStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          }
        }
      },
      "EntryThrottleBandDto": {
        "required": [
          "start",
          "end",
          "maxEntries"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string"
          },
          "end": {
            "type": "string"
          },
          "maxEntries": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "EntryThrottleBandRequest": {
        "required": [
          "start",
          "end",
          "maxEntries"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string"
          },
          "end": {
            "type": "string"
          },
          "maxEntries": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "EntryTicketDto": {
        "required": [
          "passCode",
          "voucherCode",
          "status",
          "totalPax",
          "paxAdmitted",
          "issuedAt",
          "voidedAt",
          "voidReason"
        ],
        "type": "object",
        "properties": {
          "passCode": {
            "type": "string"
          },
          "voucherCode": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/EntryPassStatus"
          },
          "totalPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "paxAdmitted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "issuedAt": {
            "type": "string",
            "format": "date-time"
          },
          "voidedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "voidReason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ExperimentDto": {
        "required": [
          "id",
          "name",
          "description",
          "ratePlanId",
          "paxTierId",
          "status",
          "startsAt",
          "endsAt",
          "salt",
          "isActive",
          "variantCount",
          "variants"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/PriceExperimentStatus"
          },
          "startsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "endsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "salt": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "variantCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "variants": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/VariantDto"
            }
          }
        }
      },
      "ExperimentRequest": {
        "required": [
          "name",
          "description",
          "ratePlanId",
          "paxTierId",
          "salt",
          "startsAt",
          "endsAt",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "salt": {
            "type": [
              "null",
              "string"
            ]
          },
          "startsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "endsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "ExpiringCertDto": {
        "required": [
          "certificationId",
          "crewMemberId",
          "crewMemberName",
          "certificationName",
          "expiresAt",
          "daysUntilExpiry"
        ],
        "type": "object",
        "properties": {
          "certificationId": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberName": {
            "type": "string"
          },
          "certificationName": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date"
          },
          "daysUntilExpiry": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ExportFormat": {
        "type": "integer"
      },
      "ExternalReferenceDto": {
        "required": [
          "id",
          "entityType",
          "entityId",
          "channelId",
          "externalId",
          "payloadJson",
          "lastSyncedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string"
          },
          "payloadJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastSyncedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "ExternalReferenceRequest": {
        "required": [
          "entityType",
          "entityId",
          "channelId",
          "externalId",
          "payloadJson",
          "lastSyncedAt"
        ],
        "type": "object",
        "properties": {
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string"
          },
          "payloadJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastSyncedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "FaqDto": {
        "required": [
          "id",
          "sortOrder",
          "translations"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "FaqRequest": {
        "required": [
          "translations"
        ],
        "type": "object",
        "properties": {
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "FeatureFlagToggleRequest": {
        "required": [
          "enabled"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "FeedIngestBody": {
        "required": [
          "rows"
        ],
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedIngestRow"
            }
          }
        }
      },
      "FeedIngestRow": {
        "required": [
          "productId",
          "ratePlanId",
          "paxTierId",
          "slotStartsAt",
          "amount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "FeedRequest": {
        "required": [
          "name",
          "description",
          "channelId",
          "source",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "source": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "ingestCadenceMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "FeeDto": {
        "required": [
          "id",
          "name",
          "calcKind",
          "value",
          "currency",
          "sortOrder",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "calcKind": {
            "type": "string"
          },
          "value": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "FeeRequest": {
        "required": [
          "name",
          "calcKind",
          "value"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "calcKind": {
            "type": [
              "null",
              "string"
            ]
          },
          "value": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "FieldRule": {
        "type": "object",
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/FieldRuleKind"
          },
          "sourceColumn": {
            "type": [
              "null",
              "string"
            ]
          },
          "value": {
            "type": [
              "null",
              "string"
            ]
          },
          "sources": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "separator": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "FieldRuleKind": {
        "type": "integer"
      },
      "FraudActionBody": {
        "required": [
          "note"
        ],
        "type": "object",
        "properties": {
          "note": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": "Body for hold / release. `Note` is optional."
      },
      "FraudRefundBody": {
        "required": [
          "amountMinorUnits",
          "reason",
          "note"
        ],
        "type": "object",
        "properties": {
          "amountMinorUnits": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "note": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": "Body for refund. Money flow + operator note in one payload."
      },
      "FraudSignalResolveRequest": {
        "required": [
          "note"
        ],
        "type": "object",
        "properties": {
          "note": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "FulfillmentLineAllocation": {
        "required": [
          "orderLineItemId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "orderLineItemId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "FunnelStepDto": {
        "required": [
          "step",
          "count",
          "dropOffPct"
        ],
        "type": "object",
        "properties": {
          "step": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "dropOffPct": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "FxConversionDto": {
        "required": [
          "amount",
          "fromCurrency",
          "toCurrency",
          "rate",
          "asOf"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "fromCurrency": {
            "type": "string"
          },
          "toCurrency": {
            "type": "string"
          },
          "rate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "asOf": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "FxRateDto": {
        "required": [
          "id",
          "baseCurrency",
          "quoteCurrency",
          "rate",
          "asOf",
          "source"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "baseCurrency": {
            "type": "string"
          },
          "quoteCurrency": {
            "type": "string"
          },
          "rate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "asOf": {
            "type": "string",
            "format": "date-time"
          },
          "source": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "GateStationDto": {
        "required": [
          "id",
          "code",
          "name",
          "isActive",
          "isDefault"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "isDefault": {
            "type": "boolean"
          }
        }
      },
      "GateStationRequest": {
        "required": [
          "name",
          "code",
          "isActive",
          "isDefault"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isDefault": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "GiftCardAdjustBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "amountCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "GiftCardBalanceDto": {
        "required": [
          "remainingCents",
          "currency",
          "status",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "remainingCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "GiftCardManualIssueBody": {
        "required": [
          "purchaserEmail",
          "purchaserName"
        ],
        "type": "object",
        "properties": {
          "amountCents": {
            "maximum": 2147483647,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": [
              "null",
              "string"
            ]
          },
          "purchaserEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "purchaserName": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string"
          },
          "recipientEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "recipientName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "message": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "deliverAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "reason": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "GiftCardPurchaseBody": {
        "required": [
          "quoteId",
          "paymentIntentId"
        ],
        "type": "object",
        "properties": {
          "quoteId": {
            "type": "string",
            "format": "uuid"
          },
          "paymentIntentId": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "GiftCardPurchaseDto": {
        "required": [
          "giftCardId",
          "code",
          "amountCents",
          "currency",
          "expiresAt",
          "deliverAt"
        ],
        "type": "object",
        "properties": {
          "giftCardId": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string"
          },
          "amountCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "currency": {
            "type": "string"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "deliverAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "GiftCardQuoteBody": {
        "required": [
          "tenantSlug",
          "purchaserEmail",
          "purchaserName"
        ],
        "type": "object",
        "properties": {
          "tenantSlug": {
            "type": "string"
          },
          "amountCents": {
            "maximum": 2147483647,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "purchaserEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "purchaserName": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string"
          },
          "recipientEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "recipientName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "message": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "deliverAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "GiftCardQuoteDto": {
        "required": [
          "quoteId",
          "totalCents",
          "currency"
        ],
        "type": "object",
        "properties": {
          "quoteId": {
            "type": "string",
            "format": "uuid"
          },
          "totalCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "GiftCardVoidBody": {
        "type": "object",
        "properties": {
          "reason": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "GroupQuoteAnalyticsDto": {
        "required": [
          "from",
          "to",
          "totalReceived",
          "countByStatus",
          "conversionRates",
          "avgHoursToApprove",
          "avgHoursToConvert",
          "quotedValueByCurrency",
          "convertedValueByCurrency"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "totalReceived": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "countByStatus": {
            "$ref": "#/components/schemas/GroupQuoteStatusCountsDto"
          },
          "conversionRates": {
            "$ref": "#/components/schemas/GroupQuoteConversionRatesDto"
          },
          "avgHoursToApprove": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "avgHoursToConvert": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "quotedValueByCurrency": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          },
          "convertedValueByCurrency": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          }
        }
      },
      "GroupQuoteConversionRatesDto": {
        "required": [
          "receivedToApproved",
          "approvedToConverted",
          "overallReceivedToConverted",
          "lostRate"
        ],
        "type": "object",
        "properties": {
          "receivedToApproved": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "approvedToConverted": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "overallReceivedToConverted": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "lostRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "GroupQuoteDto": {
        "required": [
          "id",
          "tenantId",
          "productId",
          "ratePlanId",
          "slotId",
          "date",
          "slotStartsAt",
          "paxBreakdown",
          "customerEmail",
          "customerName",
          "notes",
          "status",
          "createdAt",
          "expiresAt",
          "approvedAt",
          "convertedAt",
          "convertedReservationId",
          "pricingSnapshotJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "customerEmail": {
            "type": "string"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "convertedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "convertedReservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "pricingSnapshotJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "GroupQuoteStatusCountsDto": {
        "required": [
          "draft",
          "approved",
          "expired",
          "converted",
          "cancelled"
        ],
        "type": "object",
        "properties": {
          "draft": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "approved": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "expired": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "converted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "cancelled": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "HeartbeatRequest": {
        "type": "object",
        "properties": {
          "location": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "HoldDto": {
        "required": [
          "id",
          "slotId",
          "ratePlanId",
          "status",
          "expiresAt",
          "paxBreakdown",
          "idempotencyKey",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/HoldStatus"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "idempotencyKey": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "HoldStatus": {
        "type": "integer"
      },
      "IFormFile": {
        "type": "string",
        "format": "binary"
      },
      "ImportConflictPolicy": {
        "type": "integer"
      },
      "ImportEntityKind": {
        "type": "integer"
      },
      "ImportFileFormat": {
        "type": "integer"
      },
      "ImportJobDto": {
        "required": [
          "id",
          "entityKind",
          "sourceKind",
          "fileFormat",
          "status",
          "isDryRun",
          "originalFileName",
          "fileSizeBytes",
          "totalRows",
          "processedRows",
          "insertedRows",
          "updatedRows",
          "skippedRows",
          "errorRows",
          "startedAt",
          "finishedAt",
          "failureReason",
          "createdAt",
          "updatedAt",
          "notifyOnComplete"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "entityKind": {
            "$ref": "#/components/schemas/ImportEntityKind"
          },
          "sourceKind": {
            "$ref": "#/components/schemas/ImportSourceKind"
          },
          "fileFormat": {
            "$ref": "#/components/schemas/ImportFileFormat"
          },
          "status": {
            "type": "string"
          },
          "isDryRun": {
            "type": "boolean"
          },
          "originalFileName": {
            "type": [
              "null",
              "string"
            ]
          },
          "fileSizeBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "totalRows": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "processedRows": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "insertedRows": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "updatedRows": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "skippedRows": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "errorRows": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "finishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "failureReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "notifyOnComplete": {
            "type": "boolean"
          }
        }
      },
      "ImportOptions": {
        "type": "object",
        "properties": {
          "onConflict": {
            "$ref": "#/components/schemas/ImportConflictPolicy"
          },
          "autoCreateCustomers": {
            "type": "boolean"
          },
          "chunkSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ImportPresetDto": {
        "required": [
          "source",
          "entity",
          "description"
        ],
        "type": "object",
        "properties": {
          "source": {
            "$ref": "#/components/schemas/ImportSourceKind"
          },
          "entity": {
            "$ref": "#/components/schemas/ImportEntityKind"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "ImportPreviewDto": {
        "required": [
          "detectedColumns",
          "sampleRows"
        ],
        "type": "object",
        "properties": {
          "detectedColumns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sampleRows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "ImportSourceKind": {
        "type": "integer"
      },
      "IngestResponse": {
        "required": [
          "ingested",
          "violationsCreated",
          "violationIds"
        ],
        "type": "object",
        "properties": {
          "ingested": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "violationsCreated": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "violationIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "InheritedRatePlanDto": {
        "required": [
          "ratePlanId",
          "ownerTenantId",
          "ownerTenantName",
          "name",
          "currency",
          "isLocal"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "ownerTenantId": {
            "type": "string",
            "format": "uuid"
          },
          "ownerTenantName": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "isLocal": {
            "type": "boolean"
          }
        }
      },
      "InProgressPunchDto": {
        "required": [
          "id",
          "crewMemberId",
          "punchInAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "punchInAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "InquiryRequest": {
        "required": [
          "schoolName",
          "contactName",
          "contactEmail"
        ],
        "type": "object",
        "properties": {
          "schoolName": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string"
          },
          "contactName": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string"
          },
          "contactEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "contactPhone": {
            "maxLength": 40,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "studentCount": {
            "maximum": 10000,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "chaperoneCount": {
            "maximum": 10000,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "targetDateFrom": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "targetDateTo": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "notes": {
            "maxLength": 4000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "recaptchaToken": {
            "maxLength": 4096,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "InspectLineRequest": {
        "required": [
          "returnOrderLineId",
          "condition",
          "dispositionLocationId",
          "inspectorNote"
        ],
        "type": "object",
        "properties": {
          "returnOrderLineId": {
            "type": "string",
            "format": "uuid"
          },
          "condition": {
            "$ref": "#/components/schemas/ReturnLineCondition"
          },
          "dispositionLocationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "inspectorNote": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "InspectRequestBody": {
        "required": [
          "lines"
        ],
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InspectLineRequest"
            }
          }
        },
        "description": "Wire body for POST `/api/admin/returns/{id}/inspect`. The list\nelement type matches Task 6's\nInspectLineRequest directly so the controller doesn't\nre-shape the payload before calling\nTask IReturnOrderService.InspectAsync(Guid returnOrderId, IReadOnlyList&lt;InspectLineRequest&gt; lines, CancellationToken ct)."
      },
      "InventoryLocation": {
        "required": [
          "name",
          "address"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/PostalAddress"
          },
          "isFulfillable": {
            "type": "boolean"
          },
          "isPickup": {
            "type": "boolean"
          },
          "ranking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "isRefurb": {
            "type": "boolean"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "InviteCrewBody": {
        "required": [
          "method"
        ],
        "type": "object",
        "properties": {
          "method": {
            "$ref": "#/components/schemas/InviteMethod"
          }
        }
      },
      "InviteMemberRequest": {
        "required": [
          "email",
          "password",
          "displayName",
          "isOwner",
          "roleIds"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": [
              "null",
              "string"
            ]
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "isOwner": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "roleIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "InviteMethod": {
        "type": "integer"
      },
      "IssueMcpTokenBody": {
        "required": [
          "name",
          "scope",
          "permissions",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "IssueMcpTokenResponse": {
        "required": [
          "token",
          "plaintextToken",
          "notice"
        ],
        "type": "object",
        "properties": {
          "token": {
            "$ref": "#/components/schemas/McpTokenDto"
          },
          "plaintextToken": {
            "type": "string"
          },
          "notice": {
            "type": "string"
          }
        }
      },
      "IssueRequest": {
        "required": [
          "tagId"
        ],
        "type": "object",
        "properties": {
          "tagId": {
            "maxLength": 64,
            "minLength": 4,
            "type": "string"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "accessRights": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "initialLoadCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": [
              "null",
              "string"
            ]
          },
          "issuedFromLocation": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "IssueTenantApiKeyBody": {
        "required": [
          "userId",
          "name",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "IssueTenantApiKeyResponse": {
        "required": [
          "key",
          "plaintextKey",
          "notice"
        ],
        "type": "object",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/TenantApiKeyDto"
          },
          "plaintextKey": {
            "type": "string"
          },
          "notice": {
            "type": "string"
          }
        }
      },
      "IssueTokenBody": {
        "required": [
          "name",
          "permissions",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "IssueTokenResponse": {
        "required": [
          "token",
          "plaintextToken",
          "notice"
        ],
        "type": "object",
        "properties": {
          "token": {
            "$ref": "#/components/schemas/TokenDto"
          },
          "plaintextToken": {
            "type": "string"
          },
          "notice": {
            "type": "string"
          }
        }
      },
      "IssueVoucherBody": {
        "required": [
          "productId",
          "paxAllowance",
          "ratePlanId",
          "code",
          "expiresAt",
          "notes"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "paxAllowance": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ItineraryStopDto": {
        "required": [
          "id",
          "sortOrder",
          "durationMinutes",
          "translations"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "JoinWaitlistBody": {
        "required": [
          "slotId",
          "paxBreakdown",
          "customerInfoJson"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "customerInfoJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "JsonElement": { },
      "JsonNode": { },
      "JsonRpcRequest": {
        "type": "object",
        "properties": {
          "jsonrpc": {
            "type": "string"
          },
          "id": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonNode"
              }
            ]
          },
          "method": {
            "type": "string"
          },
          "params": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonNode"
              }
            ]
          }
        }
      },
      "KeyValuePairOfstringAndStringValues": {
        "required": [
          "key",
          "value"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": [
              "null",
              "string"
            ]
          },
          "value": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "KioskBadgeLoginBody": {
        "type": "object",
        "properties": {
          "badgeToken": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "nfcUid": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "KioskBadgeLoginResultDto": {
        "required": [
          "accessToken",
          "accessTokenExpiresAt",
          "refreshToken",
          "refreshTokenExpiresAt",
          "user"
        ],
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string"
          },
          "accessTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "refreshToken": {
            "type": "string"
          },
          "refreshTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/KioskBadgeUserDto"
          }
        }
      },
      "KioskBadgeUserDto": {
        "required": [
          "userId",
          "email",
          "tenantId",
          "tenantSlug",
          "isTenantOwner",
          "permissions",
          "isPlatformAdmin"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "tenantSlug": {
            "type": "string"
          },
          "isTenantOwner": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isPlatformAdmin": {
            "type": "boolean"
          }
        }
      },
      "KioskPunchBody": {
        "required": [
          "pin"
        ],
        "type": "object",
        "properties": {
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "pin": {
            "maxLength": 12,
            "minLength": 3,
            "type": "string"
          },
          "tips": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "KioskPunchResultDto": {
        "required": [
          "action",
          "crewMemberName",
          "punchId",
          "atUtc"
        ],
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "crewMemberName": {
            "type": "string"
          },
          "punchId": {
            "type": "string",
            "format": "uuid"
          },
          "atUtc": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "KioskRosterRow": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "LaborRulesBody": {
        "type": "object",
        "properties": {
          "dailyOtThresholdMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "weeklyOtThresholdMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "mealBreakRequiredAfterMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "mealBreakMinMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "jurisdiction": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LaborRulesDto": {
        "required": [
          "tenantId",
          "dailyOtThresholdMinutes",
          "weeklyOtThresholdMinutes",
          "mealBreakRequiredAfterMinutes",
          "mealBreakMinMinutes",
          "jurisdiction"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "dailyOtThresholdMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "weeklyOtThresholdMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "mealBreakRequiredAfterMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "mealBreakMinMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "jurisdiction": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LaborVsRevenuePoint": {
        "required": [
          "date",
          "laborCents",
          "revenueCents",
          "ratio"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "laborCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "revenueCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "ratio": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "LaborVsRevenueSeries": {
        "required": [
          "points",
          "totalLaborCents",
          "totalRevenueCents",
          "overallRatio"
        ],
        "type": "object",
        "properties": {
          "points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LaborVsRevenuePoint"
            }
          },
          "totalLaborCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalRevenueCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "overallRatio": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "LeadTimeTier": {
        "required": [
          "minHoursBefore",
          "percentDelta"
        ],
        "type": "object",
        "properties": {
          "minHoursBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "percentDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "LedgerEntryDto": {
        "required": [
          "id",
          "reservationId",
          "bookingRef",
          "bookingTotal",
          "commissionPercent",
          "commissionAmount",
          "currency",
          "status",
          "payoutId",
          "earnedAt",
          "approvedAt",
          "paidAt",
          "reversesEntryId",
          "reversalReason"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "bookingRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "bookingTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "commissionPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "commissionAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "payoutId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "earnedAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "paidAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "reversesEntryId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reversalReason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LegalDocumentRequest": {
        "required": [
          "bodyTranslations"
        ],
        "type": "object",
        "properties": {
          "titleTranslations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "bodyTranslations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "published": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "LinkedUserDto": {
        "required": [
          "userId",
          "email",
          "displayName"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LinkUserRequest": {
        "required": [
          "userId"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "LoadFactorTier": {
        "required": [
          "minPercentSold",
          "percentDelta"
        ],
        "type": "object",
        "properties": {
          "minPercentSold": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "percentDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "LoadRequest": {
        "type": "object",
        "properties": {
          "amountCents": {
            "maximum": 9223372036854776000,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "location": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "note": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LoginBody": {
        "required": [
          "email",
          "password",
          "tenantSlug"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "tenantSlug": {
            "type": "string"
          }
        }
      },
      "LogoutBody": {
        "required": [
          "refreshToken"
        ],
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string"
          }
        }
      },
      "LotTrackingMode": {
        "type": "integer"
      },
      "LowStockRow": {
        "required": [
          "variantId",
          "sku",
          "locationId",
          "locationName",
          "available",
          "reorderPoint"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string"
          },
          "locationId": {
            "type": "string",
            "format": "uuid"
          },
          "locationName": {
            "type": "string"
          },
          "available": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reorderPoint": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "emissionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "LowStockWidgetData": {
        "required": [
          "rows",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LowStockRow"
            }
          },
          "totalCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LoyaltyExpiryMode": {
        "type": "integer"
      },
      "LoyaltyTierBenefit": {
        "type": "integer"
      },
      "LoyaltyTierThresholdMode": {
        "type": "integer"
      },
      "MagicLinkBody": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        }
      },
      "ManifestPickupDto": {
        "required": [
          "assignmentId",
          "pickupLocationId",
          "name",
          "address",
          "defaultTimeOffsetMinutes"
        ],
        "type": "object",
        "properties": {
          "assignmentId": {
            "type": "string",
            "format": "uuid"
          },
          "pickupLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultTimeOffsetMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ManifestReservationDto": {
        "required": [
          "id",
          "userId",
          "paxBreakdown",
          "totalAmount",
          "currency",
          "customerInfoJson",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "customerInfoJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ManualScheduleEntryDto": {
        "required": [
          "date",
          "time",
          "durationMinutesOverride",
          "capacityOverride",
          "perTierCapsOverride"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "time": {
            "type": "string"
          },
          "durationMinutesOverride": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacityOverride": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perTierCapsOverride": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "ManualScheduleEntryRequest": {
        "required": [
          "date",
          "time",
          "durationMinutesOverride",
          "capacityOverride",
          "perTierCapsOverride"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "time": {
            "type": "string"
          },
          "durationMinutesOverride": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacityOverride": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perTierCapsOverride": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "MappingRequest": {
        "required": [
          "sourceField",
          "targetField"
        ],
        "type": "object",
        "properties": {
          "sourceField": {
            "maxLength": 120,
            "minLength": 0,
            "type": "string"
          },
          "targetField": {
            "maxLength": 120,
            "minLength": 0,
            "type": "string"
          },
          "transform": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "eventFilter": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "active": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "MarginByRatePlanRow": {
        "required": [
          "ratePlanId",
          "ratePlanName",
          "bookingCount",
          "totalPax",
          "grossRevenue",
          "costBasisPerUnit",
          "estimatedCost",
          "margin",
          "marginPercent",
          "hasCostBasis",
          "belowMarginAlert",
          "currency"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanName": {
            "type": "string"
          },
          "bookingCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "grossRevenue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "costBasisPerUnit": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "estimatedCost": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "margin": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "marginPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "hasCostBasis": {
            "type": "boolean"
          },
          "belowMarginAlert": {
            "type": "boolean"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "MarkDepositPaidBody": {
        "required": [
          "amount",
          "notes"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "MarketplaceDecideBody": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "decisionNote": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "MarkPaidRequest": {
        "type": "object",
        "properties": {
          "paymentMethod": {
            "maxLength": 16,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "paymentReference": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "MarkShippedBody": {
        "required": [
          "trackingNumber",
          "carrier"
        ],
        "type": "object",
        "properties": {
          "trackingNumber": {
            "type": "string"
          },
          "carrier": {
            "type": "string"
          }
        }
      },
      "McpScope": {
        "type": "integer"
      },
      "McpTokenDto": {
        "required": [
          "id",
          "name",
          "tokenPrefix",
          "scope",
          "permissions",
          "isActive",
          "expiresAt",
          "lastUsedAt",
          "usageCount",
          "createdAt",
          "revokedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "tokenPrefix": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "lastUsedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "usageCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "revokedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "MediaDto": {
        "required": [
          "id",
          "storageKey",
          "kind",
          "sortOrder",
          "isPrimary",
          "contentType",
          "sizeBytes",
          "width",
          "height",
          "translations"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "storageKey": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/ProductMediaKind"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isPrimary": {
            "type": "boolean"
          },
          "contentType": {
            "type": [
              "null",
              "string"
            ]
          },
          "sizeBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "MemberDto": {
        "required": [
          "membershipId",
          "userId",
          "email",
          "displayName",
          "isOwner",
          "roles"
        ],
        "type": "object",
        "properties": {
          "membershipId": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "isOwner": {
            "type": "boolean"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MemberRoleDto"
            }
          }
        }
      },
      "MemberRoleDto": {
        "required": [
          "roleId",
          "name"
        ],
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "MembershipEnrollmentRequest": {
        "required": [
          "memberEmail"
        ],
        "type": "object",
        "properties": {
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "memberEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "memberName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "externalCardId": {
            "maxLength": 128,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "validFrom": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "acquisitionSource": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "MembershipPlanRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "type": "string"
          },
          "slug": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "maxLength": 2000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "annualPrice": {
            "maximum": 100000,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": [
              "null",
              "string"
            ]
          },
          "includedGuestCount": {
            "maximum": 20,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "blackoutDates": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "giftEligible": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "rank": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "active": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "MenuItemRequest": {
        "type": "object",
        "properties": {
          "parentItemId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "labelTranslations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "targetType": {
            "maxLength": 16,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "targetRef": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "openInNewTab": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "MenuRequest": {
        "required": [
          "code",
          "label"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 32,
            "minLength": 0,
            "type": "string"
          },
          "label": {
            "maxLength": 120,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "MessageDto": {
        "required": [
          "id",
          "role",
          "content",
          "sequence",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "role": {
            "type": "string"
          },
          "content": {
            "$ref": "#/components/schemas/JsonNode"
          },
          "sequence": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "MfaChallengeStartResponse": {
        "required": [
          "session",
          "sessionExpiresAt",
          "customerName",
          "customerEmail",
          "challengeToken",
          "challengeExpiresAt",
          "mfaRequired"
        ],
        "type": "object",
        "properties": {
          "session": {
            "type": [
              "null",
              "string"
            ]
          },
          "sessionExpiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerEmail": {
            "type": "string"
          },
          "challengeToken": {
            "type": [
              "null",
              "string"
            ]
          },
          "challengeExpiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "mfaRequired": {
            "type": "boolean"
          }
        }
      },
      "MfaChallengeVerifyBody": {
        "required": [
          "challengeToken",
          "code"
        ],
        "type": "object",
        "properties": {
          "challengeToken": {
            "maxLength": 512,
            "minLength": 0,
            "type": "string"
          },
          "code": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "MfaCodeBody": {
        "required": [
          "totpCode"
        ],
        "type": "object",
        "properties": {
          "totpCode": {
            "maxLength": 16,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "MfaDisableBody": {
        "required": [
          "currentPassword"
        ],
        "type": "object",
        "properties": {
          "currentPassword": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "MfaEnrollStartResponse": {
        "required": [
          "otpAuthUri",
          "recoveryCodes"
        ],
        "type": "object",
        "properties": {
          "otpAuthUri": {
            "type": "string"
          },
          "recoveryCodes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ModifierImpactRow": {
        "required": [
          "bucket",
          "count",
          "totalDelta",
          "currency"
        ],
        "type": "object",
        "properties": {
          "bucket": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "ModuleDto": {
        "required": [
          "key",
          "label",
          "summary",
          "category",
          "source",
          "canToggle",
          "requiresPlatformAdmin",
          "enabled"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "canToggle": {
            "type": "boolean"
          },
          "requiresPlatformAdmin": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "MyHoursSummaryDto": {
        "required": [
          "todayMinutes",
          "last7DaysMinutes",
          "closedPunchesLast7Days",
          "hourlyRate",
          "currency",
          "todayPayProjection",
          "last7DaysPayProjection"
        ],
        "type": "object",
        "properties": {
          "todayMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "last7DaysMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "closedPunchesLast7Days": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hourlyRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "todayPayProjection": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "last7DaysPayProjection": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "MyPunchStateDto": {
        "required": [
          "crewMemberId",
          "name",
          "openPunchId",
          "openPunchInAt",
          "onBreakSince",
          "breakMinutesSoFar",
          "todayMinutesWorked",
          "shiftId"
        ],
        "type": "object",
        "properties": {
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "openPunchId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "openPunchInAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "onBreakSince": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "breakMinutesSoFar": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "todayMinutesWorked": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "shiftId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "MyShiftDto": {
        "required": [
          "id",
          "startsAt",
          "endsAt",
          "status",
          "notes",
          "productId",
          "slotId",
          "publishedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "publishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "MyTimeOffDto": {
        "required": [
          "id",
          "startsAt",
          "endsAt",
          "kind",
          "status",
          "reason",
          "decidedByUserId",
          "decidedAt",
          "decisionNote",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "kind": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "decidedByUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "decidedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "decisionNote": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "NewsletterSubscribeRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "source": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "NewsletterUnsubscribeRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "ObservationDto": {
        "required": [
          "id",
          "channelId",
          "productId",
          "ratePlanId",
          "paxTierId",
          "slotStartsAt",
          "observedAt",
          "amount",
          "currency",
          "source"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "observedAt": {
            "type": "string",
            "format": "date-time"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "source": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ObservationRequest": {
        "required": [
          "channelId",
          "productId",
          "ratePlanId",
          "paxTierId",
          "slotStartsAt",
          "amount",
          "currency",
          "source"
        ],
        "type": "object",
        "properties": {
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "source": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ObservationResponse": {
        "required": [
          "id",
          "violationId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "violationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "OccupancyDay": {
        "required": [
          "date",
          "slots",
          "totalCapacity",
          "taken",
          "utilisation"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "slots": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "taken": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "utilisation": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "OccupancyReport": {
        "required": [
          "from",
          "to",
          "slots",
          "totalCapacity",
          "taken",
          "utilisation",
          "byDay"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "slots": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "taken": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "utilisation": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "byDay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OccupancyDay"
            }
          }
        }
      },
      "OpenSessionBody": {
        "required": [
          "openingFloatMinor",
          "openingNotes"
        ],
        "type": "object",
        "properties": {
          "openingFloatMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "openingNotes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "OpenShiftDto": {
        "required": [
          "id",
          "startsAt",
          "endsAt",
          "status",
          "notes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "OperatorAssetPerformanceDto": {
        "required": [
          "topPerformers",
          "deadInventory"
        ],
        "type": "object",
        "properties": {
          "topPerformers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetPerformanceDto"
            }
          },
          "deadInventory": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetPerformanceDto"
            }
          }
        }
      },
      "OperatorRescheduleBody": {
        "required": [
          "newSlotId",
          "paymentMethodId"
        ],
        "type": "object",
        "properties": {
          "newSlotId": {
            "type": "string",
            "format": "uuid"
          },
          "paymentMethodId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "OperatorRescheduleResultDto": {
        "required": [
          "historyId",
          "oldSlotId",
          "newSlotId",
          "delta",
          "currency",
          "paymentId",
          "refundId",
          "booking"
        ],
        "type": "object",
        "properties": {
          "historyId": {
            "type": "string",
            "format": "uuid"
          },
          "oldSlotId": {
            "type": "string",
            "format": "uuid"
          },
          "newSlotId": {
            "type": "string",
            "format": "uuid"
          },
          "delta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "paymentId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "refundId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "booking": {
            "$ref": "#/components/schemas/BookingDto"
          }
        }
      },
      "OrderDetail": {
        "required": [
          "id",
          "orderRef",
          "customerId",
          "customerEmail",
          "customerName",
          "currency",
          "status",
          "placedAt",
          "createdAt",
          "subtotal",
          "discountTotal",
          "shippingTotal",
          "taxTotal",
          "gross",
          "billingAddress",
          "shippingAddress",
          "pricingSnapshotJson",
          "lines",
          "shipments",
          "events",
          "version"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "orderRef": {
            "type": "string"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "customerEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/OrderStatus"
          },
          "placedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "subtotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "discountTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "shippingTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "taxTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "gross": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "billingAddress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PostalAddress"
              }
            ]
          },
          "shippingAddress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PostalAddress"
              }
            ]
          },
          "pricingSnapshotJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderLineDetail"
            }
          },
          "shipments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderShipmentDetail"
            }
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderEventDetail"
            }
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          }
        }
      },
      "OrderEventDetail": {
        "required": [
          "id",
          "kind",
          "occurredAt",
          "actorUserId",
          "payloadJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "actorUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "payloadJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "OrderFraudStatus": {
        "type": "integer"
      },
      "OrderFulfillmentStatus": {
        "type": "integer"
      },
      "OrderKindFilter": {
        "type": "integer"
      },
      "OrderLineDetail": {
        "required": [
          "id",
          "kind",
          "position",
          "quantity",
          "unitPriceSnapshot",
          "lineSubtotal",
          "lineDiscount",
          "lineTax",
          "lineTotal",
          "requiresShippingSnapshot",
          "fulfillmentStatus",
          "reservationId",
          "productId",
          "slotStartsAt",
          "paxSummary",
          "variantId",
          "sku",
          "title",
          "weightGrams",
          "optionsJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "unitPriceSnapshot": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "lineSubtotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "lineDiscount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "lineTax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "lineTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "requiresShippingSnapshot": {
            "type": "boolean"
          },
          "fulfillmentStatus": {
            "$ref": "#/components/schemas/OrderFulfillmentStatus"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "paxSummary": {
            "type": [
              "null",
              "string"
            ]
          },
          "variantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sku": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "weightGrams": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "optionsJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "OrderListItem": {
        "required": [
          "id",
          "orderRef",
          "customerId",
          "customerEmail",
          "currency",
          "status",
          "placedAt",
          "gross",
          "lineCount",
          "hasBookingLines",
          "hasMerchandiseLines",
          "aggregateFulfillmentStatus"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "orderRef": {
            "type": "string"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "customerEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/OrderStatus"
          },
          "placedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "gross": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "lineCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hasBookingLines": {
            "type": "boolean"
          },
          "hasMerchandiseLines": {
            "type": "boolean"
          },
          "aggregateFulfillmentStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OrderFulfillmentStatus"
              }
            ]
          }
        }
      },
      "OrderListResult": {
        "required": [
          "items",
          "total",
          "page",
          "pageSize"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderListItem"
            }
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "OrderRiskLevel": {
        "type": "integer"
      },
      "OrderShipment": {
        "required": [
          "orderId"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "carrier": {
            "type": [
              "null",
              "string"
            ]
          },
          "service": {
            "type": [
              "null",
              "string"
            ]
          },
          "trackingNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "labelUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/OrderShipmentStatus"
          },
          "shippedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "deliveredAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "allocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderShipmentLine"
            }
          },
          "providerShipmentId": {
            "type": [
              "null",
              "string"
            ]
          },
          "providerRateId": {
            "type": [
              "null",
              "string"
            ]
          },
          "labelCostCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "trackingUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "OrderShipmentAllocationDetail": {
        "required": [
          "id",
          "orderLineItemId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "orderLineItemId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "OrderShipmentDetail": {
        "required": [
          "id",
          "carrier",
          "service",
          "trackingNumber",
          "labelUrl",
          "status",
          "shippedAt",
          "deliveredAt",
          "allocations"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "carrier": {
            "type": [
              "null",
              "string"
            ]
          },
          "service": {
            "type": [
              "null",
              "string"
            ]
          },
          "trackingNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "labelUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/OrderShipmentStatus"
          },
          "shippedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "deliveredAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "allocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderShipmentAllocationDetail"
            }
          }
        }
      },
      "OrderShipmentLine": {
        "required": [
          "shipmentId",
          "orderLineItemId"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "shipmentId": {
            "type": "string",
            "format": "uuid"
          },
          "orderLineItemId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "OrderShipmentStatus": {
        "type": "integer"
      },
      "OrderStatus": {
        "type": "integer"
      },
      "PackageAvailabilityCombo": {
        "required": [
          "components"
        ],
        "type": "object",
        "properties": {
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackageComponentSlotPick"
            }
          }
        }
      },
      "PackageCancelBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PackageCancellationPolicy": {
        "type": "integer"
      },
      "PackageComponentDto": {
        "required": [
          "childProductId",
          "childRatePlanId",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "childProductId": {
            "type": "string",
            "format": "uuid"
          },
          "childRatePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PackageComponentRequest": {
        "required": [
          "childProductId",
          "childRatePlanId",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "childProductId": {
            "type": "string",
            "format": "uuid"
          },
          "childRatePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PackageComponentSlotPick": {
        "required": [
          "childProductId",
          "slotId",
          "startsAt"
        ],
        "type": "object",
        "properties": {
          "childProductId": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PackageDefinitionDto": {
        "required": [
          "id",
          "packageProductId",
          "bundlePrice",
          "currency",
          "cancellationPolicy",
          "components"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "packageProductId": {
            "type": "string",
            "format": "uuid"
          },
          "bundlePrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "cancellationPolicy": {
            "$ref": "#/components/schemas/PackageCancellationPolicy"
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackageComponentDto"
            }
          }
        }
      },
      "PackageDefinitionRequest": {
        "required": [
          "packageProductId",
          "bundlePrice",
          "currency",
          "cancellationPolicy",
          "components"
        ],
        "type": "object",
        "properties": {
          "packageProductId": {
            "type": "string",
            "format": "uuid"
          },
          "bundlePrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "cancellationPolicy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PackageCancellationPolicy"
              }
            ]
          },
          "components": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PackageComponentRequest"
            }
          }
        }
      },
      "PackageHoldBody": {
        "required": [
          "packageProductId",
          "components",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "packageProductId": {
            "type": "string",
            "format": "uuid"
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackageHoldComponentBody"
            }
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PackageHoldComponentBody": {
        "required": [
          "childProductId",
          "slotId",
          "paxBreakdown"
        ],
        "type": "object",
        "properties": {
          "childProductId": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "PackageHoldResponse": {
        "required": [
          "parentHoldId",
          "childHoldIds",
          "bookingLinkGroupId"
        ],
        "type": "object",
        "properties": {
          "parentHoldId": {
            "type": "string",
            "format": "uuid"
          },
          "childHoldIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "bookingLinkGroupId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "PagePerformanceResponse": {
        "required": [
          "from",
          "to",
          "rows"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PageRowDto"
            }
          }
        }
      },
      "PageRequest": {
        "type": "object",
        "properties": {
          "slug": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "template": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "blocksJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "parentPageId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "clearParent": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isHomepage": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "pageType": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoTitle": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoDescription": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoOgImageUrl": {
            "maxLength": 1024,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoCanonicalUrl": {
            "maxLength": 1024,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "seoRobots": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "productSlug": {
            "maxLength": 255,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PageRowDto": {
        "required": [
          "pageSlug",
          "views",
          "uniqueVisitors",
          "bounceRate"
        ],
        "type": "object",
        "properties": {
          "pageSlug": {
            "type": "string"
          },
          "views": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "uniqueVisitors": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bounceRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "ParityPolicyDto": {
        "required": [
          "id",
          "name",
          "description",
          "priority",
          "isActive",
          "channelIds",
          "productIds",
          "maxOwnSiteUndercutPercent",
          "maxOwnSiteOvercutPercent",
          "minDeltaForFlag"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "channelIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "productIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "maxOwnSiteUndercutPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "maxOwnSiteOvercutPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "minDeltaForFlag": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "ParityViolationStatus": {
        "type": "integer"
      },
      "PasswordResetCompleteBody": {
        "required": [
          "token",
          "newPassword"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "newPassword": {
            "type": "string"
          }
        }
      },
      "PasswordResetCompleteResponse": {
        "required": [
          "auth",
          "tenantSelection"
        ],
        "type": "object",
        "properties": {
          "auth": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AuthResponse"
              }
            ]
          },
          "tenantSelection": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TenantSelectionDto"
              }
            ]
          }
        }
      },
      "PasswordResetRequestBody": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        }
      },
      "PatchWaiverTemplateRequest": {
        "required": [
          "name",
          "bodyMarkdown",
          "requiresMinorGuardian",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "bodyMarkdown": {
            "type": [
              "null",
              "string"
            ]
          },
          "requiresMinorGuardian": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "PaxTierConfigDto": {
        "required": [
          "paxTierId",
          "minPerBooking",
          "maxPerBooking",
          "isRequired"
        ],
        "type": "object",
        "properties": {
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "minPerBooking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxPerBooking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isRequired": {
            "type": "boolean"
          }
        }
      },
      "PaxTierConfigRequest": {
        "required": [
          "paxTierId",
          "minPerBooking",
          "maxPerBooking",
          "isRequired"
        ],
        "type": "object",
        "properties": {
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "minPerBooking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxPerBooking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isRequired": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "PaxTierDto": {
        "required": [
          "id",
          "name",
          "minAge",
          "maxAge",
          "sortOrder",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "minAge": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxAge": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "PaxTierRequest": {
        "required": [
          "name",
          "minAge",
          "maxAge",
          "sortOrder",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "minAge": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxAge": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "PaymentAccountDto": {
        "required": [
          "id",
          "provider",
          "accountRef",
          "status",
          "hasWebhookSecret",
          "hasApiKey",
          "accountMetadataJson",
          "priority",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "provider": {
            "$ref": "#/components/schemas/PaymentProviderKind"
          },
          "accountRef": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/PaymentAccountStatus"
          },
          "hasWebhookSecret": {
            "type": "boolean"
          },
          "hasApiKey": {
            "type": "boolean"
          },
          "accountMetadataJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int16"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PaymentAccountStatus": {
        "type": "integer"
      },
      "PaymentDto": {
        "required": [
          "id",
          "reservationId",
          "voucherId",
          "providerKind",
          "providerRef",
          "amount",
          "currency",
          "status",
          "method",
          "notes",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "voucherId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "providerKind": {
            "$ref": "#/components/schemas/PaymentProviderKind"
          },
          "providerRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/PaymentStatus"
          },
          "method": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PaymentProviderKind": {
        "type": "integer"
      },
      "PaymentStatus": {
        "type": "integer"
      },
      "PayoutDto": {
        "required": [
          "id",
          "periodStart",
          "periodEnd",
          "amount",
          "currency",
          "status",
          "stripeTransferId",
          "manualReference",
          "failureReason"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "stripeTransferId": {
            "type": [
              "null",
              "string"
            ]
          },
          "manualReference": {
            "type": [
              "null",
              "string"
            ]
          },
          "failureReason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PayoutRunResultDto": {
        "required": [
          "payoutId",
          "outcome"
        ],
        "type": "object",
        "properties": {
          "payoutId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "outcome": {
            "type": "string"
          }
        }
      },
      "PayoutSchedule": {
        "type": "integer"
      },
      "PendingApprovableDto": {
        "required": [
          "count",
          "windowDays"
        ],
        "type": "object",
        "properties": {
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "windowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PendingFulfillmentRow": {
        "required": [
          "orderId",
          "orderRef",
          "placedAt",
          "unfulfilledLineCount",
          "customerName"
        ],
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "orderRef": {
            "type": "string"
          },
          "placedAt": {
            "type": "string",
            "format": "date-time"
          },
          "unfulfilledLineCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "customerName": {
            "type": "string"
          }
        }
      },
      "PendingFulfillmentsWidgetData": {
        "required": [
          "rows",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PendingFulfillmentRow"
            }
          },
          "totalCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PerSlotLaborCostDto": {
        "required": [
          "slotId",
          "laborCents",
          "minutesWorked",
          "crewMemberCount"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "laborCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "minutesWorked": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "crewMemberCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PickupAssignmentDto": {
        "required": [
          "id",
          "pickupLocationId",
          "locationName",
          "defaultTimeOffsetMinutes",
          "surcharge",
          "surchargeCurrency",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "pickupLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "locationName": {
            "type": "string"
          },
          "defaultTimeOffsetMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "surcharge": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "surchargeCurrency": {
            "type": [
              "null",
              "string"
            ]
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PickupAssignmentRequest": {
        "required": [
          "pickupLocationId",
          "defaultTimeOffsetMinutes",
          "surcharge",
          "surchargeCurrency"
        ],
        "type": "object",
        "properties": {
          "pickupLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "defaultTimeOffsetMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "surcharge": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "surchargeCurrency": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PickupBody": {
        "required": [
          "scannedAt",
          "conditionNotes"
        ],
        "type": "object",
        "properties": {
          "scannedAt": {
            "type": "string",
            "format": "date-time"
          },
          "conditionNotes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PickupLocationDto": {
        "required": [
          "id",
          "name",
          "address",
          "latitude",
          "longitude",
          "notes",
          "isActive",
          "translations"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "latitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "longitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": "boolean"
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "PickupLocationRequest": {
        "required": [
          "name",
          "address",
          "latitude",
          "longitude",
          "notes",
          "isActive",
          "translations"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "latitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "longitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "PlaybookApplyResult": {
        "required": [
          "modifiersCreated",
          "promosCreated",
          "createdModifierIds",
          "createdPromoIds"
        ],
        "type": "object",
        "properties": {
          "modifiersCreated": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "promosCreated": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "createdModifierIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "createdPromoIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "PlaybookDto": {
        "required": [
          "id",
          "name",
          "description",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": "boolean"
          },
          "entries": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PlaybookEntryDto"
            }
          }
        }
      },
      "PlaybookEntryDto": {
        "required": [
          "id",
          "playbookId",
          "kind",
          "name",
          "sortOrder",
          "configJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "playbookId": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "$ref": "#/components/schemas/PlaybookEntryKind"
          },
          "name": {
            "type": "string"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "configJson": {
            "type": "string"
          }
        }
      },
      "PlaybookEntryKind": {
        "type": "integer"
      },
      "PlaybookRequest": {
        "required": [
          "name",
          "description",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "PolicyRequest": {
        "required": [
          "name",
          "description",
          "priority",
          "channelIds",
          "productIds",
          "maxOwnSiteUndercutPercent",
          "maxOwnSiteOvercutPercent",
          "minDeltaForFlag",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "channelIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "productIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "maxOwnSiteUndercutPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "maxOwnSiteOvercutPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "minDeltaForFlag": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "PortalAddOnPurchaseBody": {
        "type": "object",
        "properties": {
          "addOnIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "paymentMethodId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PortalAffiliateTaxFormDto": {
        "required": [
          "id",
          "formKind",
          "status",
          "effectiveYear",
          "submittedAt",
          "verifiedAt",
          "expiresAt",
          "rejectionReason",
          "stripeReportingTaxFormUrl"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "formKind": {
            "$ref": "#/components/schemas/AffiliateTaxFormKind"
          },
          "status": {
            "$ref": "#/components/schemas/AffiliateTaxFormStatus"
          },
          "effectiveYear": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "submittedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "verifiedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "rejectionReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "stripeReportingTaxFormUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PortalAssetDto": {
        "required": [
          "id",
          "title",
          "description",
          "kind",
          "mediaId",
          "body",
          "renderedLink",
          "rawLinkTemplate",
          "publishedAt",
          "variants"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "kind": {
            "type": "string"
          },
          "mediaId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "body": {
            "type": [
              "null",
              "string"
            ]
          },
          "renderedLink": {
            "type": [
              "null",
              "string"
            ]
          },
          "rawLinkTemplate": {
            "type": [
              "null",
              "string"
            ]
          },
          "publishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PortalAssetVariantDto"
            }
          }
        }
      },
      "PortalAssetVariantDto": {
        "required": [
          "id",
          "mediaId",
          "width",
          "height",
          "label"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "mediaId": {
            "type": "string",
            "format": "uuid"
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "label": {
            "type": "string"
          }
        }
      },
      "PortalBookingDto": {
        "required": [
          "id",
          "bookingRef",
          "productName",
          "productSlug",
          "startsAt",
          "durationMinutes",
          "totalAmount",
          "currency",
          "status",
          "entryTicket"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "bookingRef": {
            "type": "string"
          },
          "productName": {
            "type": "string"
          },
          "productSlug": {
            "type": "string"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "entryTicket": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EntryTicketDto"
              }
            ]
          }
        }
      },
      "PortalEmailDetailDto": {
        "required": [
          "id",
          "kind",
          "subject",
          "sentAt",
          "status",
          "bodyHtml",
          "bodyText"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          },
          "bodyHtml": {
            "type": [
              "null",
              "string"
            ]
          },
          "bodyText": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PortalEmailDto": {
        "required": [
          "id",
          "kind",
          "subject",
          "sentAt",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "PortalEmailListDto": {
        "required": [
          "items",
          "total",
          "page",
          "pageSize"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PortalEmailDto"
            }
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PortalOrderLineRow": {
        "required": [
          "lineId",
          "lineKind",
          "quantity",
          "lineTotal",
          "productName",
          "variantSku",
          "slotStartsAt"
        ],
        "type": "object",
        "properties": {
          "lineId": {
            "type": "string",
            "format": "uuid"
          },
          "lineKind": {
            "type": "string"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lineTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "productName": {
            "type": [
              "null",
              "string"
            ]
          },
          "variantSku": {
            "type": [
              "null",
              "string"
            ]
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "PortalOrderRow": {
        "required": [
          "orderId",
          "orderRef",
          "status",
          "placedAt",
          "gross",
          "currency",
          "kind",
          "lines"
        ],
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "orderRef": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/OrderStatus"
          },
          "placedAt": {
            "type": "string",
            "format": "date-time"
          },
          "gross": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "currency": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PortalOrderLineRow"
            }
          }
        }
      },
      "PortalPasswordLoginBody": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "password": {
            "maxLength": 256,
            "minLength": 8,
            "type": "string"
          }
        }
      },
      "PortalPasswordResetCompleteBody": {
        "required": [
          "token",
          "newPassword"
        ],
        "type": "object",
        "properties": {
          "token": {
            "maxLength": 512,
            "minLength": 0,
            "type": "string"
          },
          "newPassword": {
            "maxLength": 256,
            "minLength": 8,
            "type": "string"
          }
        }
      },
      "PortalPasswordResetRequestBody": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "PortalPayoutDto": {
        "required": [
          "id",
          "periodStart",
          "periodEnd",
          "amount",
          "currency",
          "status",
          "stripeTransferId",
          "manualReference"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "stripeTransferId": {
            "type": [
              "null",
              "string"
            ]
          },
          "manualReference": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PortalPrivacyRequestBody": {
        "required": [
          "kind"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "maxLength": 32,
            "minLength": 0,
            "type": "string"
          },
          "note": {
            "maxLength": 2000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PortalProfileDto": {
        "required": [
          "customerEmail",
          "customerName",
          "customerPhone"
        ],
        "type": "object",
        "properties": {
          "customerEmail": {
            "type": "string"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerPhone": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PortalProfileUpdateBody": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "marketingOptIn": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "smsOptIn": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "PortalPromoteBody": {
        "required": [
          "password"
        ],
        "type": "object",
        "properties": {
          "password": {
            "maxLength": 256,
            "minLength": 8,
            "type": [
              "null",
              "string"
            ]
          },
          "displayName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "acceptTerms": {
            "type": "boolean"
          }
        }
      },
      "PortalPromoteResponseDto": {
        "required": [
          "accessToken",
          "accessTokenExpiresAt",
          "refreshToken",
          "refreshTokenExpiresAt",
          "userId",
          "email",
          "tenantSlug"
        ],
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string"
          },
          "accessTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "refreshToken": {
            "type": "string"
          },
          "refreshTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "tenantSlug": {
            "type": "string"
          }
        }
      },
      "PortalRegisterBody": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "password": {
            "maxLength": 256,
            "minLength": 8,
            "type": "string"
          },
          "displayName": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PortalRescheduleBody": {
        "type": "object",
        "properties": {
          "newSlotId": {
            "type": "string",
            "format": "uuid"
          },
          "paymentMethodId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PortalSessionDto": {
        "required": [
          "session",
          "expiresAt",
          "customerName",
          "customerEmail"
        ],
        "type": "object",
        "properties": {
          "session": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerEmail": {
            "type": "string"
          }
        }
      },
      "PortalSetPasswordBody": {
        "required": [
          "newPassword"
        ],
        "type": "object",
        "properties": {
          "currentPassword": {
            "maxLength": 256,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "newPassword": {
            "maxLength": 256,
            "minLength": 8,
            "type": "string"
          }
        }
      },
      "PosBatchRequest": {
        "required": [
          "source",
          "externalBatchId",
          "businessDate"
        ],
        "type": "object",
        "properties": {
          "source": {
            "maxLength": 32,
            "minLength": 0,
            "type": "string"
          },
          "externalBatchId": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string"
          },
          "businessDate": {
            "type": "string",
            "format": "date-time"
          },
          "ticketingRevenueCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "foodAndBeverageRevenueCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "retailRevenueCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "donationsRevenueCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "otherRevenueCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "taxesCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "discountsCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "refundsCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "transactionCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "rawPayload": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonElement"
              }
            ]
          }
        }
      },
      "PosPaymentMethod": {
        "type": "integer"
      },
      "PosPaymentResponse": {
        "required": [
          "method",
          "paymentId",
          "clientSecret",
          "publishableKey",
          "connectedAccountId",
          "paymentIntentId",
          "requiresReaderCollect"
        ],
        "type": "object",
        "properties": {
          "method": {
            "$ref": "#/components/schemas/PosPaymentMethod"
          },
          "paymentId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "clientSecret": {
            "type": [
              "null",
              "string"
            ]
          },
          "publishableKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "connectedAccountId": {
            "type": [
              "null",
              "string"
            ]
          },
          "paymentIntentId": {
            "type": [
              "null",
              "string"
            ]
          },
          "requiresReaderCollect": {
            "type": "boolean"
          }
        }
      },
      "PosRefundResponse": {
        "required": [
          "id",
          "paymentId",
          "amount",
          "computedAmount",
          "currency",
          "reason",
          "status",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "paymentId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "computedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/RefundStatus"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PosSaleKind": {
        "type": "integer"
      },
      "PosSaleLookupLineResponse": {
        "required": [
          "orderLineItemId",
          "sku",
          "title",
          "purchasedQty",
          "alreadyReturnedQty",
          "remainingReturnableQty",
          "perUnitRefundMinor"
        ],
        "type": "object",
        "properties": {
          "orderLineItemId": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "purchasedQty": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "alreadyReturnedQty": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "remainingReturnableQty": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perUnitRefundMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          }
        }
      },
      "PosSaleLookupResponse": {
        "required": [
          "saleId",
          "orderId",
          "orderRef",
          "receiptNumber",
          "posSessionId",
          "placedAt",
          "currency",
          "grossMinor",
          "status",
          "kind",
          "lines"
        ],
        "type": "object",
        "properties": {
          "saleId": {
            "type": "string",
            "format": "uuid"
          },
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "orderRef": {
            "type": "string"
          },
          "receiptNumber": {
            "type": "string"
          },
          "posSessionId": {
            "type": "string",
            "format": "uuid"
          },
          "placedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "grossMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "status": {
            "$ref": "#/components/schemas/PosSaleStatus"
          },
          "kind": {
            "$ref": "#/components/schemas/PosSaleKind"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PosSaleLookupLineResponse"
            }
          }
        }
      },
      "PosSaleResponse": {
        "required": [
          "reservationId",
          "bookingRef",
          "totalAmount",
          "currency",
          "payment"
        ],
        "type": "object",
        "properties": {
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "bookingRef": {
            "type": "string"
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "payment": {
            "$ref": "#/components/schemas/PosPaymentResponse"
          }
        }
      },
      "PosSaleSettleResponse": {
        "required": [
          "id",
          "posSessionId",
          "orderId",
          "orderRef",
          "operatorUserId",
          "receiptNumber",
          "status",
          "kind",
          "originalSaleId",
          "currency",
          "grossMinor",
          "printedReceiptAt",
          "emailedReceiptAt",
          "tenders"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "posSessionId": {
            "type": "string",
            "format": "uuid"
          },
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "orderRef": {
            "type": "string"
          },
          "operatorUserId": {
            "type": "string",
            "format": "uuid"
          },
          "receiptNumber": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/PosSaleStatus"
          },
          "kind": {
            "$ref": "#/components/schemas/PosSaleKind"
          },
          "originalSaleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "currency": {
            "type": "string"
          },
          "grossMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "printedReceiptAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "emailedReceiptAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "tenders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PosTenderLineResponse"
            }
          }
        }
      },
      "PosSaleStatus": {
        "type": "integer"
      },
      "PosSyncResponse": {
        "required": [
          "succeeded",
          "paymentId",
          "reservationId",
          "status",
          "failureReason"
        ],
        "type": "object",
        "properties": {
          "succeeded": {
            "type": "boolean"
          },
          "paymentId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "failureReason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PostalAddress": {
        "required": [
          "countryIso2"
        ],
        "type": "object",
        "properties": {
          "line1": {
            "type": [
              "null",
              "string"
            ]
          },
          "line2": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": [
              "null",
              "string"
            ]
          },
          "region": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "countryIso2": {
            "type": "string"
          }
        }
      },
      "PostbackDto": {
        "required": [
          "id",
          "reservationId",
          "affiliateId",
          "url",
          "status",
          "attemptCount",
          "lastAttemptAt",
          "lastStatusCode",
          "lastError",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "affiliateId": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "attemptCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lastAttemptAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "lastStatusCode": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lastError": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PosTenderKind": {
        "type": "integer"
      },
      "PosTenderLineResponse": {
        "required": [
          "id",
          "position",
          "kind",
          "amountMinor",
          "providerRef",
          "cashTenderedMinor",
          "changeDueMinor",
          "compReason",
          "authorizingUserId",
          "loyaltyPointsUsed",
          "loyaltyAccountId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "kind": {
            "$ref": "#/components/schemas/PosTenderKind"
          },
          "amountMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "providerRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "cashTenderedMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "changeDueMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "compReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorizingUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "loyaltyPointsUsed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "loyaltyAccountId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "PreviewRatesRequest": {
        "required": [
          "orderLineItemIds"
        ],
        "type": "object",
        "properties": {
          "orderLineItemIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "PreviewRequest": {
        "required": [
          "amount"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "PriceChangeDetailDto": {
        "required": [
          "id",
          "targetEntityType",
          "targetEntityId",
          "operation",
          "status",
          "proposedJson",
          "notes",
          "submittedAt",
          "submittedById",
          "reviewedAt",
          "reviewedById",
          "appliedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "targetEntityType": {
            "type": "string"
          },
          "targetEntityId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "operation": {
            "$ref": "#/components/schemas/PriceChangeOperation"
          },
          "status": {
            "$ref": "#/components/schemas/PriceChangeStatus"
          },
          "proposedJson": {
            "type": "string"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time"
          },
          "submittedById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reviewedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "reviewedById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "appliedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "PriceChangeDto": {
        "required": [
          "id",
          "targetEntityType",
          "targetEntityId",
          "operation",
          "status",
          "submittedAt",
          "submittedById",
          "reviewedAt",
          "reviewedById",
          "appliedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "targetEntityType": {
            "type": "string"
          },
          "targetEntityId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "operation": {
            "$ref": "#/components/schemas/PriceChangeOperation"
          },
          "status": {
            "$ref": "#/components/schemas/PriceChangeStatus"
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time"
          },
          "submittedById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reviewedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "reviewedById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "appliedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "PriceChangeOperation": {
        "type": "integer"
      },
      "PriceChangeStatus": {
        "type": "integer"
      },
      "PriceExperimentStatus": {
        "type": "integer"
      },
      "PriceListDto": {
        "required": [
          "id",
          "paxTierId",
          "startDate",
          "endDate",
          "amount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "PriceListExportResponse": {
        "required": [
          "count",
          "nextCursor",
          "rows"
        ],
        "type": "object",
        "properties": {
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "nextCursor": {
            "type": [
              "null",
              "string"
            ]
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceListExportRow"
            }
          }
        },
        "description": "Cursor-paginated response. string? PriceListExportResponse.NextCursor is non-null iff there\nis at least one more row beyond this page; null signals the caller can\nstop polling."
      },
      "PriceListExportRow": {
        "required": [
          "id",
          "ratePlanId",
          "ratePlanName",
          "productId",
          "paxTierId",
          "paxTierName",
          "startDate",
          "endDate",
          "amount",
          "currency",
          "version",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanName": {
            "type": "string"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierName": {
            "type": "string"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "One row in the export. Carries the joined `RatePlanName` /\n`ProductId` / `PaxTierName` so a streaming client doesn't have\nto issue a second round of lookups to label the rows."
      },
      "PriceListRequest": {
        "required": [
          "paxTierId",
          "startDate",
          "endDate",
          "amount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PricingAuditChangeKind": {
        "type": "integer"
      },
      "PricingAuditPage": {
        "required": [
          "items",
          "page",
          "pageSize",
          "total"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PricingAuditRowDto"
            }
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PricingAuditRowDto": {
        "required": [
          "id",
          "entityType",
          "entityId",
          "action",
          "userId",
          "context",
          "createdAt",
          "changesJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "format": "uuid"
          },
          "action": {
            "$ref": "#/components/schemas/AuditAction"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "context": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "changesJson": {
            "type": "string"
          }
        }
      },
      "PricingModifierDto": {
        "required": [
          "id",
          "tenantId",
          "name",
          "kind",
          "percent",
          "startDate",
          "endDate",
          "hoursBeforeThreshold",
          "paxThreshold",
          "applyOrder",
          "isActive",
          "timeOfDayStartLocal",
          "timeOfDayEndLocal",
          "leadTimeCurve",
          "loadFactorCurve",
          "channelId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/PricingModifierKind"
          },
          "percent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "hoursBeforeThreshold": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "paxThreshold": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "applyOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "timeOfDayStartLocal": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          },
          "timeOfDayEndLocal": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          },
          "leadTimeCurve": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeadTimeTier"
            }
          },
          "loadFactorCurve": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/LoadFactorTier"
            }
          },
          "channelId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "PricingModifierKind": {
        "type": "integer"
      },
      "PricingModifierRequest": {
        "required": [
          "name",
          "kind",
          "percent",
          "startDate",
          "endDate",
          "hoursBeforeThreshold",
          "paxThreshold",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/PricingModifierKind"
          },
          "percent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "hoursBeforeThreshold": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "paxThreshold": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "stacking": {
            "type": "string",
            "default": "Additive"
          },
          "timeOfDayStartLocal": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          },
          "timeOfDayEndLocal": {
            "type": [
              "null",
              "string"
            ],
            "format": "time"
          },
          "leadTimeCurve": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/LeadTimeTier"
            }
          },
          "loadFactorCurve": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/LoadFactorTier"
            }
          },
          "channelId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "PricingQuote": {
        "required": [
          "productId",
          "ratePlanId",
          "currency",
          "subtotal",
          "modifierDelta",
          "promoDelta",
          "net",
          "tax",
          "gross",
          "lines",
          "adjustments",
          "taxBreakdown",
          "warnings"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "currency": {
            "type": "string"
          },
          "subtotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "modifierDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "promoDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "net": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "tax": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "gross": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuoteLine"
            }
          },
          "adjustments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuoteAdjustment"
            }
          },
          "taxBreakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuoteTaxLine"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "experimentId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "variantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "variantName": {
            "type": [
              "null",
              "string"
            ]
          },
          "floorApplied": {
            "type": "boolean",
            "default": false
          },
          "anchorPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "customerCurrencyView": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CustomerCurrencyView"
              }
            ]
          },
          "tipAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "depositAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "balanceAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "balanceDueAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "ProcessPaymentIntentBody": {
        "required": [
          "paymentIntentId"
        ],
        "type": "object",
        "properties": {
          "paymentIntentId": {
            "type": "string"
          }
        }
      },
      "ProcessPrivacyRequestBody": {
        "type": "object",
        "properties": {
          "reject": {
            "type": "boolean"
          },
          "note": {
            "maxLength": 2000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ProductChannelListingDto": {
        "required": [
          "id",
          "productId",
          "channelId",
          "isVisible",
          "markupPercent",
          "channelMetadataJson",
          "lastSyncedAt",
          "syncStatus",
          "lastError",
          "lastErrorAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "isVisible": {
            "type": "boolean"
          },
          "markupPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "channelMetadataJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastSyncedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "syncStatus": {
            "$ref": "#/components/schemas/SyncStatus"
          },
          "lastError": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastErrorAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "ProductChannelListingRequest": {
        "required": [
          "channelId",
          "isVisible",
          "markupPercent",
          "channelMetadataJson"
        ],
        "type": "object",
        "properties": {
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "isVisible": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "markupPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "channelMetadataJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ProductCustomerQuestionType": {
        "type": "integer"
      },
      "ProductDto": {
        "required": [
          "id",
          "slug",
          "name",
          "description",
          "type",
          "state",
          "defaultLocale",
          "currency",
          "publishedAt",
          "publishAtScheduled",
          "version",
          "createdById",
          "translations",
          "minPaxToOperate",
          "operateDecisionDeadlineHoursBefore",
          "leadTimeMinutes",
          "buildTimeMinutes",
          "timezoneIanaName",
          "parentProductId",
          "scheduleProfile",
          "effectiveScheduleProfile",
          "waiverTemplateId",
          "waiverPolicy",
          "subproducts",
          "categoryId",
          "tagIds"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "$ref": "#/components/schemas/ProductType"
          },
          "state": {
            "$ref": "#/components/schemas/ProductState"
          },
          "defaultLocale": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "publishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "publishAtScheduled": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "createdById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "minPaxToOperate": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "operateDecisionDeadlineHoursBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "leadTimeMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "buildTimeMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "timezoneIanaName": {
            "type": "string"
          },
          "parentProductId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "scheduleProfile": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ScheduleProfile"
              }
            ]
          },
          "effectiveScheduleProfile": {
            "$ref": "#/components/schemas/ScheduleProfile"
          },
          "waiverTemplateId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "waiverPolicy": {
            "$ref": "#/components/schemas/WaiverSignaturePolicy"
          },
          "subproducts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubproductLiteDto"
            }
          },
          "categoryId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "tagIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "ProductMediaKind": {
        "type": "integer"
      },
      "ProductResourceBindingDto": {
        "required": [
          "id",
          "productId",
          "ratePlanId",
          "resourcePoolId",
          "unitsPerBooking",
          "unitsPerPax"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "resourcePoolId": {
            "type": "string",
            "format": "uuid"
          },
          "unitsPerBooking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "unitsPerPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ProductResourceBindingRequest": {
        "required": [
          "resourcePoolId",
          "ratePlanId",
          "unitsPerBooking",
          "unitsPerPax"
        ],
        "type": "object",
        "properties": {
          "resourcePoolId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "unitsPerBooking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "unitsPerPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ProductRevenueRow": {
        "required": [
          "productId",
          "productName",
          "bookingCount",
          "amount"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "productName": {
            "type": "string"
          },
          "bookingCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "ProductSeoDto": {
        "required": [
          "productId",
          "metaTitle",
          "metaDescription",
          "ogImageUrl",
          "canonicalUrl",
          "robotsDirective",
          "translations"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "metaTitle": {
            "type": [
              "null",
              "string"
            ]
          },
          "metaDescription": {
            "type": [
              "null",
              "string"
            ]
          },
          "ogImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "canonicalUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "robotsDirective": {
            "type": [
              "null",
              "string"
            ]
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "ProductSeoRequest": {
        "required": [
          "metaTitle",
          "metaDescription",
          "ogImageUrl",
          "canonicalUrl",
          "robotsDirective",
          "translations"
        ],
        "type": "object",
        "properties": {
          "metaTitle": {
            "type": [
              "null",
              "string"
            ]
          },
          "metaDescription": {
            "type": [
              "null",
              "string"
            ]
          },
          "ogImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "canonicalUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "robotsDirective": {
            "type": [
              "null",
              "string"
            ]
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "ProductState": {
        "type": "integer"
      },
      "ProductType": {
        "type": "integer"
      },
      "ProductVariant": {
        "required": [
          "productId",
          "sku"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string"
          },
          "barcode": {
            "type": [
              "null",
              "string"
            ]
          },
          "gtin": {
            "type": [
              "null",
              "string"
            ]
          },
          "weightGrams": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lengthMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "widthMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "heightMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "priceOverrideCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "compareAtPriceCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "isTaxable": {
            "type": "boolean"
          },
          "requiresShipping": {
            "type": "boolean"
          },
          "allowOversell": {
            "type": "boolean"
          },
          "taxClass": {
            "$ref": "#/components/schemas/TaxClass"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "isSubscribable": {
            "type": "boolean"
          },
          "subscriptionPriceCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "lotTracking": {
            "$ref": "#/components/schemas/LotTrackingMode"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ProductVersionDetail": {
        "required": [
          "id",
          "sequence",
          "sourceKind",
          "authorId",
          "comment",
          "restoredFromVersionId",
          "productVersionAtSnapshot",
          "createdAt",
          "snapshotJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "sequence": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sourceKind": {
            "$ref": "#/components/schemas/ProductVersionSourceKind"
          },
          "authorId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "comment": {
            "type": [
              "null",
              "string"
            ]
          },
          "restoredFromVersionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "productVersionAtSnapshot": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "snapshotJson": {
            "type": "string"
          }
        }
      },
      "ProductVersionListItem": {
        "required": [
          "id",
          "sequence",
          "sourceKind",
          "authorId",
          "comment",
          "restoredFromVersionId",
          "productVersionAtSnapshot",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "sequence": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sourceKind": {
            "$ref": "#/components/schemas/ProductVersionSourceKind"
          },
          "authorId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "comment": {
            "type": [
              "null",
              "string"
            ]
          },
          "restoredFromVersionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "productVersionAtSnapshot": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ProductVersionSourceKind": {
        "type": "integer"
      },
      "ProgramDto": {
        "required": [
          "id",
          "name",
          "kind",
          "landingClickIdParam",
          "conversionPostbackUrlTemplate",
          "isActive",
          "hasSecret"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "landingClickIdParam": {
            "type": "string"
          },
          "conversionPostbackUrlTemplate": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "hasSecret": {
            "type": "boolean"
          }
        }
      },
      "ProgramRequest": {
        "required": [
          "name",
          "kind",
          "landingClickIdParam",
          "conversionPostbackUrlTemplate",
          "secret",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AffiliateProgramKind"
              }
            ]
          },
          "landingClickIdParam": {
            "type": "string"
          },
          "conversionPostbackUrlTemplate": {
            "type": "string"
          },
          "secret": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "PromoCodeDto": {
        "required": [
          "id",
          "code",
          "description",
          "discountKind",
          "discountValue",
          "fixedAmountCurrency",
          "validFrom",
          "validUntil",
          "maxUses",
          "usedCount",
          "ratePlanFilter",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "discountKind": {
            "$ref": "#/components/schemas/PromoDiscountKind"
          },
          "discountValue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "fixedAmountCurrency": {
            "type": [
              "null",
              "string"
            ]
          },
          "validFrom": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "validUntil": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "maxUses": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "usedCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "ratePlanFilter": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "isFirstTimeOnly": {
            "type": "boolean",
            "default": false
          },
          "bogoBuyN": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bogoGetN": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bogoGetPercentOff": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "bogoEligibleTierIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "channelFilter": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "bxgyBuyN": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bxgyTriggerTierIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "bxgyGetN": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bxgyGetTierIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "bxgyGetPercentOff": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "PromoCodeRequest": {
        "required": [
          "code",
          "description",
          "discountKind",
          "discountValue",
          "fixedAmountCurrency",
          "validFrom",
          "validUntil",
          "maxUses",
          "ratePlanFilter",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "discountKind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromoDiscountKind"
              }
            ]
          },
          "discountValue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "fixedAmountCurrency": {
            "type": [
              "null",
              "string"
            ]
          },
          "validFrom": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "validUntil": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "maxUses": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "ratePlanFilter": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isFirstTimeOnly": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "bogoBuyN": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bogoGetN": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bogoGetPercentOff": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "bogoEligibleTierIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "channelFilter": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "bxgyBuyN": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bxgyTriggerTierIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "bxgyGetN": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bxgyGetTierIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "bxgyGetPercentOff": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "PromoDiscountKind": {
        "type": "integer"
      },
      "ProviderStatsDto": {
        "required": [
          "provider",
          "sent",
          "delivered",
          "failed",
          "complained"
        ],
        "type": "object",
        "properties": {
          "provider": {
            "type": "string"
          },
          "sent": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "delivered": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "failed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "complained": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PublicAddOnPurchaseBody": {
        "type": "object",
        "properties": {
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "addOnIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "paymentMethodId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicBundleQuoteBody": {
        "required": [
          "packageDefinitionId",
          "date",
          "components"
        ],
        "type": "object",
        "properties": {
          "packageDefinitionId": {
            "type": "string",
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicComponentQuoteBody"
            }
          }
        }
      },
      "PublicCancelBody": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        }
      },
      "PublicCheckoutBody": {
        "required": [
          "customer",
          "provider",
          "ratePlanId",
          "promoCode"
        ],
        "type": "object",
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/PublicCustomerInput"
          },
          "provider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PaymentProviderKind"
              }
            ]
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "channelId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "addOnIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "segmentIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "savePaymentMethod": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "paymentMethodId": {
            "type": [
              "null",
              "string"
            ]
          },
          "portalSession": {
            "type": [
              "null",
              "string"
            ]
          },
          "tipAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "PublicComponentQuoteBody": {
        "required": [
          "productId",
          "ratePlanId",
          "paxBreakdown"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "channelId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "PublicCustomerInfoBody": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicCustomerInput": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "marketingOptIn": {
            "type": "boolean"
          },
          "smsOptIn": {
            "type": "boolean"
          }
        }
      },
      "PublicHoldBody": {
        "required": [
          "slotId",
          "paxBreakdown",
          "ratePlanId",
          "antiBotToken"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "antiBotToken": {
            "type": [
              "null",
              "string"
            ]
          },
          "visitorId": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerCurrency": {
            "type": [
              "null",
              "string"
            ]
          },
          "tipAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "PublicPackageComponentSelection": {
        "required": [
          "childProductId",
          "slotId",
          "paxBreakdown"
        ],
        "type": "object",
        "properties": {
          "childProductId": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "PublicPackageConfirmBody": {
        "required": [
          "parentHoldId",
          "paymentIntentId"
        ],
        "type": "object",
        "properties": {
          "parentHoldId": {
            "type": "string",
            "format": "uuid"
          },
          "paymentIntentId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicPackageContact": {
        "required": [
          "email",
          "name",
          "phone"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicPackageReserveBody": {
        "required": [
          "date",
          "componentSelections",
          "contact",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "componentSelections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicPackageComponentSelection"
            }
          },
          "contact": {
            "$ref": "#/components/schemas/PublicPackageContact"
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicPayBalanceBody": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "PublicQuoteBody": {
        "required": [
          "productId",
          "ratePlanId",
          "date",
          "paxBreakdown",
          "slotStartsAt",
          "promoCode"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "channelId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "addOnIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "segmentIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "customerEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "billingCountry": {
            "type": [
              "null",
              "string"
            ]
          },
          "billingRegion": {
            "type": [
              "null",
              "string"
            ]
          },
          "billingPostalCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "visitorId": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerCurrency": {
            "type": [
              "null",
              "string"
            ]
          },
          "tipAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "PublicRefundQuoteDto": {
        "required": [
          "bookingRef",
          "refundAmount",
          "currency",
          "totalAmount",
          "hoursBeforeStart",
          "isRefundable"
        ],
        "type": "object",
        "properties": {
          "bookingRef": {
            "type": "string"
          },
          "refundAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "hoursBeforeStart": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isRefundable": {
            "type": "boolean"
          }
        }
      },
      "PublicRentalHoldBody": {
        "required": [
          "productId",
          "unitTypeId",
          "startsAt",
          "endsAt",
          "customerEmail",
          "customerName",
          "customerPhone",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "unitTypeId": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "customerEmail": {
            "type": "string"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicRescheduleBody": {
        "type": "object",
        "properties": {
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "newSlotId": {
            "type": "string",
            "format": "uuid"
          },
          "paymentMethodId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicTransferAvailabilityResponse": {
        "required": [
          "outbound",
          "return"
        ],
        "type": "object",
        "properties": {
          "outbound": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransferAvailabilityItem"
            }
          },
          "return": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TransferAvailabilityItem"
            }
          }
        }
      },
      "PublicTransferConfirmBody": {
        "required": [
          "outboundHoldId",
          "returnHoldId",
          "paymentIntentId"
        ],
        "type": "object",
        "properties": {
          "outboundHoldId": {
            "type": "string",
            "format": "uuid"
          },
          "returnHoldId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paymentIntentId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicTransferContact": {
        "required": [
          "name",
          "email",
          "phone"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicTransferReserveBody": {
        "required": [
          "routeId",
          "outboundSlotId",
          "returnSlotId",
          "paxTierId",
          "pax",
          "contact",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "routeId": {
            "type": "string",
            "format": "uuid"
          },
          "outboundSlotId": {
            "type": "string",
            "format": "uuid"
          },
          "returnSlotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "pax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "contact": {
            "$ref": "#/components/schemas/PublicTransferContact"
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicTransferReserveResponse": {
        "required": [
          "outboundHoldId",
          "returnHoldId",
          "bookingLinkGroupId"
        ],
        "type": "object",
        "properties": {
          "outboundHoldId": {
            "type": "string",
            "format": "uuid"
          },
          "returnHoldId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "bookingLinkGroupId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "PublicUnitTypeDto": {
        "required": [
          "id",
          "name",
          "description",
          "attributes",
          "unitsAvailable"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "unitsAvailable": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PublicWaiverResolveDto": {
        "required": [
          "signatureId",
          "templateName",
          "templateVersion",
          "bodyMarkdown",
          "requiresMinorGuardian",
          "bookingRef",
          "signerName",
          "signerEmail",
          "alreadySigned",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "signatureId": {
            "type": "string",
            "format": "uuid"
          },
          "templateName": {
            "type": "string"
          },
          "templateVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bodyMarkdown": {
            "type": "string"
          },
          "requiresMinorGuardian": {
            "type": "boolean"
          },
          "bookingRef": {
            "type": "string"
          },
          "signerName": {
            "type": "string"
          },
          "signerEmail": {
            "type": "string"
          },
          "alreadySigned": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PublicWaiverSignBody": {
        "required": [
          "signerName",
          "signerEmail",
          "dateOfBirth",
          "guardianName",
          "guardianRelationship",
          "accept"
        ],
        "type": "object",
        "properties": {
          "signerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "signerEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "dateOfBirth": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "guardianName": {
            "type": [
              "null",
              "string"
            ]
          },
          "guardianRelationship": {
            "type": [
              "null",
              "string"
            ]
          },
          "accept": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "PublicWaiverSignedDto": {
        "required": [
          "signatureId",
          "signedAt",
          "pdfSha256"
        ],
        "type": "object",
        "properties": {
          "signatureId": {
            "type": "string",
            "format": "uuid"
          },
          "signedAt": {
            "type": "string",
            "format": "date-time"
          },
          "pdfSha256": {
            "type": "string"
          }
        }
      },
      "PublishBody": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PublishRequest": {
        "type": "object",
        "properties": {
          "scheduleAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "PublishResult": {
        "required": [
          "publishedCount"
        ],
        "type": "object",
        "properties": {
          "publishedCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "PublishThemeRequest": {
        "required": [
          "notes"
        ],
        "type": "object",
        "properties": {
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PunchDto": {
        "required": [
          "id",
          "crewMemberId",
          "shiftId",
          "punchInAt",
          "punchOutAt",
          "breakStartedAt",
          "breakMinutes",
          "source",
          "correctionNote",
          "createdAt",
          "overtimeMinutes",
          "mealBreakViolation",
          "tips",
          "miles",
          "jobTag"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "shiftId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "punchInAt": {
            "type": "string",
            "format": "date-time"
          },
          "punchOutAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "breakStartedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "breakMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "source": {
            "$ref": "#/components/schemas/PunchSource"
          },
          "correctionNote": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "overtimeMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "mealBreakViolation": {
            "type": "boolean"
          },
          "tips": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "miles": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "jobTag": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PunchInBody": {
        "required": [
          "latitude",
          "longitude"
        ],
        "type": "object",
        "properties": {
          "latitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "longitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "PunchOutBody": {
        "required": [
          "tips",
          "miles",
          "jobTag"
        ],
        "type": "object",
        "properties": {
          "tips": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "miles": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "jobTag": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PunchSource": {
        "type": "integer"
      },
      "PunchSummaryDto": {
        "required": [
          "crewMemberId",
          "name",
          "from",
          "to",
          "shiftCount",
          "punchCount",
          "totalWorkedMinutes",
          "totalBreakMinutes",
          "hourlyRate",
          "currency",
          "totalPay",
          "totalTips",
          "totalMiles"
        ],
        "type": "object",
        "properties": {
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "from": {
            "type": "string",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "format": "date-time"
          },
          "shiftCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "punchCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalWorkedMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalBreakMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hourlyRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "totalPay": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalTips": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalMiles": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "PurchaseOrderLineKind": {
        "type": "integer"
      },
      "PurchaseOrderStatus": {
        "type": "integer"
      },
      "PutAvailabilityBody": {
        "type": "object",
        "properties": {
          "entries": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/AvailabilityEntry"
            }
          }
        }
      },
      "PutFileRequest": {
        "required": [
          "path",
          "kind",
          "content",
          "bytes"
        ],
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "content": {
            "type": [
              "null",
              "string"
            ]
          },
          "bytes": {
            "type": [
              "null",
              "string"
            ],
            "format": "byte"
          }
        }
      },
      "QuoteAdjustment": {
        "required": [
          "label",
          "amount"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "QuoteBody": {
        "required": [
          "ratePlanId",
          "date",
          "paxBreakdown",
          "slotStartsAt",
          "promoCode"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "segmentIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "QuoteLine": {
        "required": [
          "paxTierId",
          "paxTierName",
          "count",
          "unitPrice",
          "lineTotal"
        ],
        "type": "object",
        "properties": {
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierName": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "unitPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "lineTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "QuoteLineItem": {
        "required": [
          "label"
        ],
        "type": "object",
        "properties": {
          "label": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string"
          },
          "quantity": {
            "maximum": 10000,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "unitPriceCents": {
            "maximum": 9223372036854776000,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "lineTotalCents": {
            "maximum": 9223372036854776000,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "category": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "QuoteRequest": {
        "required": [
          "lineItems"
        ],
        "type": "object",
        "properties": {
          "lineItems": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuoteLineItem"
            }
          },
          "taxCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": [
              "null",
              "string"
            ]
          },
          "expiresInDays": {
            "maximum": 180,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "QuoteRequestBody": {
        "required": [
          "billingAddress",
          "shippingAddress",
          "promoCode",
          "giftCardId"
        ],
        "type": "object",
        "properties": {
          "billingAddress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PostalAddress"
              }
            ]
          },
          "shippingAddress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PostalAddress"
              }
            ]
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "giftCardId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "QuoteTaxLine": {
        "required": [
          "name",
          "ratePercent",
          "amount"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "ratePercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "RatePlanDepositPolicyDto": {
        "required": [
          "id",
          "ratePlanId",
          "isEnabled",
          "depositKind",
          "depositPercent",
          "depositFixedAmount",
          "balanceDueDaysBeforeStart",
          "isActive",
          "version"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "isEnabled": {
            "type": "boolean"
          },
          "depositKind": {
            "$ref": "#/components/schemas/DepositKind"
          },
          "depositPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "depositFixedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "balanceDueDaysBeforeStart": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          }
        }
      },
      "RatePlanDepositPolicyRequest": {
        "required": [
          "isEnabled",
          "depositKind",
          "depositPercent",
          "depositFixedAmount",
          "balanceDueDaysBeforeStart",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "depositKind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DepositKind"
              }
            ]
          },
          "depositPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "depositFixedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "balanceDueDaysBeforeStart": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "RatePlanDto": {
        "required": [
          "id",
          "productId",
          "tenantId",
          "name",
          "description",
          "isPrimary",
          "isOnlineBookable",
          "isActive",
          "isPublished",
          "publishedAt",
          "currency",
          "taxRuleId",
          "sortOrder",
          "compareAtAmount",
          "segmentRestrictionIds",
          "cancellationPolicy",
          "paxTierConfigs",
          "prices",
          "modifiers",
          "refundScheduleId",
          "minNetAmount",
          "costBasisAmount",
          "anchorPrice"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isPrimary": {
            "type": "boolean"
          },
          "isOnlineBookable": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "isPublished": {
            "type": "boolean"
          },
          "publishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "taxRuleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "compareAtAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "segmentRestrictionIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "cancellationPolicy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CancellationPolicyDto"
              }
            ]
          },
          "paxTierConfigs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaxTierConfigDto"
            }
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceListDto"
            }
          },
          "modifiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PricingModifierDto"
            }
          },
          "refundScheduleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "minNetAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "costBasisAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "anchorPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "RatePlanRequest": {
        "required": [
          "name",
          "description",
          "isPrimary",
          "isOnlineBookable",
          "isActive",
          "currency",
          "taxRuleId",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isPrimary": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isOnlineBookable": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "taxRuleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "compareAtAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "segmentRestrictionIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "refundScheduleId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "minNetAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "costBasisAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "anchorPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "RatePlanSummaryDto": {
        "required": [
          "id",
          "name",
          "productId",
          "productName",
          "currency",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "productName": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "ReceiptLineInput": {
        "required": [
          "purchaseOrderLineId",
          "quantityReceived",
          "notes"
        ],
        "type": "object",
        "properties": {
          "purchaseOrderLineId": {
            "type": "string",
            "format": "uuid"
          },
          "quantityReceived": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RecentOrderRow": {
        "required": [
          "orderId",
          "orderRef",
          "placedAt",
          "gross",
          "status"
        ],
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "orderRef": {
            "type": "string"
          },
          "placedAt": {
            "type": "string",
            "format": "date-time"
          },
          "gross": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "status": {
            "$ref": "#/components/schemas/OrderStatus"
          }
        }
      },
      "RecentOrdersWidgetData": {
        "required": [
          "totalCount",
          "grossSumCents",
          "rows"
        ],
        "type": "object",
        "properties": {
          "totalCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "grossSumCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecentOrderRow"
            }
          }
        }
      },
      "RecommendationApplyBody": {
        "required": [
          "ratePlanId",
          "direction",
          "suggestedPercent",
          "confidence",
          "rationale",
          "minConfidence",
          "maxPercentMagnitude",
          "dryRun"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "direction": {
            "type": "string"
          },
          "suggestedPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "confidence": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "rationale": {
            "type": "string"
          },
          "minConfidence": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "maxPercentMagnitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "dryRun": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "RecommendationApplyResult": {
        "required": [
          "applied",
          "createdModifierId",
          "rejectionReason"
        ],
        "type": "object",
        "properties": {
          "applied": {
            "type": "boolean"
          },
          "createdModifierId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "rejectionReason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RecommendationDto": {
        "required": [
          "ratePlanId",
          "ratePlanName",
          "productId",
          "direction",
          "suggestedPercent",
          "confidence",
          "rationale",
          "windowStart",
          "windowEnd"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanName": {
            "type": "string"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "direction": {
            "type": "string"
          },
          "suggestedPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "confidence": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "rationale": {
            "type": "string"
          },
          "windowStart": {
            "type": "string",
            "format": "date-time"
          },
          "windowEnd": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "RecordConsentRequest": {
        "required": [
          "anonymousId"
        ],
        "type": "object",
        "properties": {
          "anonymousId": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "categories": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "version": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RecordManualPaymentBody": {
        "required": [
          "amount",
          "currency",
          "method",
          "notes"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "method": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RecordReceiptBody": {
        "required": [
          "receiptLines",
          "carrierReference",
          "photoUrl",
          "notes",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "receiptLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptLineInput"
            }
          },
          "carrierReference": {
            "type": [
              "null",
              "string"
            ]
          },
          "photoUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "idempotencyKey": {
            "type": "string"
          }
        }
      },
      "RedeemGiftCardsBody": {
        "required": [
          "reservationId",
          "currency",
          "codes"
        ],
        "type": "object",
        "properties": {
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "currency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "orderOpenBalanceCents": {
            "maximum": 2147483647,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "codes": {
            "minItems": 1,
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "RedeemRewardBody": {
        "required": [
          "targetCartId"
        ],
        "type": "object",
        "properties": {
          "targetCartId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "RedeemVoucherBody": {
        "required": [
          "paxToRedeem",
          "reservationId",
          "notes"
        ],
        "type": "object",
        "properties": {
          "paxToRedeem": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RefreshBody": {
        "required": [
          "refreshToken"
        ],
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string"
          }
        }
      },
      "Refund": {
        "required": [
          "paymentId",
          "amount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "createdById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "updatedById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paymentId": {
            "type": "string",
            "format": "uuid"
          },
          "orderId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "computedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "overriddenById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "providerRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/RefundStatus"
          },
          "failureReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "returnReason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ReturnReason"
              }
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "RefundDestination": {
        "type": "integer"
      },
      "RefundDto": {
        "required": [
          "id",
          "paymentId",
          "amount",
          "computedAmount",
          "currency",
          "reason",
          "overriddenById",
          "status",
          "createdAt",
          "failureReason"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "paymentId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "computedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "overriddenById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/RefundStatus"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "failureReason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RefundLineBody": {
        "required": [
          "originalLineId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "originalLineId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "RefundLineRequest": {
        "required": [
          "orderLineItemId",
          "quantity",
          "amountMinorUnits",
          "reason",
          "notes"
        ],
        "type": "object",
        "properties": {
          "orderLineItemId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "amountMinorUnits": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "reason": {
            "$ref": "#/components/schemas/ReturnReason"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RefundOrderRequest": {
        "required": [
          "lineRefunds",
          "reason"
        ],
        "type": "object",
        "properties": {
          "lineRefunds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundLineRequest"
            }
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RefundReconciliationKpis": {
        "required": [
          "pendingCount",
          "pendingAmount",
          "issuedTodayCount",
          "issuedTodayAmount",
          "failedCount",
          "failedAmount"
        ],
        "type": "object",
        "properties": {
          "pendingCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pendingAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "issuedTodayCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "issuedTodayAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "failedCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "failedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "RefundReconciliationPage": {
        "required": [
          "rows",
          "kpis"
        ],
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundReconciliationRow"
            }
          },
          "kpis": {
            "$ref": "#/components/schemas/RefundReconciliationKpis"
          }
        }
      },
      "RefundReconciliationRow": {
        "required": [
          "id",
          "paymentId",
          "bookingId",
          "bookingRef",
          "customerName",
          "customerEmail",
          "amount",
          "currency",
          "status",
          "processor",
          "paymentProviderRef",
          "processorRefundRef",
          "scheduledFor",
          "processedAt",
          "retries",
          "lastError",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "paymentId": {
            "type": "string",
            "format": "uuid"
          },
          "bookingId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "bookingRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/RefundStatus"
          },
          "processor": {
            "type": "string"
          },
          "paymentProviderRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "processorRefundRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "scheduledFor": {
            "type": "string",
            "format": "date-time"
          },
          "processedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "retries": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lastError": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "RefundSaleBody": {
        "required": [
          "originalSaleId",
          "lineItemRefunds",
          "refundReason",
          "refundDestination",
          "operatorNotes"
        ],
        "type": "object",
        "properties": {
          "originalSaleId": {
            "type": "string",
            "format": "uuid"
          },
          "lineItemRefunds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundLineBody"
            }
          },
          "refundReason": {
            "$ref": "#/components/schemas/ReturnReason"
          },
          "refundDestination": {
            "$ref": "#/components/schemas/RefundDestination"
          },
          "operatorNotes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RefundScheduleBandDto": {
        "required": [
          "id",
          "refundScheduleId",
          "minLeadTimeHours",
          "refundPercent",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "refundScheduleId": {
            "type": "string",
            "format": "uuid"
          },
          "minLeadTimeHours": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "refundPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "RefundScheduleDto": {
        "required": [
          "id",
          "name",
          "description",
          "isActive",
          "bands"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": "boolean"
          },
          "bands": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundScheduleBandDto"
            }
          }
        }
      },
      "RefundScheduleRequest": {
        "required": [
          "name",
          "description",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "RefundStatus": {
        "type": "integer"
      },
      "RefundTier": {
        "required": [
          "hoursBefore",
          "refundPercent"
        ],
        "type": "object",
        "properties": {
          "hoursBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "refundPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "RefundTimingMode": {
        "type": "integer"
      },
      "RegisterBody": {
        "required": [
          "email",
          "password",
          "displayName",
          "tenantSlug",
          "tenantName"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "tenantSlug": {
            "type": "string"
          },
          "tenantName": {
            "type": "string"
          },
          "recaptchaToken": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RegisterReaderBody": {
        "required": [
          "registrationCode",
          "label",
          "locationId"
        ],
        "type": "object",
        "properties": {
          "registrationCode": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RejectBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "RejectTaxFormRequest": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "ReleaseBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RenameSavedPresetRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "RentalAvailabilityResponse": {
        "required": [
          "available",
          "unitsAvailable",
          "quotedTotal",
          "currency"
        ],
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          },
          "unitsAvailable": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "quotedTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "RentalHoldRequestBody": {
        "required": [
          "productId",
          "unitTypeId",
          "startsAt",
          "endsAt",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "unitTypeId": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RentalHoldResponse": {
        "required": [
          "holdId",
          "rentalReservationId",
          "rentalUnitId",
          "unitLabel",
          "startsAt",
          "endsAt",
          "quotedTotal"
        ],
        "type": "object",
        "properties": {
          "holdId": {
            "type": "string",
            "format": "uuid"
          },
          "rentalReservationId": {
            "type": "string",
            "format": "uuid"
          },
          "rentalUnitId": {
            "type": "string",
            "format": "uuid"
          },
          "unitLabel": {
            "type": "string"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "quotedTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "RentalUnitBulkRequest": {
        "required": [
          "labelPrefix",
          "count"
        ],
        "type": "object",
        "properties": {
          "labelPrefix": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "RentalUnitDto": {
        "required": [
          "id",
          "rentalUnitTypeId",
          "label",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "rentalUnitTypeId": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/RentalUnitStatus"
          }
        }
      },
      "RentalUnitRequest": {
        "required": [
          "label",
          "status"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RentalUnitStatus"
              }
            ]
          }
        }
      },
      "RentalUnitStatus": {
        "type": "integer"
      },
      "RentalUnitTypeDto": {
        "required": [
          "id",
          "productId",
          "name",
          "description",
          "attributes",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "RentalUnitTypeRequest": {
        "required": [
          "name",
          "description",
          "attributes",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "attributes": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ReorderPlacementsDto": {
        "type": "object",
        "properties": {
          "slot": {
            "type": "string"
          },
          "ids": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "ReorderRequest": {
        "required": [
          "orderedIds"
        ],
        "type": "object",
        "properties": {
          "orderedIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "ReservationDto": {
        "required": [
          "id",
          "slotId",
          "holdId",
          "ratePlanId",
          "status",
          "paxBreakdown",
          "totalAmount",
          "currency",
          "createdAt",
          "cancelledAt",
          "cancellationReason"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "holdId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/ReservationStatus"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "cancelledAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "cancellationReason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ReservationStatus": {
        "type": "integer"
      },
      "ResourcePoolDto": {
        "required": [
          "id",
          "name",
          "description",
          "totalCapacity",
          "remainingCapacity",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "totalCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "remainingCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "ResourcePoolRequest": {
        "required": [
          "name",
          "description",
          "totalCapacity",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "totalCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "RestockingFeeKind": {
        "type": "integer"
      },
      "RestockingFeeOverrideDto": {
        "required": [
          "kind",
          "amount"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/RestockingFeeKind"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          }
        }
      },
      "RestoreRequest": {
        "required": [
          "comment"
        ],
        "type": "object",
        "properties": {
          "comment": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RestoreVersionRequest": {
        "required": [
          "revision"
        ],
        "type": "object",
        "properties": {
          "revision": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "RetryFailedRowsResponse": {
        "required": [
          "job",
          "retriedRowCount",
          "fileFormatChangedToCsv"
        ],
        "type": "object",
        "properties": {
          "job": {
            "$ref": "#/components/schemas/ImportJobDto"
          },
          "retriedRowCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "fileFormatChangedToCsv": {
            "type": "boolean"
          }
        }
      },
      "ReturnBody": {
        "required": [
          "returnedAt",
          "damageNotes"
        ],
        "type": "object",
        "properties": {
          "returnedAt": {
            "type": "string",
            "format": "date-time"
          },
          "damageNotes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ReturnInitiator": {
        "type": "integer"
      },
      "ReturnLabelMode": {
        "type": "integer"
      },
      "ReturnLabelPolicy": {
        "type": "integer"
      },
      "ReturnLineCondition": {
        "type": "integer"
      },
      "ReturnOrderDetailResponse": {
        "required": [
          "id",
          "rmaNumber",
          "orderId",
          "customerId",
          "status",
          "initiatedBy",
          "reason",
          "customerNotes",
          "labelMode",
          "refundTiming",
          "restockingFeeKind",
          "restockingFeeAmount",
          "providerShipmentId",
          "carrier",
          "service",
          "trackingNumber",
          "labelUrl",
          "trackingUrl",
          "labelCostCents",
          "returnedToLocationId",
          "refundId",
          "requestedAt",
          "approvedAt",
          "labelIssuedAt",
          "shippedAt",
          "receivedAt",
          "resolvedAt",
          "cancelledAt",
          "cancellationReason",
          "version",
          "lines",
          "events"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "rmaNumber": {
            "type": "string"
          },
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/ReturnOrderStatus"
          },
          "initiatedBy": {
            "$ref": "#/components/schemas/ReturnInitiator"
          },
          "reason": {
            "$ref": "#/components/schemas/ReturnReason"
          },
          "customerNotes": {
            "type": [
              "null",
              "string"
            ]
          },
          "labelMode": {
            "$ref": "#/components/schemas/ReturnLabelMode"
          },
          "refundTiming": {
            "$ref": "#/components/schemas/RefundTimingMode"
          },
          "restockingFeeKind": {
            "$ref": "#/components/schemas/RestockingFeeKind"
          },
          "restockingFeeAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "providerShipmentId": {
            "type": [
              "null",
              "string"
            ]
          },
          "carrier": {
            "type": [
              "null",
              "string"
            ]
          },
          "service": {
            "type": [
              "null",
              "string"
            ]
          },
          "trackingNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "labelUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "trackingUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "labelCostCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "returnedToLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "refundId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "requestedAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "labelIssuedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "shippedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "receivedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "resolvedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "cancelledAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "cancellationReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReturnOrderLineDetail"
            }
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReturnOrderEventDetail"
            }
          }
        }
      },
      "ReturnOrderEventDetail": {
        "required": [
          "id",
          "kind",
          "occurredAt",
          "actorUserId",
          "payloadJson"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "actorUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "payloadJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ReturnOrderLineDetail": {
        "required": [
          "id",
          "orderLineItemId",
          "quantity",
          "lineRefundCents",
          "condition",
          "inspectorNote",
          "inspectedAt",
          "inspectedByUserId",
          "dispositionLocationId",
          "stockMovementId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "orderLineItemId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lineRefundCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "condition": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ReturnLineCondition"
              }
            ]
          },
          "inspectorNote": {
            "type": [
              "null",
              "string"
            ]
          },
          "inspectedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "inspectedByUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "dispositionLocationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "stockMovementId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "ReturnOrderListResponse": {
        "required": [
          "rows",
          "total",
          "page",
          "pageSize"
        ],
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReturnOrderListRow"
            }
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ReturnOrderListRow": {
        "required": [
          "id",
          "rmaNumber",
          "orderId",
          "customerId",
          "status",
          "initiatedBy",
          "reason",
          "labelMode",
          "requestedAt",
          "approvedAt",
          "totalRefundEstimateCents",
          "lineCount"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "rmaNumber": {
            "type": "string"
          },
          "orderId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/ReturnOrderStatus"
          },
          "initiatedBy": {
            "$ref": "#/components/schemas/ReturnInitiator"
          },
          "reason": {
            "$ref": "#/components/schemas/ReturnReason"
          },
          "labelMode": {
            "$ref": "#/components/schemas/ReturnLabelMode"
          },
          "requestedAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "totalRefundEstimateCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "lineCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ReturnOrderStatus": {
        "type": "integer"
      },
      "ReturnReason": {
        "type": "integer"
      },
      "RevenueByRatePlanRow": {
        "required": [
          "ratePlanId",
          "ratePlanName",
          "reservationCount",
          "totalRevenue",
          "currency"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "ratePlanName": {
            "type": [
              "null",
              "string"
            ]
          },
          "reservationCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalRevenue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "RevenueDay": {
        "required": [
          "date",
          "bookingCount",
          "bookedAmount"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "bookingCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bookedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "RevenueReport": {
        "required": [
          "from",
          "to",
          "totalBooked",
          "totalPaid",
          "totalRefunded",
          "netRealised",
          "currencies",
          "byDay"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "totalBooked": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalPaid": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalRefunded": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "netRealised": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currencies": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "byDay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RevenueDay"
            }
          }
        }
      },
      "ReviewBody": {
        "required": [
          "notes"
        ],
        "type": "object",
        "properties": {
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ReviewDto": {
        "required": [
          "id",
          "productId",
          "productName",
          "variantId",
          "reservationId",
          "customerId",
          "displayName",
          "rating",
          "title",
          "body",
          "operatorResponse",
          "operatorResponseAt",
          "status",
          "createdAt",
          "moderatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "productName": {
            "type": "string"
          },
          "variantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "rating": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "body": {
            "type": "string"
          },
          "operatorResponse": {
            "type": [
              "null",
              "string"
            ]
          },
          "operatorResponseAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/ReviewStatus"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "moderatedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "ReviewPage": {
        "required": [
          "items",
          "page",
          "pageSize",
          "total"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReviewDto"
            }
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ReviewResponseBody": {
        "required": [
          "body"
        ],
        "type": "object",
        "properties": {
          "body": {
            "type": "string"
          }
        }
      },
      "ReviewStatus": {
        "type": "integer"
      },
      "ReviewSummary": {
        "required": [
          "productId",
          "count",
          "average",
          "fiveStar",
          "fourStar",
          "threeStar",
          "twoStar",
          "oneStar"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "average": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "fiveStar": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "fourStar": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "threeStar": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "twoStar": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "oneStar": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ReviseWaiverTemplateRequest": {
        "required": [
          "bodyMarkdown",
          "requiresMinorGuardian"
        ],
        "type": "object",
        "properties": {
          "bodyMarkdown": {
            "type": [
              "null",
              "string"
            ]
          },
          "requiresMinorGuardian": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "RoadmapVoteRequest": {
        "required": [
          "itemId"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        }
      },
      "RoleDto": {
        "required": [
          "id",
          "name",
          "description",
          "isSystem",
          "permissions"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isSystem": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "RotateSecretDto": {
        "required": [
          "secret"
        ],
        "type": "object",
        "properties": {
          "secret": {
            "type": "string"
          }
        }
      },
      "SavedImportPresetDto": {
        "required": [
          "id",
          "name",
          "entityKind",
          "columnMap",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "entityKind": {
            "$ref": "#/components/schemas/ImportEntityKind"
          },
          "columnMap": {
            "$ref": "#/components/schemas/ColumnMapping"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SavedPaymentMethodDto": {
        "required": [
          "id",
          "brand",
          "last4",
          "expMonth",
          "expYear",
          "isDefault"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "last4": {
            "type": "string"
          },
          "expMonth": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "expYear": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isDefault": {
            "type": "boolean"
          }
        }
      },
      "SaveImportMappingPresetRequest": {
        "required": [
          "name",
          "entityKind",
          "columnMap"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "entityKind": {
            "$ref": "#/components/schemas/ImportEntityKind"
          },
          "columnMap": {
            "$ref": "#/components/schemas/ColumnMapping"
          }
        }
      },
      "ScanBody": {
        "required": [
          "code",
          "gateId",
          "paxToScan",
          "force",
          "notes"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "gateId": {
            "type": [
              "null",
              "string"
            ]
          },
          "paxToScan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "force": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ScanDeniedReason": {
        "type": "integer"
      },
      "ScanRequest": {
        "required": [
          "tagId"
        ],
        "type": "object",
        "properties": {
          "tagId": {
            "maxLength": 64,
            "minLength": 4,
            "type": "string"
          },
          "requiredRight": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "location": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ScanResult": {
        "type": "integer"
      },
      "ScheduleProfile": {
        "type": "integer"
      },
      "ScheduleRuleDto": {
        "required": [
          "id",
          "productId",
          "ratePlanId",
          "name",
          "kind",
          "weekdays",
          "timesOfDay",
          "startDate",
          "endDate",
          "durationMinutes",
          "capacityPerSlot",
          "perTierCaps",
          "isActive",
          "manualEntries"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/ScheduleRuleKind"
          },
          "weekdays": {
            "$ref": "#/components/schemas/DayOfWeekMask"
          },
          "timesOfDay": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacityPerSlot": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perTierCaps": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "manualEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualScheduleEntryDto"
            }
          },
          "slotKind": {
            "$ref": "#/components/schemas/SlotKind"
          },
          "durationDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "entryWindowStart": {
            "type": [
              "null",
              "string"
            ]
          },
          "entryWindowEnd": {
            "type": [
              "null",
              "string"
            ]
          },
          "entryThrottle": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EntryThrottleBandDto"
            }
          }
        }
      },
      "ScheduleRuleKind": {
        "type": "integer"
      },
      "ScheduleRuleRequest": {
        "required": [
          "name",
          "ratePlanId",
          "weekdays",
          "timesOfDay",
          "startDate",
          "endDate",
          "durationMinutes",
          "capacityPerSlot",
          "perTierCaps",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "weekdays": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DayOfWeekMask"
              }
            ]
          },
          "timesOfDay": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacityPerSlot": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perTierCaps": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ScheduleRuleKind"
              }
            ]
          },
          "manualEntries": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ManualScheduleEntryRequest"
            }
          },
          "slotKind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SlotKind"
              }
            ]
          },
          "durationDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "entryWindowStart": {
            "type": [
              "null",
              "string"
            ]
          },
          "entryWindowEnd": {
            "type": [
              "null",
              "string"
            ]
          },
          "entryThrottle": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EntryThrottleBandRequest"
            }
          }
        }
      },
      "ScheduleUnpublishRequest": {
        "type": "object",
        "properties": {
          "at": {
            "$ref": "#/components/schemas/JsonElement"
          }
        }
      },
      "SeatAvailabilityItem": {
        "required": [
          "seatId",
          "label",
          "row",
          "number",
          "seatZoneId",
          "status"
        ],
        "type": "object",
        "properties": {
          "seatId": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": "string"
          },
          "row": {
            "type": [
              "null",
              "string"
            ]
          },
          "number": {
            "type": [
              "null",
              "string"
            ]
          },
          "seatZoneId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "SeatBulkRequest": {
        "required": [
          "rowLabels",
          "columnsPerRow",
          "seatZoneId"
        ],
        "type": "object",
        "properties": {
          "rowLabels": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "columnsPerRow": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "seatZoneId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "xStart": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double",
            "default": 0
          },
          "yStart": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double",
            "default": 0
          },
          "xStep": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double",
            "default": 40
          },
          "yStep": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double",
            "default": 50
          }
        }
      },
      "SeatDto": {
        "required": [
          "id",
          "seatMapId",
          "seatZoneId",
          "label",
          "row",
          "number",
          "x",
          "y",
          "isAccessible",
          "isHouseSeat"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "seatMapId": {
            "type": "string",
            "format": "uuid"
          },
          "seatZoneId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "label": {
            "type": "string"
          },
          "row": {
            "type": [
              "null",
              "string"
            ]
          },
          "number": {
            "type": [
              "null",
              "string"
            ]
          },
          "x": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "y": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "isAccessible": {
            "type": "boolean"
          },
          "isHouseSeat": {
            "type": "boolean"
          }
        }
      },
      "SeatHoldBody": {
        "required": [
          "slotId",
          "seatIds",
          "paxBreakdown",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "seatIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SeatHoldResponse": {
        "required": [
          "holdId",
          "seatIds"
        ],
        "type": "object",
        "properties": {
          "holdId": {
            "type": "string",
            "format": "uuid"
          },
          "seatIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "SeatingMode": {
        "type": "integer"
      },
      "SeatMapDto": {
        "required": [
          "id",
          "productId",
          "name",
          "svgShell"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "svgShell": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SeatMapRequest": {
        "required": [
          "name",
          "svgShell"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "svgShell": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SeatRequest": {
        "required": [
          "label",
          "seatZoneId",
          "row",
          "number",
          "x",
          "y",
          "isAccessible",
          "isHouseSeat"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "null",
              "string"
            ]
          },
          "seatZoneId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "row": {
            "type": [
              "null",
              "string"
            ]
          },
          "number": {
            "type": [
              "null",
              "string"
            ]
          },
          "x": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "y": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "isAccessible": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isHouseSeat": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "SeatZoneDto": {
        "required": [
          "id",
          "seatMapId",
          "name",
          "color",
          "mode",
          "paxTierId",
          "priceModifier"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "seatMapId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "mode": {
            "$ref": "#/components/schemas/SeatingMode"
          },
          "paxTierId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "priceModifier": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "SeatZoneRequest": {
        "required": [
          "name",
          "color",
          "mode",
          "paxTierId",
          "priceModifier"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "color": {
            "type": [
              "null",
              "string"
            ]
          },
          "mode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SeatingMode"
              }
            ]
          },
          "paxTierId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "priceModifier": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "SeedDefaultsRequest": {
        "required": [
          "pageType"
        ],
        "type": "object",
        "properties": {
          "pageType": {
            "type": "string"
          }
        }
      },
      "SelectShippingOptionRequest": {
        "required": [
          "shippingRateId"
        ],
        "type": "object",
        "properties": {
          "shippingRateId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "SelectTenantBody": {
        "required": [
          "selectionToken",
          "tenantSlug"
        ],
        "type": "object",
        "properties": {
          "selectionToken": {
            "type": "string"
          },
          "tenantSlug": {
            "type": "string"
          }
        }
      },
      "SendInviteResultDto": {
        "required": [
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SendMessageBody": {
        "required": [
          "message",
          "maxOutputTokens"
        ],
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "maxOutputTokens": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "SendQuoteLinkResponse": {
        "required": [
          "token",
          "expiresAt",
          "url"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "url": {
            "type": "string"
          }
        }
      },
      "SetAutoRenewRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "SetDefaultBody": {
        "required": [
          "supplierId"
        ],
        "type": "object",
        "properties": {
          "supplierId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "SetLotTrackingBody": {
        "required": [
          "mode"
        ],
        "type": "object",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/LotTrackingMode"
          }
        }
      },
      "SetModuleBody": {
        "required": [
          "enabled"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "SetOpenForClaimBody": {
        "type": "object",
        "properties": {
          "isOpenForClaim": {
            "type": "boolean"
          }
        }
      },
      "SetParentRequest": {
        "required": [
          "parentTenantId"
        ],
        "type": "object",
        "properties": {
          "parentTenantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "SetParentResponse": {
        "required": [
          "id",
          "parentTenantId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "parentTenantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "SetPriorityBody": {
        "required": [
          "priority"
        ],
        "type": "object",
        "properties": {
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int16"
          }
        }
      },
      "SetReorderThresholdsRequest": {
        "required": [
          "reorderPoint",
          "reorderQuantity"
        ],
        "type": "object",
        "properties": {
          "reorderPoint": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reorderQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "SetSubscriptionPlanBody": {
        "required": [
          "isSubscribable",
          "subscriptionPriceCents"
        ],
        "type": "object",
        "properties": {
          "isSubscribable": {
            "type": "boolean"
          },
          "subscriptionPriceCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          }
        }
      },
      "SettleSaleBody": {
        "required": [
          "cartId",
          "customerId",
          "tenders",
          "operatorPinHash",
          "managerEscalationPinHash"
        ],
        "type": "object",
        "properties": {
          "cartId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "tenders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenderInputBody"
            }
          },
          "operatorPinHash": {
            "type": [
              "null",
              "string"
            ]
          },
          "managerEscalationPinHash": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SetToolBody": {
        "required": [
          "scope",
          "allowed"
        ],
        "type": "object",
        "properties": {
          "scope": {
            "type": [
              "null",
              "string"
            ]
          },
          "allowed": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "SetupIntentBootstrapDto": {
        "required": [
          "clientSecret",
          "publishableKey",
          "connectedAccountId"
        ],
        "type": "object",
        "properties": {
          "clientSecret": {
            "type": "string"
          },
          "publishableKey": {
            "type": "string"
          },
          "connectedAccountId": {
            "type": "string"
          }
        }
      },
      "SharePostResponseDto": {
        "required": [
          "shareToken",
          "trackedUrl",
          "channel",
          "sharedAt"
        ],
        "type": "object",
        "properties": {
          "shareToken": {
            "type": "string",
            "format": "uuid"
          },
          "trackedUrl": {
            "type": "string"
          },
          "channel": {
            "type": "string"
          },
          "sharedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ShiftClaimDto": {
        "required": [
          "id",
          "shiftId",
          "crewMemberId",
          "status",
          "decidedByUserId",
          "decidedAt",
          "decisionNote",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "shiftId": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "decidedByUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "decidedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "decisionNote": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ShiftClaimStatus": {
        "type": "integer"
      },
      "ShiftStatus": {
        "type": "integer"
      },
      "ShiftSwapDto": {
        "required": [
          "id",
          "fromShiftId",
          "requestingCrewMemberId",
          "toCrewMemberId",
          "status",
          "decidedByUserId",
          "decidedAt",
          "decisionNote",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "fromShiftId": {
            "type": "string",
            "format": "uuid"
          },
          "requestingCrewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "toCrewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "decidedByUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "decidedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "decisionNote": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ShiftSwapStatus": {
        "type": "integer"
      },
      "ShiftTemplateDto": {
        "required": [
          "id",
          "name",
          "weekdays",
          "startTime",
          "durationMinutes",
          "defaultStatus",
          "productId",
          "slotId",
          "notes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "weekdays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startTime": {
            "type": "string",
            "format": "time"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "defaultStatus": {
            "$ref": "#/components/schemas/ShiftStatus"
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ShiftWarning": {
        "required": [
          "type",
          "message"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "ShippingOptionsRequest": {
        "required": [
          "billingAddress",
          "shippingAddress"
        ],
        "type": "object",
        "properties": {
          "billingAddress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PostalAddress"
              }
            ]
          },
          "shippingAddress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PostalAddress"
              }
            ]
          }
        }
      },
      "ShippingRate": {
        "required": [
          "zoneId",
          "name",
          "calculation",
          "tiersJson",
          "currency"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "zoneId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "calculation": {
            "$ref": "#/components/schemas/ShippingRateCalculation"
          },
          "tiersJson": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ShippingRateCalculation": {
        "type": "integer"
      },
      "ShippingZone": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "postalCodePrefixes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "rates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShippingRate"
            }
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SiteSettingsRequest": {
        "type": "object",
        "properties": {
          "homepagePageId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "clearHomepage": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "secondaryColor": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "typographyPreset": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "siteTemplate": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "faviconUrl": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "ogImageUrl": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "analyticsProvider": {
            "maxLength": 16,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "analyticsSiteId": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "customCss": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "customHeadHtml": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "customFooterHtml": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "footerCopyTranslations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "footerLinksJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "robotsTxtOverride": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "blogSubsystemEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "transactionalCmsEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "SlotAssignmentDto": {
        "required": [
          "id",
          "slotId",
          "crewMemberId",
          "crewMemberName",
          "role",
          "notes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberName": {
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/SlotAssignmentRole"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "autoCreatedShiftId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "SlotAssignmentRole": {
        "type": "integer"
      },
      "SlotDto": {
        "required": [
          "id",
          "productId",
          "ratePlanId",
          "startsAt",
          "durationMinutes",
          "totalCapacity",
          "remainingCapacity",
          "perTierCaps",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "remainingCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "perTierCaps": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "status": {
            "$ref": "#/components/schemas/SlotStatus"
          }
        }
      },
      "SlotKind": {
        "type": "integer",
        "default": 0
      },
      "SlotManifestDto": {
        "required": [
          "slotId",
          "startsAt",
          "durationMinutes",
          "totalCapacity",
          "remainingCapacity",
          "bookedPax",
          "productId",
          "productName",
          "productSlug",
          "minPaxToOperate",
          "reservations",
          "pickups"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "totalCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "remainingCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bookedPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "productName": {
            "type": "string"
          },
          "productSlug": {
            "type": "string"
          },
          "minPaxToOperate": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reservations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManifestReservationDto"
            }
          },
          "pickups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManifestPickupDto"
            }
          }
        }
      },
      "SlotSource": {
        "type": "integer"
      },
      "SlotStatus": {
        "type": "integer"
      },
      "SmsCampaignDeliveryDto": {
        "required": [
          "id",
          "customerId",
          "toPhoneE164",
          "status",
          "lastError",
          "sentAt",
          "attemptCount",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "toPhoneE164": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/SmsCampaignDeliveryStatus"
          },
          "lastError": {
            "type": [
              "null",
              "string"
            ]
          },
          "sentAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "attemptCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SmsCampaignDeliveryStatus": {
        "type": "integer"
      },
      "SmsCampaignDto": {
        "required": [
          "id",
          "name",
          "body",
          "audienceFilterJson",
          "status",
          "startedAt",
          "completedAt",
          "totalTargeted",
          "delivered",
          "failed",
          "suppressed",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "audienceFilterJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/SmsCampaignStatus"
          },
          "startedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "completedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "totalTargeted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "delivered": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "failed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "suppressed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SmsCampaignStatus": {
        "type": "integer"
      },
      "SmsMessageDto": {
        "required": [
          "id",
          "customerId",
          "bookingRef",
          "toPhoneE164",
          "body",
          "purpose",
          "status",
          "providerMessageSid",
          "providerError",
          "campaignId",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "bookingRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "toPhoneE164": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "purpose": {
            "$ref": "#/components/schemas/SmsPurpose"
          },
          "status": {
            "$ref": "#/components/schemas/SmsMessageStatus"
          },
          "providerMessageSid": {
            "type": [
              "null",
              "string"
            ]
          },
          "providerError": {
            "type": [
              "null",
              "string"
            ]
          },
          "campaignId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SmsMessagePage": {
        "required": [
          "items",
          "page",
          "pageSize",
          "total"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SmsMessageDto"
            }
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "SmsMessageStatus": {
        "type": "integer"
      },
      "SmsPurpose": {
        "type": "integer"
      },
      "SmsSuppressionDto": {
        "required": [
          "id",
          "phoneE164",
          "reason",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "phoneE164": {
            "type": "string"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SocialLoginBody": {
        "required": [
          "token",
          "tenantSlug",
          "tenantName"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "tenantSlug": {
            "type": "string"
          },
          "tenantName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SocialProvidersResponse": {
        "required": [
          "google",
          "apple",
          "facebook"
        ],
        "type": "object",
        "properties": {
          "google": {
            "type": "boolean"
          },
          "apple": {
            "type": "boolean"
          },
          "facebook": {
            "type": "boolean"
          }
        }
      },
      "SpendRequest": {
        "type": "object",
        "properties": {
          "amountCents": {
            "maximum": 9223372036854776000,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "location": {
            "maxLength": 64,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "note": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SquarePaymentBody": {
        "required": [
          "sourceId",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "sourceId": {
            "type": "string"
          },
          "idempotencyKey": {
            "type": "string"
          }
        }
      },
      "SsoLookupBody": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "StepUpBody": {
        "required": [
          "password"
        ],
        "type": "object",
        "properties": {
          "password": {
            "type": "string"
          }
        }
      },
      "StepUpResponse": {
        "required": [
          "token",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "StockLevel": {
        "required": [
          "variantId",
          "locationId"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "locationId": {
            "type": "string",
            "format": "uuid"
          },
          "onHand": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reserved": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          },
          "reorderPoint": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reorderQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "StockMovement": {
        "required": [
          "variantId",
          "locationId",
          "kind",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "locationId": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "$ref": "#/components/schemas/StockMovementKind"
          },
          "delta": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "onHandAfter": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "relatedOrderId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "relatedShipmentId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "operatorUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "lotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "idempotencyKey": {
            "type": "string"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "StockMovementKind": {
        "type": "integer"
      },
      "StockSerialStatus": {
        "type": "integer"
      },
      "StockTransfer": {
        "required": [
          "fromLocationId",
          "toLocationId"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "fromLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "toLocationId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/StockTransferStatus"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockTransferLine"
            }
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "StockTransferLine": {
        "required": [
          "transferId",
          "variantId"
        ],
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "transferId": {
            "type": "string",
            "format": "uuid"
          },
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "StockTransferStatus": {
        "type": "integer"
      },
      "StockVelocityRow": {
        "required": [
          "variantId",
          "sku",
          "outboundUnitsLast30d"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string"
          },
          "outboundUnitsLast30d": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "StockVelocityWidgetData": {
        "required": [
          "rows"
        ],
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockVelocityRow"
            }
          }
        }
      },
      "StorefrontOverviewResponse": {
        "required": [
          "from",
          "to",
          "granularity",
          "totals",
          "series"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date"
          },
          "granularity": {
            "type": "string"
          },
          "totals": {
            "$ref": "#/components/schemas/StorefrontTotalsDto"
          },
          "series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeBucketDto"
            }
          }
        }
      },
      "StorefrontTotalsDto": {
        "required": [
          "visitors",
          "pageViews",
          "checkoutStarts",
          "checkoutCompletions",
          "conversionRate"
        ],
        "type": "object",
        "properties": {
          "visitors": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageViews": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "checkoutStarts": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "checkoutCompletions": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "conversionRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "StripeOnboardingBody": {
        "required": [
          "returnUrl",
          "refreshUrl"
        ],
        "type": "object",
        "properties": {
          "returnUrl": {
            "type": "string"
          },
          "refreshUrl": {
            "type": "string"
          }
        }
      },
      "StripeOnboardingDto": {
        "required": [
          "accountRef",
          "onboardingUrl",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "accountRef": {
            "type": "string"
          },
          "onboardingUrl": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "StripeOnboardingLinkDto": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          }
        }
      },
      "StripeOnboardingRequest": {
        "required": [
          "returnUrl",
          "refreshUrl"
        ],
        "type": "object",
        "properties": {
          "returnUrl": {
            "type": "string"
          },
          "refreshUrl": {
            "type": "string"
          }
        }
      },
      "SubmitClaimBody": {
        "type": "object",
        "properties": {
          "shiftId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "SubmitCommentRequest": {
        "required": [
          "body",
          "parentCommentId",
          "guestName",
          "guestEmail",
          "recaptchaToken",
          "honeypot"
        ],
        "type": "object",
        "properties": {
          "body": {
            "type": [
              "null",
              "string"
            ]
          },
          "parentCommentId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "guestName": {
            "type": [
              "null",
              "string"
            ]
          },
          "guestEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "recaptchaToken": {
            "type": [
              "null",
              "string"
            ]
          },
          "honeypot": {
            "type": [
              "null",
              "string"
            ]
          },
          "session": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SubmitRequest": {
        "required": [
          "targetEntityType",
          "targetEntityId",
          "operation",
          "proposed",
          "notes"
        ],
        "type": "object",
        "properties": {
          "targetEntityType": {
            "type": "string"
          },
          "targetEntityId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "operation": {
            "$ref": "#/components/schemas/PriceChangeOperation"
          },
          "proposed": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SubmitReviewBody": {
        "required": [
          "bookingRef",
          "email",
          "body"
        ],
        "type": "object",
        "properties": {
          "bookingRef": {
            "maxLength": 16,
            "minLength": 0,
            "type": "string"
          },
          "email": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "rating": {
            "maximum": 5,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "body": {
            "maxLength": 4000,
            "minLength": 10,
            "type": "string"
          },
          "displayName": {
            "maxLength": 120,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "variantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "SubmitSwapBody": {
        "type": "object",
        "properties": {
          "fromShiftId": {
            "type": "string",
            "format": "uuid"
          },
          "toCrewMemberId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "SubmitTimeOffBody": {
        "type": "object",
        "properties": {
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "kind": {
            "$ref": "#/components/schemas/CrewTimeOffKind"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SubproductLiteDto": {
        "required": [
          "id",
          "name",
          "slug",
          "type",
          "state"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/ProductType"
          },
          "state": {
            "$ref": "#/components/schemas/ProductState"
          }
        }
      },
      "SubscriptionInterval": {
        "type": "integer"
      },
      "SubscriptionStatus": {
        "type": "integer"
      },
      "SubtreeDto": {
        "required": [
          "id",
          "name",
          "slug",
          "parentTenantId",
          "children"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "parentTenantId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubtreeDto"
            }
          }
        }
      },
      "SuggestFromLowStockBody": {
        "required": [
          "emissionIds"
        ],
        "type": "object",
        "properties": {
          "emissionIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "SupplierAddressDto": {
        "required": [
          "line1",
          "line2",
          "city",
          "region",
          "postalCode",
          "countryIso2"
        ],
        "type": "object",
        "properties": {
          "line1": {
            "type": [
              "null",
              "string"
            ]
          },
          "line2": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": [
              "null",
              "string"
            ]
          },
          "region": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "countryIso2": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SwitchWorkspaceBody": {
        "required": [
          "tenantSlug"
        ],
        "type": "object",
        "properties": {
          "tenantSlug": {
            "type": "string"
          }
        }
      },
      "SyncStatus": {
        "type": "integer"
      },
      "TagRequest": {
        "required": [
          "slug",
          "name",
          "imageMediaId"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageMediaId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "TaxBreakdown": {
        "required": [
          "net",
          "tax",
          "gross",
          "components"
        ],
        "type": "object",
        "properties": {
          "net": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "tax": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "gross": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxComponentLine"
            }
          }
        }
      },
      "TaxClass": {
        "type": "integer"
      },
      "TaxComponentDto": {
        "required": [
          "id",
          "name",
          "ratePercent",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "ratePercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TaxComponentLine": {
        "required": [
          "name",
          "ratePercent",
          "amount"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "ratePercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "TaxComponentRequest": {
        "required": [
          "name",
          "ratePercent"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "ratePercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "TaxJurisdictionDto": {
        "required": [
          "id",
          "name",
          "country",
          "region",
          "postalCodePrefix",
          "taxRuleId",
          "priority",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "region": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCodePrefix": {
            "type": [
              "null",
              "string"
            ]
          },
          "taxRuleId": {
            "type": "string",
            "format": "uuid"
          },
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "TaxJurisdictionRequest": {
        "required": [
          "name",
          "country",
          "region",
          "postalCodePrefix",
          "taxRuleId",
          "priority",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ]
          },
          "region": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCodePrefix": {
            "type": [
              "null",
              "string"
            ]
          },
          "taxRuleId": {
            "type": "string",
            "format": "uuid"
          },
          "priority": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "TaxRuleDto": {
        "required": [
          "id",
          "name",
          "description",
          "isInclusive",
          "jurisdictionTag",
          "isActive",
          "components"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isInclusive": {
            "type": "boolean"
          },
          "jurisdictionTag": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": "boolean"
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxComponentDto"
            }
          }
        }
      },
      "TaxRuleRequest": {
        "required": [
          "name",
          "description",
          "isInclusive",
          "jurisdictionTag",
          "isActive",
          "components"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isInclusive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "jurisdictionTag": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "components": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxComponentRequest"
            }
          }
        }
      },
      "TenantApiKeyDto": {
        "required": [
          "id",
          "name",
          "keyPrefix",
          "userId",
          "userEmail",
          "userDisplayName",
          "createdById",
          "isActive",
          "expiresAt",
          "lastUsedAt",
          "createdAt",
          "revokedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "keyPrefix": {
            "type": "string"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "userEmail": {
            "type": "string"
          },
          "userDisplayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdById": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "isActive": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "lastUsedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "revokedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "TenantBrandingDto": {
        "required": [
          "brandName",
          "logoLightUrl",
          "logoDarkUrl",
          "faviconUrl",
          "primaryColorHex",
          "accentColorHex",
          "footerHtml",
          "customCss",
          "hidePoweredBy",
          "supportEmail",
          "whitelabelEnabled"
        ],
        "type": "object",
        "properties": {
          "brandName": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoLightUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoDarkUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "faviconUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "primaryColorHex": {
            "type": [
              "null",
              "string"
            ]
          },
          "accentColorHex": {
            "type": [
              "null",
              "string"
            ]
          },
          "footerHtml": {
            "type": [
              "null",
              "string"
            ]
          },
          "customCss": {
            "type": [
              "null",
              "string"
            ]
          },
          "hidePoweredBy": {
            "type": "boolean"
          },
          "supportEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "whitelabelEnabled": {
            "type": "boolean"
          }
        }
      },
      "TenantBrandingRequest": {
        "required": [
          "brandName",
          "logoLightUrl",
          "logoDarkUrl",
          "faviconUrl",
          "primaryColorHex",
          "accentColorHex",
          "footerHtml",
          "customCss",
          "hidePoweredBy",
          "supportEmail"
        ],
        "type": "object",
        "properties": {
          "brandName": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoLightUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoDarkUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "faviconUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "primaryColorHex": {
            "type": [
              "null",
              "string"
            ]
          },
          "accentColorHex": {
            "type": [
              "null",
              "string"
            ]
          },
          "footerHtml": {
            "type": [
              "null",
              "string"
            ]
          },
          "customCss": {
            "type": [
              "null",
              "string"
            ]
          },
          "hidePoweredBy": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "supportEmail": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TenantCertificationDto": {
        "required": [
          "id",
          "crewMemberId",
          "crewMemberName",
          "name",
          "issuingAuthority",
          "issuedAt",
          "expiresAt",
          "hasDocument",
          "notes",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberName": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "issuingAuthority": {
            "type": [
              "null",
              "string"
            ]
          },
          "issuedAt": {
            "type": "string",
            "format": "date"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "hasDocument": {
            "type": "boolean"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TenantCrewTimeOffRequestDto": {
        "required": [
          "id",
          "crewMemberId",
          "crewMemberName",
          "startsAt",
          "endsAt",
          "kind",
          "status",
          "reason",
          "decidedByUserId",
          "decidedAt",
          "decisionNote",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberId": {
            "type": "string",
            "format": "uuid"
          },
          "crewMemberName": {
            "type": "string"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "kind": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "decidedByUserId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "decidedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "decisionNote": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TenantEmailAccountDto": {
        "required": [
          "id",
          "provider",
          "fromAddress",
          "fromName",
          "replyTo",
          "smtpHost",
          "smtpPort",
          "smtpUsername",
          "hasApiKey",
          "hasSmtpPassword",
          "isVerified",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "provider": {
            "$ref": "#/components/schemas/EmailProviderKind"
          },
          "fromAddress": {
            "type": "string"
          },
          "fromName": {
            "type": [
              "null",
              "string"
            ]
          },
          "replyTo": {
            "type": [
              "null",
              "string"
            ]
          },
          "smtpHost": {
            "type": [
              "null",
              "string"
            ]
          },
          "smtpPort": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "smtpUsername": {
            "type": [
              "null",
              "string"
            ]
          },
          "hasApiKey": {
            "type": "boolean"
          },
          "hasSmtpPassword": {
            "type": "boolean"
          },
          "isVerified": {
            "type": "boolean"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TenantOptionDto": {
        "required": [
          "slug",
          "name"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "TenantPricingPolicyDto": {
        "required": [
          "id",
          "maxStackedDiscountPercent",
          "prohibitPromoWithDiscountModifiers",
          "isActive",
          "version"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "maxStackedDiscountPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "prohibitPromoWithDiscountModifiers": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          }
        }
      },
      "TenantPricingPolicyRequest": {
        "required": [
          "maxStackedDiscountPercent",
          "prohibitPromoWithDiscountModifiers",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "maxStackedDiscountPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "prohibitPromoWithDiscountModifiers": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "TenantSelectionDto": {
        "required": [
          "selectionToken",
          "tenants"
        ],
        "type": "object",
        "properties": {
          "selectionToken": {
            "type": "string"
          },
          "tenants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenantOptionDto"
            }
          }
        }
      },
      "TenantSettingsUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultLocale": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultCurrency": {
            "type": [
              "null",
              "string"
            ]
          },
          "brandPrimaryColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "brandLogoUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "supportEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "crewReminderSmsEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "settlementCurrency": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TenantSmsAccountDto": {
        "required": [
          "id",
          "accountSid",
          "fromNumber",
          "statusCallbackUrl",
          "isVerified",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "accountSid": {
            "type": "string"
          },
          "fromNumber": {
            "type": "string"
          },
          "statusCallbackUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "isVerified": {
            "type": "boolean"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TenantSsoConfigUpsert": {
        "required": [
          "idpEntityId",
          "idpSsoUrl",
          "idpSloUrl",
          "idpX509Certificate",
          "spEntityId",
          "attributeMap",
          "jitProvisioningEnabled",
          "defaultRoleName"
        ],
        "type": "object",
        "properties": {
          "idpEntityId": {
            "type": "string"
          },
          "idpSsoUrl": {
            "type": "string"
          },
          "idpSloUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "idpX509Certificate": {
            "type": "string"
          },
          "spEntityId": {
            "type": [
              "null",
              "string"
            ]
          },
          "attributeMap": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "jitProvisioningEnabled": {
            "type": "boolean"
          },
          "defaultRoleName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TenantStatus": {
        "type": "integer"
      },
      "TenantTipPolicyDto": {
        "required": [
          "id",
          "isEnabled",
          "suggestedPercents",
          "defaultPercent",
          "allowCustomAmount",
          "isActive",
          "version"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "isEnabled": {
            "type": "boolean"
          },
          "suggestedPercents": {
            "type": "array",
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          },
          "defaultPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "allowCustomAmount": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint32"
          }
        }
      },
      "TenantTipPolicyRequest": {
        "required": [
          "isEnabled",
          "suggestedPercents",
          "defaultPercent",
          "allowCustomAmount",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "suggestedPercents": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          },
          "defaultPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "allowCustomAmount": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "TenantUpdateRequest": {
        "required": [
          "status",
          "giftCardsEnabled",
          "crewReminderSmsEnabled",
          "whitelabelEnabled"
        ],
        "type": "object",
        "properties": {
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TenantStatus"
              }
            ]
          },
          "giftCardsEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "crewReminderSmsEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "whitelabelEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "TenderInputBody": {
        "required": [
          "mode",
          "amountMinor",
          "stripePaymentIntentId",
          "giftCardCode",
          "compReason"
        ],
        "type": "object",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/PosTenderKind"
          },
          "amountMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "stripePaymentIntentId": {
            "type": [
              "null",
              "string"
            ]
          },
          "giftCardCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "compReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "loyaltyPointsUsed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          }
        }
      },
      "TerminalConfigResponse": {
        "required": [
          "terminalLocationId",
          "defaultReaderId",
          "accountStatus"
        ],
        "type": "object",
        "properties": {
          "terminalLocationId": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultReaderId": {
            "type": [
              "null",
              "string"
            ]
          },
          "accountStatus": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TerminalPaymentIntentResponse": {
        "required": [
          "paymentIntentId",
          "clientSecret"
        ],
        "type": "object",
        "properties": {
          "paymentIntentId": {
            "type": "string"
          },
          "clientSecret": {
            "type": "string"
          }
        }
      },
      "TerminalPublicConfigResponse": {
        "required": [
          "publishableKey",
          "accountId",
          "terminalLocationId",
          "defaultReaderId"
        ],
        "type": "object",
        "properties": {
          "publishableKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "accountId": {
            "type": [
              "null",
              "string"
            ]
          },
          "terminalLocationId": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultReaderId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TerminalReaderActionResult": {
        "required": [
          "readerId",
          "actionStatus",
          "actionType",
          "failureCode",
          "failureMessage"
        ],
        "type": "object",
        "properties": {
          "readerId": {
            "type": "string"
          },
          "actionStatus": {
            "type": [
              "null",
              "string"
            ]
          },
          "actionType": {
            "type": [
              "null",
              "string"
            ]
          },
          "failureCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "failureMessage": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TerminalReaderInfo": {
        "required": [
          "id",
          "label",
          "deviceType",
          "serialNumber",
          "status",
          "locationId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "deviceType": {
            "type": [
              "null",
              "string"
            ]
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "type": [
              "null",
              "string"
            ]
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TestEmailBody": {
        "required": [
          "to"
        ],
        "type": "object",
        "properties": {
          "to": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "TestEmailResultDto": {
        "required": [
          "accepted",
          "provider",
          "providerMessageId",
          "error"
        ],
        "type": "object",
        "properties": {
          "accepted": {
            "type": "boolean"
          },
          "provider": {
            "type": [
              "null",
              "string"
            ]
          },
          "providerMessageId": {
            "type": [
              "null",
              "string"
            ]
          },
          "error": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TestSmsBody": {
        "required": [
          "to"
        ],
        "type": "object",
        "properties": {
          "to": {
            "maxLength": 32,
            "minLength": 8,
            "type": "string"
          }
        }
      },
      "TestSmsResultDto": {
        "required": [
          "accepted",
          "providerSid",
          "error"
        ],
        "type": "object",
        "properties": {
          "accepted": {
            "type": "boolean"
          },
          "providerSid": {
            "type": [
              "null",
              "string"
            ]
          },
          "error": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ThemeDetailDto": {
        "required": [
          "id",
          "name",
          "slug",
          "description",
          "draftRevision",
          "publishedRevision",
          "isActive",
          "files"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "draftRevision": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "publishedRevision": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ThemeFileDto"
            }
          }
        }
      },
      "ThemeFileDto": {
        "required": [
          "path",
          "kind",
          "content",
          "byteLength",
          "hash"
        ],
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "content": {
            "type": [
              "null",
              "string"
            ]
          },
          "byteLength": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hash": {
            "type": "string"
          }
        }
      },
      "ThemeVersionDto": {
        "required": [
          "id",
          "revision",
          "publishedAt",
          "publishedByUserName",
          "notes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time"
          },
          "publishedByUserName": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TimeBucketDto": {
        "required": [
          "bucketStart",
          "visitors",
          "pageViews",
          "checkoutStarts",
          "checkoutCompletions"
        ],
        "type": "object",
        "properties": {
          "bucketStart": {
            "type": "string",
            "format": "date-time"
          },
          "visitors": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageViews": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "checkoutStarts": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "checkoutCompletions": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TimeSeriesPointDto": {
        "required": [
          "date",
          "clicks",
          "conversions",
          "earnings"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "clicks": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "conversions": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "earnings": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "TodayStatsDto": {
        "required": [
          "bookings",
          "pax",
          "admitted",
          "pendingHolds",
          "utilizationPercent"
        ],
        "type": "object",
        "properties": {
          "bookings": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "admitted": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pendingHolds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "utilizationPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TokenDto": {
        "required": [
          "id",
          "name",
          "tokenPrefix",
          "permissions",
          "isActive",
          "expiresAt",
          "lastUsedAt",
          "createdAt",
          "revokedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "tokenPrefix": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "lastUsedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "revokedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "ToolStateDto": {
        "required": [
          "name",
          "scope",
          "domain",
          "description",
          "requiredPermission",
          "isDestructive",
          "defaultEnabled",
          "tenantOverride",
          "userOverride",
          "effective"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "requiredPermission": {
            "type": [
              "null",
              "string"
            ]
          },
          "isDestructive": {
            "type": "boolean"
          },
          "defaultEnabled": {
            "type": "boolean"
          },
          "tenantOverride": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "userOverride": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "effective": {
            "type": "boolean"
          }
        }
      },
      "TopProductDto": {
        "required": [
          "name",
          "bookings",
          "revenue"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "bookings": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "revenue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "TransferAvailabilityItem": {
        "required": [
          "slotId",
          "departsAt",
          "seatsRemaining",
          "capacity",
          "transferRouteId",
          "vehicleClassId"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "departsAt": {
            "type": "string",
            "format": "date-time"
          },
          "seatsRemaining": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "capacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "transferRouteId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "vehicleClassId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "TransferHoldBody": {
        "required": [
          "outboundSlotId",
          "returnSlotId",
          "paxBreakdown",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "outboundSlotId": {
            "type": "string",
            "format": "uuid"
          },
          "returnSlotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TransferHoldResponse": {
        "required": [
          "outboundHoldId",
          "returnHoldId",
          "bookingLinkGroupId"
        ],
        "type": "object",
        "properties": {
          "outboundHoldId": {
            "type": "string",
            "format": "uuid"
          },
          "returnHoldId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "bookingLinkGroupId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "TransferLineRequest": {
        "required": [
          "variantId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TransferManifestPassenger": {
        "required": [
          "reservationId",
          "customerName",
          "paxBreakdown"
        ],
        "type": "object",
        "properties": {
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "TransferManifestResponse": {
        "required": [
          "slotId",
          "departsAt",
          "transferRouteId",
          "vehicleClassId",
          "stops",
          "passengers"
        ],
        "type": "object",
        "properties": {
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "departsAt": {
            "type": "string",
            "format": "date-time"
          },
          "transferRouteId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "vehicleClassId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "stops": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransferManifestStop"
            }
          },
          "passengers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransferManifestPassenger"
            }
          }
        }
      },
      "TransferManifestStop": {
        "required": [
          "label",
          "sortOrder",
          "pickupAt"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pickupAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TransferRouteDto": {
        "required": [
          "id",
          "productId",
          "name",
          "originCode",
          "destinationCode",
          "originLabel",
          "destinationLabel",
          "estimatedDurationMinutes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "originCode": {
            "type": "string"
          },
          "destinationCode": {
            "type": "string"
          },
          "originLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "destinationLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "estimatedDurationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TransferRouteRequest": {
        "required": [
          "name",
          "originCode",
          "destinationCode",
          "originLabel",
          "destinationLabel",
          "estimatedDurationMinutes"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "originCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "destinationCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "originLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "destinationLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "estimatedDurationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TransferStopDto": {
        "required": [
          "id",
          "transferRouteId",
          "label",
          "sortOrder",
          "minutesFromOrigin",
          "pickupWindowMinutesBefore"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "transferRouteId": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": "string"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "minutesFromOrigin": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pickupWindowMinutesBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TransferStopRequest": {
        "required": [
          "label",
          "sortOrder",
          "minutesFromOrigin",
          "pickupWindowMinutesBefore"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "null",
              "string"
            ]
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "minutesFromOrigin": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pickupWindowMinutesBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "TransitionRequest": {
        "required": [
          "to",
          "reason"
        ],
        "type": "object",
        "properties": {
          "to": {
            "$ref": "#/components/schemas/ProductState"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "TrendPointDto": {
        "required": [
          "date",
          "label",
          "revenue",
          "bookings"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "revenue": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "bookings": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "UpdateAffiliateProfileRequest": {
        "required": [
          "displayName",
          "website"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string"
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateAgentSettingsBody": {
        "required": [
          "enabled",
          "customerPortalEnabled",
          "provider",
          "model",
          "apiKey",
          "systemPromptOverride",
          "maxTokensPerDay",
          "maxConcurrentSessions"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "customerPortalEnabled": {
            "type": "boolean"
          },
          "provider": {
            "type": [
              "null",
              "string"
            ]
          },
          "model": {
            "type": [
              "null",
              "string"
            ]
          },
          "apiKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "systemPromptOverride": {
            "type": [
              "null",
              "string"
            ]
          },
          "maxTokensPerDay": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "maxConcurrentSessions": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "UpdateBlogPostRequest": {
        "type": "object",
        "properties": {
          "slug": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "bodyHtml": {
            "type": [
              "null",
              "string"
            ]
          },
          "excerpt": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "featuredImageMediaId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "categoryId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "publishedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "blocksJsonOverride": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "tagIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "seoTitle": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "seoDescription": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "seoOgImageUrl": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "seoCanonicalUrl": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "seoRobots": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "commentsEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "UpdateBlogRequest": {
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "heroImageMediaId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "commentAuthMode": {
            "type": [
              "null",
              "string"
            ]
          },
          "commentModeration": {
            "type": [
              "null",
              "string"
            ]
          },
          "commentSpamProtection": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateCmsBlockDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "propsJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "translationsJson": {
            "$ref": "#/components/schemas/JsonElement"
          }
        }
      },
      "UpdateCmsPageDto": {
        "type": "object",
        "properties": {
          "slug": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "template": {
            "maxLength": 32,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "blocksJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "parentPageId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "clearParent": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "seoTitle": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "seoDescription": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "seoOgImageUrl": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "seoCanonicalUrl": {
            "$ref": "#/components/schemas/JsonElement"
          },
          "seoRobots": {
            "$ref": "#/components/schemas/JsonElement"
          }
        }
      },
      "UpdateCustomerAddressBody": {
        "required": [
          "label",
          "address",
          "isDefaultBilling",
          "isDefaultShipping"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "$ref": "#/components/schemas/PostalAddress"
          },
          "isDefaultBilling": {
            "type": "boolean"
          },
          "isDefaultShipping": {
            "type": "boolean"
          }
        }
      },
      "UpdateFulfillmentStatusRequest": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/OrderShipmentStatus"
          }
        }
      },
      "UpdateInventoryLocationRequest": {
        "required": [
          "name",
          "address",
          "isFulfillable",
          "isPickup",
          "ranking",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/PostalAddress"
          },
          "isFulfillable": {
            "type": "boolean"
          },
          "isPickup": {
            "type": "boolean"
          },
          "ranking": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "UpdateItineraryStopRequest": {
        "required": [
          "durationMinutes",
          "translations"
        ],
        "type": "object",
        "properties": {
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "UpdateLineQuantityRequest": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "UpdateMediaRequest": {
        "required": [
          "isPrimary",
          "translations"
        ],
        "type": "object",
        "properties": {
          "isPrimary": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "UpdateMemberRequest": {
        "required": [
          "isOwner"
        ],
        "type": "object",
        "properties": {
          "isOwner": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "UpdatePlacementDto": {
        "type": "object",
        "properties": {
          "order": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "enabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "scopeKind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CmsBlockPlacementScope"
              }
            ]
          },
          "scopeRef": {
            "$ref": "#/components/schemas/JsonElement"
          }
        }
      },
      "UpdatePortalShippingAddressBody": {
        "required": [
          "shippingAddressJson"
        ],
        "type": "object",
        "properties": {
          "shippingAddressJson": {
            "type": "string"
          }
        }
      },
      "UpdatePosCartLineQtyRequest": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "UpdatePosStationRequest": {
        "required": [
          "name",
          "defaultCurrency",
          "openingFloatMinor",
          "notes",
          "terminalReaderId",
          "defaultPrinterIdentifier",
          "defaultPrinterLabel",
          "cashDrawerEnabled",
          "receiptHeaderLines",
          "receiptFooterLines",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "defaultCurrency": {
            "type": "string"
          },
          "openingFloatMinor": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "terminalReaderId": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultPrinterIdentifier": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultPrinterLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "cashDrawerEnabled": {
            "type": "boolean"
          },
          "receiptHeaderLines": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "receiptFooterLines": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "UpdateProductRequest": {
        "required": [
          "name",
          "slug",
          "description",
          "type",
          "defaultLocale",
          "currency",
          "publishAtScheduled"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "slug": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ProductType"
              }
            ]
          },
          "defaultLocale": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "publishAtScheduled": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "translations": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "minPaxToOperate": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "operateDecisionDeadlineHoursBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "leadTimeMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "buildTimeMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "timezoneIanaName": {
            "type": [
              "null",
              "string"
            ]
          },
          "scheduleProfile": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ScheduleProfile"
              }
            ]
          },
          "clearScheduleProfile": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "parentProductId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "clearParentProductId": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "waiverTemplateId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "clearWaiverTemplateId": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "waiverPolicy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WaiverSignaturePolicy"
              }
            ]
          },
          "categoryId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "clearCategoryId": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "tagIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "UpdateProductVariantRequest": {
        "required": [
          "sku",
          "barcode",
          "gtin",
          "weightGrams",
          "lengthMm",
          "widthMm",
          "heightMm",
          "priceOverrideCents",
          "compareAtPriceCents",
          "isTaxable",
          "requiresShipping",
          "allowOversell",
          "taxClass"
        ],
        "type": "object",
        "properties": {
          "sku": {
            "type": "string"
          },
          "barcode": {
            "type": [
              "null",
              "string"
            ]
          },
          "gtin": {
            "type": [
              "null",
              "string"
            ]
          },
          "weightGrams": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lengthMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "widthMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "heightMm": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "priceOverrideCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "compareAtPriceCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "isTaxable": {
            "type": "boolean"
          },
          "requiresShipping": {
            "type": "boolean"
          },
          "allowOversell": {
            "type": "boolean"
          },
          "taxClass": {
            "$ref": "#/components/schemas/TaxClass"
          }
        }
      },
      "UpdatePurchaseOrderLineRequest": {
        "required": [
          "quantity",
          "unitCostCents",
          "notes"
        ],
        "type": "object",
        "properties": {
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "unitCostCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdatePurchaseOrderRequest": {
        "required": [
          "expectedReceiveAt",
          "notes"
        ],
        "type": "object",
        "properties": {
          "expectedReceiveAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateRoleRequest": {
        "required": [
          "name",
          "description",
          "permissions"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdateShippingAddressBody": {
        "required": [
          "shippingAddressJson"
        ],
        "type": "object",
        "properties": {
          "shippingAddressJson": {
            "type": "string"
          }
        }
      },
      "UpdateShippingRateRequest": {
        "required": [
          "name",
          "calculation",
          "tiersJson",
          "currency",
          "isActive",
          "position"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "calculation": {
            "$ref": "#/components/schemas/ShippingRateCalculation"
          },
          "tiersJson": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "UpdateShippingZoneRequest": {
        "required": [
          "name",
          "countries",
          "regions",
          "postalCodePrefixes",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "postalCodePrefixes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "UpdateStockLotRequest": {
        "required": [
          "locationId",
          "manufacturedAt",
          "expiresAt",
          "notes"
        ],
        "type": "object",
        "properties": {
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "manufacturedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateStockSerialStatusRequest": {
        "required": [
          "status",
          "relatedOrderId"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/StockSerialStatus"
          },
          "relatedOrderId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "UpdateSupplierRequest": {
        "required": [
          "name",
          "contactEmail",
          "contactPhone",
          "address",
          "currency",
          "defaultLeadTimeDays",
          "paymentTerms",
          "notes",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "contactEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SupplierAddressDto"
              }
            ]
          },
          "currency": {
            "type": "string"
          },
          "defaultLeadTimeDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "paymentTerms": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "UpdateSupplierVariantRequest": {
        "required": [
          "supplierSku",
          "unitCostCents",
          "minimumOrderQuantity",
          "leadTimeDays",
          "notes"
        ],
        "type": "object",
        "properties": {
          "supplierSku": {
            "type": [
              "null",
              "string"
            ]
          },
          "unitCostCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "minimumOrderQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "leadTimeDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateTagRequest": {
        "required": [
          "name",
          "imageMediaId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageMediaId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonElement"
              }
            ]
          }
        }
      },
      "UpdateTerminalConfigBody": {
        "required": [
          "terminalLocationId",
          "defaultReaderId"
        ],
        "type": "object",
        "properties": {
          "terminalLocationId": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultReaderId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateThemeRequest": {
        "required": [
          "name",
          "description",
          "contentSecurityPolicy"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "contentSecurityPolicy": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateWebhookSubscriptionBody": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "url": {
            "maxLength": 2048,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "events": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "UpsertCampaignBody": {
        "required": [
          "name",
          "body"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "body": {
            "maxLength": 1200,
            "minLength": 1,
            "type": "string"
          },
          "audienceFilterJson": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpsertCarrierConfigRequest": {
        "required": [
          "provider",
          "apiKey",
          "webhookSecret",
          "markupKind",
          "markupValue",
          "isTestMode"
        ],
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/CarrierProvider"
          },
          "apiKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "webhookSecret": {
            "type": [
              "null",
              "string"
            ]
          },
          "markupKind": {
            "$ref": "#/components/schemas/CarrierMarkupKind"
          },
          "markupValue": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "isTestMode": {
            "type": "boolean"
          }
        }
      },
      "UpsertEmailAccountBody": {
        "required": [
          "fromAddress"
        ],
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/EmailProviderKind"
          },
          "fromAddress": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "fromName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "replyTo": {
            "maxLength": 254,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "apiKey": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "smtpHost": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "smtpPort": {
            "maximum": 65535,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "smtpUsername": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "smtpPassword": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpsertFraudPolicyRequest": {
        "required": [
          "autoHoldOnHighest",
          "autoFlagOnElevated",
          "minScoreForReview"
        ],
        "type": "object",
        "properties": {
          "autoHoldOnHighest": {
            "type": "boolean"
          },
          "autoFlagOnElevated": {
            "type": "boolean"
          },
          "minScoreForReview": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "UpsertFxRateBody": {
        "required": [
          "baseCurrency",
          "quoteCurrency"
        ],
        "type": "object",
        "properties": {
          "baseCurrency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "quoteCurrency": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "rate": {
            "maximum": 1000000000,
            "minimum": 0.00000001,
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "asOf": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "source": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpsertLoyaltyProgramRequest": {
        "required": [
          "name",
          "earnRate",
          "redemptionRate",
          "expiryMode",
          "expiryMonths",
          "tierThresholdMode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "earnRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "redemptionRate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "expiryMode": {
            "$ref": "#/components/schemas/LoyaltyExpiryMode"
          },
          "expiryMonths": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "tierThresholdMode": {
            "$ref": "#/components/schemas/LoyaltyTierThresholdMode"
          }
        }
      },
      "UpsertPurchasePolicyRequest": {
        "required": [
          "approvalRequirement",
          "approvalThresholdCents",
          "approvalThresholdCurrency",
          "defaultPaymentTerms"
        ],
        "type": "object",
        "properties": {
          "approvalRequirement": {
            "$ref": "#/components/schemas/ApprovalRequirement"
          },
          "approvalThresholdCents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "approvalThresholdCurrency": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultPaymentTerms": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpsertReturnPolicyBody": {
        "required": [
          "refundTiming",
          "labelPolicy",
          "labelPolicyByReason",
          "defaultRestockingFeeKind",
          "defaultRestockingFeeAmount",
          "restockingFeeByReason",
          "returnWindowDays",
          "requiresApproval"
        ],
        "type": "object",
        "properties": {
          "refundTiming": {
            "$ref": "#/components/schemas/RefundTimingMode"
          },
          "labelPolicy": {
            "$ref": "#/components/schemas/ReturnLabelPolicy"
          },
          "labelPolicyByReason": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "$ref": "#/components/schemas/ReturnLabelMode"
            }
          },
          "defaultRestockingFeeKind": {
            "$ref": "#/components/schemas/RestockingFeeKind"
          },
          "defaultRestockingFeeAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "restockingFeeByReason": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "$ref": "#/components/schemas/RestockingFeeOverrideDto"
            }
          },
          "returnWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "requiresApproval": {
            "type": "boolean"
          }
        },
        "description": "Wire shape for the PUT request body. Mirrors\nUpsertReturnPolicyRequest but uses concrete\nDictionary&lt;TKey, TValue&gt; types so MVC's JSON binder can\nhydrate it from the request body — interfaces are read-only and won't\nbind."
      },
      "UpsertShiftBody": {
        "type": "object",
        "properties": {
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/ShiftStatus"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "UpsertSmsAccountBody": {
        "required": [
          "accountSid",
          "fromNumber"
        ],
        "type": "object",
        "properties": {
          "accountSid": {
            "maxLength": 64,
            "minLength": 34,
            "type": "string"
          },
          "authToken": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "fromNumber": {
            "maxLength": 64,
            "minLength": 4,
            "type": "string"
          },
          "statusCallbackUrl": {
            "maxLength": 1024,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpsertTemplateBody": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "weekdays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startTime": {
            "type": "string",
            "format": "time"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "defaultStatus": {
            "$ref": "#/components/schemas/ShiftStatus"
          },
          "productId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "slotId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpsertTenantAnalyticsPolicyRequest": {
        "required": [
          "abcWindowDays",
          "abcAThresholdPercent",
          "abcBThresholdPercent",
          "forecastWindowDays",
          "forecastAlpha"
        ],
        "type": "object",
        "properties": {
          "abcWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "abcAThresholdPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "abcBThresholdPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "forecastWindowDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "forecastAlpha": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "UpsertTenantLotPolicyRequest": {
        "required": [
          "expiryWarningDays"
        ],
        "type": "object",
        "properties": {
          "expiryWarningDays": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "UpsertTierRequest": {
        "required": [
          "id",
          "name",
          "thresholdValue",
          "earnMultiplier",
          "benefits",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "thresholdValue": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "earnMultiplier": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "benefits": {
            "$ref": "#/components/schemas/LoyaltyTierBenefit"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "V1BookingBody": {
        "required": [
          "productId",
          "ratePlanId",
          "slotId",
          "date",
          "paxBreakdown",
          "customer",
          "payment"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "customer": {
            "$ref": "#/components/schemas/V1Customer"
          },
          "payment": {
            "$ref": "#/components/schemas/V1Payment"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "V1BookingDto": {
        "required": [
          "id",
          "bookingRef",
          "status",
          "totalAmount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "bookingRef": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "V1CancelBody": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "V1Customer": {
        "required": [
          "email",
          "name",
          "phone"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "V1ExternalPayment": {
        "required": [
          "amount",
          "currency",
          "reference"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "reference": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "V1Payment": {
        "type": "object",
        "properties": {
          "external": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/V1ExternalPayment"
              }
            ]
          },
          "stripe": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/V1StripePayment"
              }
            ]
          }
        }
      },
      "V1ProductDto": {
        "required": [
          "id",
          "slug",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "V1QuoteBody": {
        "required": [
          "productId",
          "ratePlanId",
          "date",
          "paxBreakdown"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "V1SlotDto": {
        "required": [
          "id",
          "productId",
          "ratePlanId",
          "startsAt",
          "durationMinutes",
          "remainingCapacity"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "remainingCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "V1StripePayment": {
        "required": [
          "paymentMethodId"
        ],
        "type": "object",
        "properties": {
          "paymentMethodId": {
            "type": "string"
          }
        }
      },
      "ValidateBody": {
        "required": [
          "code",
          "paxToScan"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "paxToScan": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ValidateRequest": {
        "required": [
          "cardId"
        ],
        "type": "object",
        "properties": {
          "cardId": {
            "maxLength": 128,
            "minLength": 4,
            "type": "string"
          }
        }
      },
      "VariantDto": {
        "required": [
          "id",
          "experimentId",
          "name",
          "amount",
          "weightBps",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "experimentId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "weightBps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "VariantRequest": {
        "required": [
          "name",
          "amount",
          "weightBps",
          "sortOrder"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "weightBps": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "VehicleClassDto": {
        "required": [
          "id",
          "tenantId",
          "name",
          "seatCapacity",
          "attributes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "tenantId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "seatCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "VehicleClassRequest": {
        "required": [
          "name",
          "seatCapacity",
          "attributes"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "seatCapacity": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "attributes": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "ViolationDto": {
        "required": [
          "id",
          "priceObservationId",
          "channelId",
          "productId",
          "ratePlanId",
          "paxTierId",
          "slotStartsAt",
          "ownSitePrice",
          "channelPrice",
          "currency",
          "deltaPercent",
          "detectedAt",
          "resolvedAt",
          "status",
          "notes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "priceObservationId": {
            "type": "string",
            "format": "uuid"
          },
          "channelId": {
            "type": "string",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxTierId": {
            "type": "string",
            "format": "uuid"
          },
          "slotStartsAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "ownSitePrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "channelPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "deltaPercent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "detectedAt": {
            "type": "string",
            "format": "date-time"
          },
          "resolvedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/ParityViolationStatus"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ViolationUpdateRequest": {
        "required": [
          "status",
          "notes"
        ],
        "type": "object",
        "properties": {
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ParityViolationStatus"
              }
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "VoidVoucherBody": {
        "type": "object",
        "properties": {
          "reason": {
            "maxLength": 500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "VoucherCheckoutBody": {
        "required": [
          "productId",
          "ratePlanId",
          "paxAllowance",
          "buyerEmail"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxAllowance": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "buyerEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": "string"
          },
          "buyerName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "recipientEmail": {
            "maxLength": 254,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "recipientName": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "message": {
            "maxLength": 2000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "VoucherCheckoutDto": {
        "required": [
          "voucherId",
          "voucherCode",
          "buyerCustomerId",
          "currency",
          "amount",
          "paymentRequired",
          "clientSecret",
          "publishableKey",
          "connectedAccountId"
        ],
        "type": "object",
        "properties": {
          "voucherId": {
            "type": "string",
            "format": "uuid"
          },
          "voucherCode": {
            "type": "string"
          },
          "buyerCustomerId": {
            "type": "string",
            "format": "uuid"
          },
          "currency": {
            "type": "string"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "paymentRequired": {
            "type": "boolean"
          },
          "clientSecret": {
            "type": [
              "null",
              "string"
            ]
          },
          "publishableKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "connectedAccountId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "VoucherDto": {
        "required": [
          "id",
          "code",
          "productId",
          "ratePlanId",
          "paxAllowance",
          "totalPax",
          "remainingPax",
          "status",
          "expiresAt",
          "notes",
          "createdAt",
          "redemptions"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string"
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paxAllowance": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "totalPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "remainingPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/VoucherStatus"
          },
          "expiresAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "redemptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VoucherRedemptionDto"
            }
          }
        }
      },
      "VoucherQuoteBody": {
        "required": [
          "productId",
          "ratePlanId",
          "paxAllowance"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "paxAllowance": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "VoucherQuoteDto": {
        "required": [
          "ratePlanId",
          "currency",
          "amount",
          "totalPax"
        ],
        "type": "object",
        "properties": {
          "ratePlanId": {
            "type": "string",
            "format": "uuid"
          },
          "currency": {
            "type": "string"
          },
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalPax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "VoucherRedeemBody": {
        "required": [
          "voucherCode",
          "slotId",
          "paxBreakdown",
          "idempotencyKey"
        ],
        "type": "object",
        "properties": {
          "voucherCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "paxBreakdown": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "VoucherRedeemResponse": {
        "required": [
          "holdId",
          "voucherRedemptionId",
          "voucherPaxRemaining"
        ],
        "type": "object",
        "properties": {
          "holdId": {
            "type": "string",
            "format": "uuid"
          },
          "voucherRedemptionId": {
            "type": "string",
            "format": "uuid"
          },
          "voucherPaxRemaining": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "VoucherRedemptionDto": {
        "required": [
          "id",
          "voucherId",
          "reservationId",
          "paxRedeemed",
          "redeemedAt",
          "notes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "voucherId": {
            "type": "string",
            "format": "uuid"
          },
          "reservationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paxRedeemed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "redeemedAt": {
            "type": "string",
            "format": "date-time"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "VoucherStatus": {
        "type": "integer"
      },
      "WaitlistEntryDto": {
        "required": [
          "id",
          "slotId",
          "position",
          "paxBreakdown",
          "status",
          "notifiedAt",
          "promotedHoldId",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slotId": {
            "type": "string",
            "format": "uuid"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "paxBreakdown": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "status": {
            "$ref": "#/components/schemas/WaitlistStatus"
          },
          "notifiedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "promotedHoldId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WaitlistStatus": {
        "type": "integer"
      },
      "WaiverSignatureDto": {
        "required": [
          "id",
          "reservationId",
          "waiverTemplateId",
          "waiverTemplateVersion",
          "templateName",
          "signerName",
          "signerEmail",
          "signerDateOfBirth",
          "guardianName",
          "guardianRelationship",
          "signedAt",
          "hasPdf",
          "pdfSha256",
          "acceptanceTokenExpiresAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "waiverTemplateId": {
            "type": "string",
            "format": "uuid"
          },
          "waiverTemplateVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "templateName": {
            "type": [
              "null",
              "string"
            ]
          },
          "signerName": {
            "type": "string"
          },
          "signerEmail": {
            "type": "string"
          },
          "signerDateOfBirth": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "guardianName": {
            "type": [
              "null",
              "string"
            ]
          },
          "guardianRelationship": {
            "type": [
              "null",
              "string"
            ]
          },
          "signedAt": {
            "type": "string",
            "format": "date-time"
          },
          "hasPdf": {
            "type": "boolean"
          },
          "pdfSha256": {
            "type": [
              "null",
              "string"
            ]
          },
          "acceptanceTokenExpiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WaiverSignaturePage": {
        "required": [
          "items",
          "skip",
          "take",
          "total"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WaiverSignatureDto"
            }
          },
          "skip": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "take": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "WaiverSignaturePolicy": {
        "type": "integer"
      },
      "WaiverTemplateDto": {
        "required": [
          "id",
          "name",
          "version",
          "bodyMarkdown",
          "requiresMinorGuardian",
          "isActive",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bodyMarkdown": {
            "type": "string"
          },
          "requiresMinorGuardian": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WebhookDeliveryDto": {
        "required": [
          "id",
          "eventId",
          "eventType",
          "status",
          "attemptCount",
          "lastAttemptAt",
          "lastStatusCode",
          "lastError",
          "nextAttemptAt",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "eventId": {
            "type": "string"
          },
          "eventType": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/WebhookDeliveryStatus"
          },
          "attemptCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lastAttemptAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "lastStatusCode": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "lastError": {
            "type": [
              "null",
              "string"
            ]
          },
          "nextAttemptAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WebhookDeliveryStatus": {
        "type": "integer"
      },
      "WebhookEventDto": {
        "required": [
          "id",
          "provider",
          "providerEventId",
          "eventType",
          "status",
          "receivedAt",
          "processedAt",
          "errorMessage"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "provider": {
            "type": "string"
          },
          "providerEventId": {
            "type": "string"
          },
          "eventType": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/WebhookEventStatus"
          },
          "receivedAt": {
            "type": "string",
            "format": "date-time"
          },
          "processedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "errorMessage": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "WebhookEventPage": {
        "required": [
          "items",
          "page",
          "pageSize",
          "total"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventDto"
            }
          },
          "page": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "WebhookEventStatus": {
        "type": "integer"
      },
      "WebhookSubscriptionCreatedDto": {
        "required": [
          "subscription",
          "secret"
        ],
        "type": "object",
        "properties": {
          "subscription": {
            "$ref": "#/components/schemas/WebhookSubscriptionDto"
          },
          "secret": {
            "type": "string"
          }
        }
      },
      "WebhookSubscriptionDto": {
        "required": [
          "id",
          "name",
          "url",
          "events",
          "isActive",
          "lastDeliveredAt",
          "consecutiveFailures",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "url": {
            "type": "string"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "lastDeliveredAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "consecutiveFailures": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WhatIfBody": {
        "required": [
          "reservationIds",
          "modifiers",
          "promoCode"
        ],
        "type": "object",
        "properties": {
          "reservationIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "modifiers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/WhatIfModifierBody"
            }
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "WhatIfModifierBody": {
        "required": [
          "kind",
          "percent"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/PricingModifierKind"
          },
          "percent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "applyOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "timeOfDayStart": {
            "type": [
              "null",
              "string"
            ]
          },
          "timeOfDayEnd": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "WhatIfReservationDiff": {
        "required": [
          "reservationId",
          "baselineGross",
          "whatIfGross",
          "delta",
          "currency"
        ],
        "type": "object",
        "properties": {
          "reservationId": {
            "type": "string",
            "format": "uuid"
          },
          "baselineGross": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "whatIfGross": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "delta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "WhatIfSummary": {
        "required": [
          "reservationsAnalyzed",
          "reservationsSkipped",
          "baselineTotal",
          "whatIfTotal",
          "absoluteDelta",
          "percentDelta",
          "currency",
          "perReservation"
        ],
        "type": "object",
        "properties": {
          "reservationsAnalyzed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reservationsSkipped": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "baselineTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "whatIfTotal": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "absoluteDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "percentDelta": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "perReservation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WhatIfReservationDiff"
            }
          }
        }
      },
      "WorkspaceDto": {
        "required": [
          "slug",
          "name",
          "isOwner"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "isOwner": {
            "type": "boolean"
          }
        }
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "description": "Paste a JWT obtained from /api/auth/login or /api/auth/social/{provider}.",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "affiliateApiKey": {
        "type": "apiKey",
        "description": "Paste a key issued from the affiliate portal (`/api/affiliate-portal/api-keys`). Format: `tsa_<32 url-safe-base64 chars>`.",
        "name": "X-Affiliate-Api-Key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "bearerAuth": [ ]
    }
  ],
  "tags": [
    {
      "name": "Accounting"
    },
    {
      "name": "AddOns"
    },
    {
      "name": "AdminAnalyticsEvents"
    },
    {
      "name": "AdminOrderFulfillments"
    },
    {
      "name": "AdminOrderRefunds"
    },
    {
      "name": "AdminOrders"
    },
    {
      "name": "AdminReturns"
    },
    {
      "name": "AffiliateApi",
      "description": "Public affiliate API (`/api/affiliate-api/v1/*`). Auth: `X-Affiliate-Api-Key` header. Read-scope endpoints (`products`, `availability`, `quotes`) and book-scope endpoints (`bookings`, `cancel`). Per-key rate limited; merchant `POST /bookings` is `[Idempotent]`."
    },
    {
      "name": "AffiliateAssets"
    },
    {
      "name": "AffiliateAttributionPostback"
    },
    {
      "name": "AffiliateAuth"
    },
    {
      "name": "AffiliateCustomDomains"
    },
    {
      "name": "AffiliatePortal",
      "description": "Affiliate self-service portal — profile, tracking links, clicks, attributions, earnings, payouts, API keys. Auth: AffiliateBearer JWT scheme."
    },
    {
      "name": "AffiliateProgramPublic"
    },
    {
      "name": "AffiliateStepUp"
    },
    {
      "name": "AffiliateTaxForms"
    },
    {
      "name": "AffiliateTracking"
    },
    {
      "name": "Affiliates",
      "description": "Operator admin: affiliate roster, tier templates, tenant-level program settings, commission ledger + payouts, 3rd-party-network postback config."
    },
    {
      "name": "Agent"
    },
    {
      "name": "AgentSettings"
    },
    {
      "name": "Agents"
    },
    {
      "name": "Altru"
    },
    {
      "name": "Analytics"
    },
    {
      "name": "AnalyticsPolicy"
    },
    {
      "name": "AuditLog"
    },
    {
      "name": "Auth",
      "description": "Sign-in, registration, refresh, social login, and session lifecycle."
    },
    {
      "name": "AuthSsoLookup"
    },
    {
      "name": "Availability"
    },
    {
      "name": "BadgeLogin"
    },
    {
      "name": "Bookings",
      "description": "Confirmed reservations across channels — admin operations on the booking lifecycle."
    },
    {
      "name": "Branding"
    },
    {
      "name": "Buyout"
    },
    {
      "name": "CalendarOverrides"
    },
    {
      "name": "CapacityAdmin"
    },
    {
      "name": "CarrierConfig"
    },
    {
      "name": "ChangelogRss"
    },
    {
      "name": "Channels",
      "description": "Distribution destinations: marketplaces, channel managers, OTAs, plus per-product listings."
    },
    {
      "name": "ClassSeriesBooking"
    },
    {
      "name": "ClassSeriesOperator"
    },
    {
      "name": "CmsBlockPlacements"
    },
    {
      "name": "CmsBlocks"
    },
    {
      "name": "CmsBlogAuthors"
    },
    {
      "name": "CmsBlogComments"
    },
    {
      "name": "CmsBlogPosts"
    },
    {
      "name": "CmsBlogTaxonomy"
    },
    {
      "name": "CmsBlogs"
    },
    {
      "name": "CmsDemoSeed"
    },
    {
      "name": "CmsLegalDocuments"
    },
    {
      "name": "CmsLinks"
    },
    {
      "name": "CmsMedia"
    },
    {
      "name": "CmsMenus"
    },
    {
      "name": "CmsPages"
    },
    {
      "name": "CmsRender"
    },
    {
      "name": "CmsSiteSettings"
    },
    {
      "name": "CmsTemplates"
    },
    {
      "name": "CmsThemeAsset"
    },
    {
      "name": "CmsThemePreview"
    },
    {
      "name": "CmsThemes"
    },
    {
      "name": "ConsentRecords"
    },
    {
      "name": "Contact"
    },
    {
      "name": "Crew"
    },
    {
      "name": "CrewAnalytics"
    },
    {
      "name": "CrewAvailability"
    },
    {
      "name": "CrewBulkImport"
    },
    {
      "name": "CrewCertifications"
    },
    {
      "name": "CrewPortal"
    },
    {
      "name": "CrewPunches"
    },
    {
      "name": "CrewShiftMarketplace"
    },
    {
      "name": "CrewShiftTemplates"
    },
    {
      "name": "CrewShifts"
    },
    {
      "name": "CrewTimeOff"
    },
    {
      "name": "CustomDomain"
    },
    {
      "name": "CustomerAgent"
    },
    {
      "name": "CustomerMemberships"
    },
    {
      "name": "CustomerPortal"
    },
    {
      "name": "CustomerSegments"
    },
    {
      "name": "Customers",
      "description": "Tenant-scoped customer contact records (deduplicated by email)."
    },
    {
      "name": "Dashboard"
    },
    {
      "name": "EasyPostWebhook"
    },
    {
      "name": "EmailMessages"
    },
    {
      "name": "EmailTemplates"
    },
    {
      "name": "Entry",
      "description": "Gate check-in: pass scanning, validation, and per-product policies."
    },
    {
      "name": "EntryPolicies"
    },
    {
      "name": "EntryStations"
    },
    {
      "name": "Exports"
    },
    {
      "name": "ExternalReferences"
    },
    {
      "name": "FeatureFlags"
    },
    {
      "name": "Fees"
    },
    {
      "name": "FraudPolicy"
    },
    {
      "name": "FraudReview"
    },
    {
      "name": "FxRates"
    },
    {
      "name": "GiftCardRedemption"
    },
    {
      "name": "GiftCards"
    },
    {
      "name": "GoogleThingsToDoFeed"
    },
    {
      "name": "GroupQuotes"
    },
    {
      "name": "Groups"
    },
    {
      "name": "Health"
    },
    {
      "name": "Holds"
    },
    {
      "name": "Imports"
    },
    {
      "name": "Inventory",
      "description": "Holds, reservations, slot expansion, the in-flight booking engine."
    },
    {
      "name": "InventoryLocations"
    },
    {
      "name": "Kiosk"
    },
    {
      "name": "LaborRules"
    },
    {
      "name": "LotPolicy"
    },
    {
      "name": "Lots"
    },
    {
      "name": "LoyaltyAccountsAdmin"
    },
    {
      "name": "LoyaltyMigration"
    },
    {
      "name": "LoyaltyPortal"
    },
    {
      "name": "LoyaltyProgram"
    },
    {
      "name": "Manifest"
    },
    {
      "name": "Mcp"
    },
    {
      "name": "McpApiTokens"
    },
    {
      "name": "McpDebug"
    },
    {
      "name": "Members",
      "description": "Workspace memberships, role assignments, owner toggle."
    },
    {
      "name": "Memberships"
    },
    {
      "name": "MerchandiseVariants"
    },
    {
      "name": "MerchandiseVariantsBySku"
    },
    {
      "name": "Modules"
    },
    {
      "name": "MyCrew"
    },
    {
      "name": "MyMarketplace"
    },
    {
      "name": "MyPunch"
    },
    {
      "name": "Newsletter"
    },
    {
      "name": "PackageBooking"
    },
    {
      "name": "PackageOperator"
    },
    {
      "name": "Parity"
    },
    {
      "name": "PaxTiers",
      "description": "Passenger categories (Adult / Child / Senior / …) used by every rate plan."
    },
    {
      "name": "PaymentAccounts"
    },
    {
      "name": "Payments"
    },
    {
      "name": "PayrollIntegrations"
    },
    {
      "name": "PayrollSync"
    },
    {
      "name": "PickupAssignments"
    },
    {
      "name": "PickupLocations",
      "description": "Reusable pickup points attached to products with per-product offsets and surcharges."
    },
    {
      "name": "PlatformSession"
    },
    {
      "name": "PlatformStats"
    },
    {
      "name": "PlatformTenants"
    },
    {
      "name": "PortalAddresses"
    },
    {
      "name": "PortalPrivacy"
    },
    {
      "name": "PortalReturns"
    },
    {
      "name": "Pos"
    },
    {
      "name": "PosCarts"
    },
    {
      "name": "PosCartsAdmin"
    },
    {
      "name": "PosReconciliation"
    },
    {
      "name": "PosReconciliations"
    },
    {
      "name": "PosReturns"
    },
    {
      "name": "PosSales"
    },
    {
      "name": "PosSessions"
    },
    {
      "name": "PosStations"
    },
    {
      "name": "PriceChangeRequests"
    },
    {
      "name": "PriceExperiments"
    },
    {
      "name": "PriceListsBulk"
    },
    {
      "name": "PriceListsExport"
    },
    {
      "name": "PricingApiTokens"
    },
    {
      "name": "PricingAudit"
    },
    {
      "name": "PricingPlaybooks"
    },
    {
      "name": "PricingRecommender"
    },
    {
      "name": "PricingReports"
    },
    {
      "name": "Privacy"
    },
    {
      "name": "ProductChannelListings"
    },
    {
      "name": "ProductCustomerQuestions"
    },
    {
      "name": "ProductFaq"
    },
    {
      "name": "ProductItinerary"
    },
    {
      "name": "ProductMedia"
    },
    {
      "name": "ProductResourceBindings"
    },
    {
      "name": "ProductSeo"
    },
    {
      "name": "ProductTaxonomy"
    },
    {
      "name": "Products",
      "description": "Catalog: products, rate plans, pricing, media, itinerary, FAQs, customer questions, SEO."
    },
    {
      "name": "PromoCodes",
      "description": "Percent or fixed-amount discount codes with validity windows and use caps."
    },
    {
      "name": "Public",
      "description": "Anonymous endpoints — marketing site, contact form, SEO surfaces, public product pages."
    },
    {
      "name": "PublicAccountCms"
    },
    {
      "name": "PublicAnalytics"
    },
    {
      "name": "PublicBooking"
    },
    {
      "name": "PublicBookingCms"
    },
    {
      "name": "PublicBuyout"
    },
    {
      "name": "PublicCart"
    },
    {
      "name": "PublicCartCms"
    },
    {
      "name": "PublicCheckoutCms"
    },
    {
      "name": "PublicCms"
    },
    {
      "name": "PublicCmsMedia"
    },
    {
      "name": "PublicCmsOgImage"
    },
    {
      "name": "PublicConsent"
    },
    {
      "name": "PublicFeatureFlags"
    },
    {
      "name": "PublicGiftCard"
    },
    {
      "name": "PublicGroups"
    },
    {
      "name": "PublicMemberships"
    },
    {
      "name": "PublicMerchConfirmationCms"
    },
    {
      "name": "PublicOrders"
    },
    {
      "name": "PublicPackages"
    },
    {
      "name": "PublicProductBooking"
    },
    {
      "name": "PublicProductCms"
    },
    {
      "name": "PublicProducts"
    },
    {
      "name": "PublicRental"
    },
    {
      "name": "PublicReviews"
    },
    {
      "name": "PublicSearchCms"
    },
    {
      "name": "PublicShopCms"
    },
    {
      "name": "PublicSubscriptions"
    },
    {
      "name": "PublicTransfer"
    },
    {
      "name": "PublicVoucher"
    },
    {
      "name": "PublicWaiver"
    },
    {
      "name": "PurchaseOrderPdf"
    },
    {
      "name": "PurchaseOrderReceipts"
    },
    {
      "name": "PurchaseOrders"
    },
    {
      "name": "PurchasePolicy"
    },
    {
      "name": "Quote"
    },
    {
      "name": "RatePlanDepositPolicy"
    },
    {
      "name": "RatePlans"
    },
    {
      "name": "RatePlansAggregate"
    },
    {
      "name": "Reciprocal"
    },
    {
      "name": "RefundReconciliation"
    },
    {
      "name": "RefundSchedules"
    },
    {
      "name": "RentalBooking"
    },
    {
      "name": "RentalUnitTypes"
    },
    {
      "name": "RentalUnits"
    },
    {
      "name": "Reports"
    },
    {
      "name": "Reservations"
    },
    {
      "name": "ResourcePools",
      "description": "Shared capacity (boats, guides, bicycles) consumed by multiple products."
    },
    {
      "name": "ReturnPolicy"
    },
    {
      "name": "Reviews"
    },
    {
      "name": "Roadmap"
    },
    {
      "name": "Roles",
      "description": "Permission bundles assigned to memberships."
    },
    {
      "name": "SamlSp"
    },
    {
      "name": "Schedule",
      "description": "Recurring schedule rules, calendar overrides, blackouts, computed slot preview."
    },
    {
      "name": "ScheduleCalendar"
    },
    {
      "name": "ScheduleMigration"
    },
    {
      "name": "SchedulePreview"
    },
    {
      "name": "ScheduleRules"
    },
    {
      "name": "SeatAvailability"
    },
    {
      "name": "SeatMaps"
    },
    {
      "name": "SeatZones"
    },
    {
      "name": "Seats"
    },
    {
      "name": "SeoRoot"
    },
    {
      "name": "Serials"
    },
    {
      "name": "ShippingZones"
    },
    {
      "name": "ShippoWebhook"
    },
    {
      "name": "SiteByHost"
    },
    {
      "name": "SlotAssignments"
    },
    {
      "name": "SmsCampaigns"
    },
    {
      "name": "SmsMessages"
    },
    {
      "name": "SocialProviders"
    },
    {
      "name": "SquareWebhook"
    },
    {
      "name": "StepUp"
    },
    {
      "name": "Stock"
    },
    {
      "name": "StripeWebhook"
    },
    {
      "name": "Subscriptions"
    },
    {
      "name": "SupplierVariants"
    },
    {
      "name": "Suppliers"
    },
    {
      "name": "Tax",
      "description": "Tax rules and components, with a quote-time preview endpoint."
    },
    {
      "name": "TaxJurisdictions"
    },
    {
      "name": "TaxRules"
    },
    {
      "name": "TenantApiKeys"
    },
    {
      "name": "TenantHierarchy"
    },
    {
      "name": "TenantPricingPolicy"
    },
    {
      "name": "TenantSettings"
    },
    {
      "name": "TenantSmsAccount"
    },
    {
      "name": "TenantSsoConfig"
    },
    {
      "name": "TenantTipPolicy"
    },
    {
      "name": "Terminal"
    },
    {
      "name": "TerminalConfig"
    },
    {
      "name": "TransferBooking"
    },
    {
      "name": "TransferRoutes"
    },
    {
      "name": "TransferStops"
    },
    {
      "name": "TwilioWebhook"
    },
    {
      "name": "VariantDefaultSupplier"
    },
    {
      "name": "VariantLotTracking"
    },
    {
      "name": "VehicleClasses"
    },
    {
      "name": "Versions"
    },
    {
      "name": "VoucherRedemption"
    },
    {
      "name": "Vouchers",
      "description": "Pre-paid entitlements customers redeem against bookings."
    },
    {
      "name": "VouchersAdmin"
    },
    {
      "name": "Waitlist"
    },
    {
      "name": "WaiverSignatures"
    },
    {
      "name": "WaiverTemplates"
    },
    {
      "name": "WebhookEvents"
    },
    {
      "name": "WebhookSubscriptions"
    },
    {
      "name": "WhatIf"
    },
    {
      "name": "WhoAmI"
    },
    {
      "name": "Workspaces"
    },
    {
      "name": "Wristbands"
    }
  ]
}